@mondaydotcomorg/atp-provenance 0.17.14
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 +417 -0
- package/dist/ast/instrumentor.d.ts +37 -0
- package/dist/ast/instrumentor.d.ts.map +1 -0
- package/dist/ast/instrumentor.js +299 -0
- package/dist/ast/instrumentor.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/policies/engine.d.ts +71 -0
- package/dist/policies/engine.d.ts.map +1 -0
- package/dist/policies/engine.js +433 -0
- package/dist/policies/engine.js.map +1 -0
- package/dist/registry.d.ts +94 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +445 -0
- package/dist/registry.js.map +1 -0
- package/dist/tokens.d.ts +49 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +239 -0
- package/dist/tokens.js.map +1 -0
- package/dist/types.d.ts +150 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +47 -0
- package/dist/types.js.map +1 -0
- package/package.json +51 -0
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
import * as acorn from 'acorn';
|
|
2
|
+
import * as walk from 'acorn-walk';
|
|
3
|
+
import * as escodegen from 'escodegen';
|
|
4
|
+
import { nanoid } from 'nanoid';
|
|
5
|
+
import { ProvenanceSource } from '../types.js';
|
|
6
|
+
import { getProvenance, getProvenanceForPrimitive, markPrimitiveTainted, } from '../registry.js';
|
|
7
|
+
export { getProvenance, getProvenanceForPrimitive };
|
|
8
|
+
/**
|
|
9
|
+
* Instrument code to track provenance at AST level
|
|
10
|
+
*/
|
|
11
|
+
export function instrumentCode(code) {
|
|
12
|
+
// Wrap code in async function for parsing (to allow await and return)
|
|
13
|
+
const wrappedCode = `(async function() {\n${code}\n})`;
|
|
14
|
+
const ast = acorn.parse(wrappedCode, {
|
|
15
|
+
ecmaVersion: 2022,
|
|
16
|
+
sourceType: 'script',
|
|
17
|
+
});
|
|
18
|
+
const context = {
|
|
19
|
+
nextId: 0,
|
|
20
|
+
trackingCalls: 0,
|
|
21
|
+
};
|
|
22
|
+
walk.simple(ast, {
|
|
23
|
+
BinaryExpression(node) {
|
|
24
|
+
wrapBinaryExpression(node, context);
|
|
25
|
+
},
|
|
26
|
+
AssignmentExpression(node) {
|
|
27
|
+
wrapAssignment(node, context);
|
|
28
|
+
},
|
|
29
|
+
CallExpression(node) {
|
|
30
|
+
if (node.callee.type === 'MemberExpression') {
|
|
31
|
+
wrapMethodCall(node, context);
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
TemplateLiteral(node) {
|
|
35
|
+
wrapTemplateLiteral(node, context);
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
let instrumentedCode = escodegen.generate(ast);
|
|
39
|
+
// escodegen adds a trailing semicolon to expression statements
|
|
40
|
+
// Remove it so the result is a pure function expression that executor can call with ()
|
|
41
|
+
if (instrumentedCode.endsWith(');')) {
|
|
42
|
+
instrumentedCode = instrumentedCode.slice(0, -1); // Remove trailing semicolon
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
code: instrumentedCode,
|
|
46
|
+
metadata: {
|
|
47
|
+
trackingCalls: context.trackingCalls,
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
function wrapBinaryExpression(node, context) {
|
|
52
|
+
context.trackingCalls++;
|
|
53
|
+
const originalNode = { ...node };
|
|
54
|
+
node.type = 'CallExpression';
|
|
55
|
+
node.callee = {
|
|
56
|
+
type: 'Identifier',
|
|
57
|
+
name: '__track_binary',
|
|
58
|
+
};
|
|
59
|
+
node.arguments = [
|
|
60
|
+
originalNode.left,
|
|
61
|
+
originalNode.right,
|
|
62
|
+
{
|
|
63
|
+
type: 'Literal',
|
|
64
|
+
value: originalNode.operator,
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
function wrapAssignment(node, context) {
|
|
69
|
+
context.trackingCalls++;
|
|
70
|
+
const originalRight = node.right;
|
|
71
|
+
node.right = {
|
|
72
|
+
type: 'CallExpression',
|
|
73
|
+
callee: {
|
|
74
|
+
type: 'Identifier',
|
|
75
|
+
name: '__track_assign',
|
|
76
|
+
},
|
|
77
|
+
arguments: [
|
|
78
|
+
{
|
|
79
|
+
type: 'Literal',
|
|
80
|
+
value: node.left.type === 'Identifier' ? node.left.name : 'unknown',
|
|
81
|
+
},
|
|
82
|
+
originalRight,
|
|
83
|
+
],
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function wrapMethodCall(node, context) {
|
|
87
|
+
const obj = node.callee.object;
|
|
88
|
+
const isAPICall = (obj.type === 'Identifier' && (obj.name === 'api' || obj.name === 'atp')) ||
|
|
89
|
+
(obj.type === 'MemberExpression' && isAPIObject(obj));
|
|
90
|
+
if (!isAPICall) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
context.trackingCalls++;
|
|
94
|
+
const originalNode = { ...node };
|
|
95
|
+
node.type = 'CallExpression';
|
|
96
|
+
node.callee = {
|
|
97
|
+
type: 'Identifier',
|
|
98
|
+
name: '__track_method',
|
|
99
|
+
};
|
|
100
|
+
node.arguments = [
|
|
101
|
+
originalNode.callee.object,
|
|
102
|
+
{
|
|
103
|
+
type: 'Literal',
|
|
104
|
+
value: originalNode.callee.property.name || originalNode.callee.property.value,
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
type: 'ArrayExpression',
|
|
108
|
+
elements: originalNode.arguments,
|
|
109
|
+
},
|
|
110
|
+
];
|
|
111
|
+
}
|
|
112
|
+
function isAPIObject(node) {
|
|
113
|
+
if (node.type === 'Identifier') {
|
|
114
|
+
return node.name === 'api' || node.name === 'atp';
|
|
115
|
+
}
|
|
116
|
+
if (node.type === 'MemberExpression') {
|
|
117
|
+
return isAPIObject(node.object);
|
|
118
|
+
}
|
|
119
|
+
return false;
|
|
120
|
+
}
|
|
121
|
+
function wrapTemplateLiteral(node, context) {
|
|
122
|
+
context.trackingCalls++;
|
|
123
|
+
const originalNode = { ...node };
|
|
124
|
+
node.type = 'CallExpression';
|
|
125
|
+
node.callee = {
|
|
126
|
+
type: 'Identifier',
|
|
127
|
+
name: '__track_template',
|
|
128
|
+
};
|
|
129
|
+
node.arguments = [
|
|
130
|
+
{
|
|
131
|
+
type: 'ArrayExpression',
|
|
132
|
+
elements: originalNode.expressions || [],
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
type: 'ArrayExpression',
|
|
136
|
+
elements: (originalNode.quasis || []).map((quasi) => ({
|
|
137
|
+
type: 'Literal',
|
|
138
|
+
value: quasi.value.cooked || quasi.value.raw,
|
|
139
|
+
})),
|
|
140
|
+
},
|
|
141
|
+
];
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Runtime tracking functions injected into sandbox
|
|
145
|
+
*/
|
|
146
|
+
export class ASTProvenanceTracker {
|
|
147
|
+
metadata = new Map();
|
|
148
|
+
valueToId = new WeakMap();
|
|
149
|
+
nextId = 0;
|
|
150
|
+
getId(value) {
|
|
151
|
+
if (typeof value === 'object' && value !== null) {
|
|
152
|
+
const existing = this.valueToId.get(value);
|
|
153
|
+
if (existing)
|
|
154
|
+
return existing;
|
|
155
|
+
const id = `tracked_${this.nextId++}`;
|
|
156
|
+
this.valueToId.set(value, id);
|
|
157
|
+
return id;
|
|
158
|
+
}
|
|
159
|
+
return `primitive_${nanoid()}`;
|
|
160
|
+
}
|
|
161
|
+
track(value, source, dependencies = []) {
|
|
162
|
+
if (value === null || value === undefined) {
|
|
163
|
+
return value;
|
|
164
|
+
}
|
|
165
|
+
const id = this.getId(value);
|
|
166
|
+
if (!this.metadata.has(id)) {
|
|
167
|
+
this.metadata.set(id, {
|
|
168
|
+
id,
|
|
169
|
+
source,
|
|
170
|
+
readers: { type: 'public' },
|
|
171
|
+
dependencies,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
return value;
|
|
175
|
+
}
|
|
176
|
+
trackBinary(left, right, operator) {
|
|
177
|
+
const leftId = this.getId(left);
|
|
178
|
+
const rightId = this.getId(right);
|
|
179
|
+
const leftProv = getProvenance(left) || getProvenanceForPrimitive(left);
|
|
180
|
+
const rightProv = getProvenance(right) || getProvenanceForPrimitive(right);
|
|
181
|
+
const toolMetadata = leftProv?.source.type === ProvenanceSource.TOOL
|
|
182
|
+
? leftProv
|
|
183
|
+
: rightProv?.source.type === ProvenanceSource.TOOL
|
|
184
|
+
? rightProv
|
|
185
|
+
: null;
|
|
186
|
+
let result;
|
|
187
|
+
switch (operator) {
|
|
188
|
+
case '+':
|
|
189
|
+
result = left + right;
|
|
190
|
+
if (typeof result === 'string' && toolMetadata) {
|
|
191
|
+
markPrimitiveTainted(result, toolMetadata);
|
|
192
|
+
}
|
|
193
|
+
break;
|
|
194
|
+
case '-':
|
|
195
|
+
result = left - right;
|
|
196
|
+
break;
|
|
197
|
+
case '*':
|
|
198
|
+
result = left * right;
|
|
199
|
+
break;
|
|
200
|
+
case '/':
|
|
201
|
+
result = left / right;
|
|
202
|
+
break;
|
|
203
|
+
case '%':
|
|
204
|
+
result = left % right;
|
|
205
|
+
break;
|
|
206
|
+
case '===':
|
|
207
|
+
case '==':
|
|
208
|
+
result = left === right;
|
|
209
|
+
break;
|
|
210
|
+
case '!==':
|
|
211
|
+
case '!=':
|
|
212
|
+
result = left !== right;
|
|
213
|
+
break;
|
|
214
|
+
case '<':
|
|
215
|
+
result = left < right;
|
|
216
|
+
break;
|
|
217
|
+
case '>':
|
|
218
|
+
result = left > right;
|
|
219
|
+
break;
|
|
220
|
+
case '<=':
|
|
221
|
+
result = left <= right;
|
|
222
|
+
break;
|
|
223
|
+
case '>=':
|
|
224
|
+
result = left >= right;
|
|
225
|
+
break;
|
|
226
|
+
case '&&':
|
|
227
|
+
result = left && right;
|
|
228
|
+
break;
|
|
229
|
+
case '||':
|
|
230
|
+
result = left || right;
|
|
231
|
+
break;
|
|
232
|
+
default:
|
|
233
|
+
result = undefined;
|
|
234
|
+
}
|
|
235
|
+
return this.track(result, { type: 'system', operation: `binary_${operator}`, timestamp: Date.now() }, [leftId, rightId]);
|
|
236
|
+
}
|
|
237
|
+
trackAssign(name, value) {
|
|
238
|
+
return this.track(value, { type: 'system', operation: 'assignment', timestamp: Date.now() }, [this.getId(value)]);
|
|
239
|
+
}
|
|
240
|
+
trackMethod(object, method, args) {
|
|
241
|
+
if (typeof object === 'object' && object !== null && method in object) {
|
|
242
|
+
const result = object[method](...args);
|
|
243
|
+
return this.track(result, { type: 'system', operation: `method_${method}`, timestamp: Date.now() }, [this.getId(object), ...args.map((a) => this.getId(a))]);
|
|
244
|
+
}
|
|
245
|
+
return undefined;
|
|
246
|
+
}
|
|
247
|
+
trackTemplate(expressions, quasis) {
|
|
248
|
+
let result = '';
|
|
249
|
+
let toolMetadata = null;
|
|
250
|
+
for (let i = 0; i < quasis.length; i++) {
|
|
251
|
+
result += quasis[i] || '';
|
|
252
|
+
if (i < expressions.length) {
|
|
253
|
+
const expr = expressions[i];
|
|
254
|
+
result += String(expr);
|
|
255
|
+
const prov = getProvenance(expr) || getProvenanceForPrimitive(expr);
|
|
256
|
+
if (prov && prov.source.type === ProvenanceSource.TOOL && !toolMetadata) {
|
|
257
|
+
toolMetadata = prov;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
if (toolMetadata) {
|
|
262
|
+
markPrimitiveTainted(result, toolMetadata);
|
|
263
|
+
}
|
|
264
|
+
return result;
|
|
265
|
+
}
|
|
266
|
+
getMetadata(value) {
|
|
267
|
+
if (typeof value === 'object' && value !== null) {
|
|
268
|
+
const id = this.valueToId.get(value);
|
|
269
|
+
if (id) {
|
|
270
|
+
return this.metadata.get(id) || null;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return null;
|
|
274
|
+
}
|
|
275
|
+
getAllMetadata() {
|
|
276
|
+
return new Map(this.metadata);
|
|
277
|
+
}
|
|
278
|
+
restoreMetadata(metadata) {
|
|
279
|
+
this.metadata = new Map(metadata);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Create tracking runtime for sandbox injection
|
|
284
|
+
*/
|
|
285
|
+
export function createTrackingRuntime() {
|
|
286
|
+
const tracker = new ASTProvenanceTracker();
|
|
287
|
+
return {
|
|
288
|
+
tracker,
|
|
289
|
+
runtime: {
|
|
290
|
+
__track: (value, source, deps) => tracker.track(value, source, deps),
|
|
291
|
+
__track_binary: (left, right, operator) => tracker.trackBinary(left, right, operator),
|
|
292
|
+
__track_assign: (name, value) => tracker.trackAssign(name, value),
|
|
293
|
+
__track_method: (object, method, args) => tracker.trackMethod(object, method, args),
|
|
294
|
+
__track_template: (expressions, quasis) => tracker.trackTemplate(expressions, quasis),
|
|
295
|
+
__get_provenance: (value) => tracker.getMetadata(value),
|
|
296
|
+
},
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=instrumentor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instrumentor.js","sourceRoot":"","sources":["../../src/ast/instrumentor.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './types.js';
|
|
2
|
+
export { createProvenanceProxy, getProvenance, hasProvenance, getAllProvenance, canRead, getProvenanceForPrimitive, markPrimitiveTainted, isPrimitiveTainted, setProvenanceExecutionId, clearProvenanceExecutionId, registerProvenanceMetadata, cleanupProvenanceForExecution, captureProvenanceState, restoreProvenanceState, captureProvenanceSnapshot, restoreProvenanceSnapshot, } from './registry.js';
|
|
3
|
+
export { issueProvenanceToken, verifyProvenanceToken, verifyProvenanceHints, computeDigest, stableStringify, getClientSecret, type TokenPayload, } from './tokens.js';
|
|
4
|
+
export { SecurityPolicyEngine, type Logger } from './policies/engine.js';
|
|
5
|
+
export { preventDataExfiltration, preventDataExfiltrationWithApproval, requireUserOrigin, requireUserOriginWithApproval, blockLLMRecipients, blockLLMRecipientsWithApproval, auditSensitiveAccess, getBuiltInPolicies, getBuiltInPoliciesWithApproval, createCustomPolicy, } from './policies/engine.js';
|
|
6
|
+
export { instrumentCode, createTrackingRuntime } from './ast/instrumentor.js';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAE3B,OAAO,EACN,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,OAAO,EACP,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,6BAA6B,EAC7B,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,GACzB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACN,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,eAAe,EACf,KAAK,YAAY,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,oBAAoB,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EACN,uBAAuB,EACvB,mCAAmC,EACnC,iBAAiB,EACjB,6BAA6B,EAC7B,kBAAkB,EAClB,8BAA8B,EAC9B,oBAAoB,EACpB,kBAAkB,EAClB,8BAA8B,EAC9B,kBAAkB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * from './types.js';
|
|
2
|
+
export { createProvenanceProxy, getProvenance, hasProvenance, getAllProvenance, canRead, getProvenanceForPrimitive, markPrimitiveTainted, isPrimitiveTainted, setProvenanceExecutionId, clearProvenanceExecutionId, registerProvenanceMetadata, cleanupProvenanceForExecution, captureProvenanceState, restoreProvenanceState, captureProvenanceSnapshot, restoreProvenanceSnapshot, } from './registry.js';
|
|
3
|
+
export { issueProvenanceToken, verifyProvenanceToken, verifyProvenanceHints, computeDigest, stableStringify, getClientSecret, } from './tokens.js';
|
|
4
|
+
export { SecurityPolicyEngine } from './policies/engine.js';
|
|
5
|
+
export { preventDataExfiltration, preventDataExfiltrationWithApproval, requireUserOrigin, requireUserOriginWithApproval, blockLLMRecipients, blockLLMRecipientsWithApproval, auditSensitiveAccess, getBuiltInPolicies, getBuiltInPoliciesWithApproval, createCustomPolicy, } from './policies/engine.js';
|
|
6
|
+
export { instrumentCode, createTrackingRuntime } from './ast/instrumentor.js';
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAE3B,OAAO,EACN,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,OAAO,EACP,yBAAyB,EACzB,oBAAoB,EACpB,kBAAkB,EAClB,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,6BAA6B,EAC7B,sBAAsB,EACtB,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,GACzB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACN,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,aAAa,EACb,eAAe,EACf,eAAe,GAEf,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,oBAAoB,EAAe,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EACN,uBAAuB,EACvB,mCAAmC,EACnC,iBAAiB,EACjB,6BAA6B,EAC7B,kBAAkB,EAClB,8BAA8B,EAC9B,oBAAoB,EACpB,kBAAkB,EAClB,8BAA8B,EAC9B,kBAAkB,GAClB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Security Policy Engine
|
|
3
|
+
*
|
|
4
|
+
*/
|
|
5
|
+
import type { SecurityPolicy } from '../types.js';
|
|
6
|
+
export interface Logger {
|
|
7
|
+
debug: (msg: string, obj?: any) => void;
|
|
8
|
+
info: (msg: string, obj?: any) => void;
|
|
9
|
+
warn: (msg: string, obj?: any) => void;
|
|
10
|
+
error: (msg: string, obj?: any) => void;
|
|
11
|
+
}
|
|
12
|
+
export declare class SecurityPolicyEngine {
|
|
13
|
+
private policies;
|
|
14
|
+
private logger;
|
|
15
|
+
private approvalCallback?;
|
|
16
|
+
private customGetProvenance?;
|
|
17
|
+
constructor(policies: SecurityPolicy[], logger: Logger, customGetProvenance?: (value: unknown) => any);
|
|
18
|
+
/**
|
|
19
|
+
* Set a custom getProvenance function (e.g., for AST mode)
|
|
20
|
+
*/
|
|
21
|
+
setGetProvenance(fn: (value: unknown) => any): void;
|
|
22
|
+
/**
|
|
23
|
+
* Set approval callback for policies that return action='approve'
|
|
24
|
+
*/
|
|
25
|
+
setApprovalCallback(callback: (message: string, context: Record<string, unknown>) => Promise<boolean>): void;
|
|
26
|
+
checkTool(toolName: string, apiGroup: string, args: Record<string, unknown>): Promise<void>;
|
|
27
|
+
private normalizeAction;
|
|
28
|
+
private requestApproval;
|
|
29
|
+
private sanitizeArgs;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Prevent data exfiltration - blocks sending private data to unauthorized recipients
|
|
33
|
+
*/
|
|
34
|
+
export declare const preventDataExfiltration: SecurityPolicy;
|
|
35
|
+
/**
|
|
36
|
+
* Prevent data exfiltration (approval mode) - requires approval for risky sends
|
|
37
|
+
*/
|
|
38
|
+
export declare const preventDataExfiltrationWithApproval: SecurityPolicy;
|
|
39
|
+
/**
|
|
40
|
+
* Require user origin - ensures sensitive operations only use user-provided data
|
|
41
|
+
*/
|
|
42
|
+
export declare const requireUserOrigin: SecurityPolicy;
|
|
43
|
+
/**
|
|
44
|
+
* Require user origin (approval mode) - requires approval for non-user-originated critical operations
|
|
45
|
+
*/
|
|
46
|
+
export declare const requireUserOriginWithApproval: SecurityPolicy;
|
|
47
|
+
/**
|
|
48
|
+
* Block LLM-generated recipients - prevents sending to LLM-extracted emails
|
|
49
|
+
*/
|
|
50
|
+
export declare const blockLLMRecipients: SecurityPolicy;
|
|
51
|
+
/**
|
|
52
|
+
* Block LLM-generated recipients (approval mode) - requires approval for LLM-extracted emails
|
|
53
|
+
*/
|
|
54
|
+
export declare const blockLLMRecipientsWithApproval: SecurityPolicy;
|
|
55
|
+
/**
|
|
56
|
+
* Audit sensitive data access - logs access without blocking
|
|
57
|
+
*/
|
|
58
|
+
export declare const auditSensitiveAccess: SecurityPolicy;
|
|
59
|
+
/**
|
|
60
|
+
* Helper: Create custom policy
|
|
61
|
+
*/
|
|
62
|
+
export declare function createCustomPolicy(name: string, description: string, checkFn: SecurityPolicy['check']): SecurityPolicy;
|
|
63
|
+
/**
|
|
64
|
+
* Get all built-in policies
|
|
65
|
+
*/
|
|
66
|
+
export declare function getBuiltInPolicies(): SecurityPolicy[];
|
|
67
|
+
/**
|
|
68
|
+
* Get all built-in policies with approval variants
|
|
69
|
+
*/
|
|
70
|
+
export declare function getBuiltInPoliciesWithApproval(): SecurityPolicy[];
|
|
71
|
+
//# sourceMappingURL=engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/policies/engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,cAAc,EAAkD,MAAM,aAAa,CAAC;AASlG,MAAM,WAAW,MAAM;IACtB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACxC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACvC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;CACxC;AAED,qBAAa,oBAAoB;IAChC,OAAO,CAAC,QAAQ,CAAmB;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAC,CAGH;IACtB,OAAO,CAAC,mBAAmB,CAAC,CAA0B;gBAGrD,QAAQ,EAAE,cAAc,EAAE,EAC1B,MAAM,EAAE,MAAM,EACd,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,GAAG;IAO9C;;OAEG;IACH,gBAAgB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,GAAG,GAAG,IAAI;IAInD;;OAEG;IACH,mBAAmB,CAClB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,GAC/E,IAAI;IAID,SAAS,CACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,OAAO,CAAC,IAAI,CAAC;IA8EhB,OAAO,CAAC,eAAe;YAYT,eAAe;IAmC7B,OAAO,CAAC,YAAY;CAapB;AA+DD;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,cA0CrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mCAAmC,EAAE,cA0CjD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAE,cAkC/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,6BAA6B,EAAE,cAmC3C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,cAyBhC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,8BAA8B,EAAE,cA0B5C,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,cAyBlC,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CACjC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,GAC9B,cAAc,CAEhB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,cAAc,EAAE,CAErD;AAED;;GAEG;AACH,wBAAgB,8BAA8B,IAAI,cAAc,EAAE,CAOjE"}
|