@ai-pip/core 0.2.0 → 0.3.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/CHANGELOG.md +66 -2
- package/README.md +107 -18
- package/dist/AAL/constants.d.ts +15 -0
- package/dist/AAL/constants.d.ts.map +1 -0
- package/dist/AAL/constants.js +20 -0
- package/dist/AAL/constants.js.map +1 -0
- package/dist/AAL/index.d.ts +2 -1
- package/dist/AAL/index.d.ts.map +1 -1
- package/dist/AAL/index.js +3 -1
- package/dist/AAL/index.js.map +1 -1
- package/dist/AAL/process/applyRemovalPlan.d.ts +21 -0
- package/dist/AAL/process/applyRemovalPlan.d.ts.map +1 -0
- package/dist/AAL/process/applyRemovalPlan.js +150 -0
- package/dist/AAL/process/applyRemovalPlan.js.map +1 -0
- package/dist/AAL/process/buildDecisionReason.d.ts.map +1 -1
- package/dist/AAL/process/buildDecisionReason.js +26 -4
- package/dist/AAL/process/buildDecisionReason.js.map +1 -1
- package/dist/AAL/process/buildRemovalPlan.d.ts +17 -10
- package/dist/AAL/process/buildRemovalPlan.d.ts.map +1 -1
- package/dist/AAL/process/buildRemovalPlan.js +84 -30
- package/dist/AAL/process/buildRemovalPlan.js.map +1 -1
- package/dist/AAL/process/index.d.ts +2 -1
- package/dist/AAL/process/index.d.ts.map +1 -1
- package/dist/AAL/process/index.js +2 -1
- package/dist/AAL/process/index.js.map +1 -1
- package/dist/AAL/process/resolveAgentAction.d.ts.map +1 -1
- package/dist/AAL/process/resolveAgentAction.js +24 -0
- package/dist/AAL/process/resolveAgentAction.js.map +1 -1
- package/dist/AAL/types.d.ts +11 -7
- package/dist/AAL/types.d.ts.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/isl/detect/detect.d.ts +39 -0
- package/dist/isl/detect/detect.d.ts.map +1 -0
- package/dist/isl/detect/detect.js +369 -0
- package/dist/isl/detect/detect.js.map +1 -0
- package/dist/isl/detect/index.d.ts +6 -0
- package/dist/isl/detect/index.d.ts.map +1 -0
- package/dist/isl/detect/index.js +5 -0
- package/dist/isl/detect/index.js.map +1 -0
- package/dist/isl/index.d.ts +8 -1
- package/dist/isl/index.d.ts.map +1 -1
- package/dist/isl/index.js +5 -0
- package/dist/isl/index.js.map +1 -1
- package/dist/isl/process/emitSignal.d.ts +19 -10
- package/dist/isl/process/emitSignal.d.ts.map +1 -1
- package/dist/isl/process/emitSignal.js +25 -23
- package/dist/isl/process/emitSignal.js.map +1 -1
- package/dist/isl/process/index.d.ts +1 -0
- package/dist/isl/process/index.d.ts.map +1 -1
- package/dist/isl/riskScore/calculators.d.ts +19 -0
- package/dist/isl/riskScore/calculators.d.ts.map +1 -0
- package/dist/isl/riskScore/calculators.js +50 -0
- package/dist/isl/riskScore/calculators.js.map +1 -0
- package/dist/isl/riskScore/index.d.ts +14 -0
- package/dist/isl/riskScore/index.d.ts.map +1 -0
- package/dist/isl/riskScore/index.js +26 -0
- package/dist/isl/riskScore/index.js.map +1 -0
- package/dist/isl/riskScore/types.d.ts +20 -0
- package/dist/isl/riskScore/types.d.ts.map +1 -0
- package/dist/isl/riskScore/types.js +12 -0
- package/dist/isl/riskScore/types.js.map +1 -0
- package/dist/isl/sanitize.d.ts +8 -1
- package/dist/isl/sanitize.d.ts.map +1 -1
- package/dist/isl/sanitize.js +13 -5
- package/dist/isl/sanitize.js.map +1 -1
- package/dist/isl/signals.d.ts +16 -1
- package/dist/isl/signals.d.ts.map +1 -1
- package/dist/isl/signals.js +4 -2
- package/dist/isl/signals.js.map +1 -1
- package/dist/isl/value-objects/Pattern.d.ts +21 -0
- package/dist/isl/value-objects/Pattern.d.ts.map +1 -1
- package/dist/isl/value-objects/Pattern.js +36 -0
- package/dist/isl/value-objects/Pattern.js.map +1 -1
- package/dist/isl/value-objects/index.d.ts +2 -2
- package/dist/isl/value-objects/index.d.ts.map +1 -1
- package/dist/isl/value-objects/index.js +1 -1
- package/dist/isl/value-objects/index.js.map +1 -1
- package/dist/shared/audit.d.ts +116 -16
- package/dist/shared/audit.d.ts.map +1 -1
- package/dist/shared/audit.js +314 -32
- package/dist/shared/audit.js.map +1 -1
- package/dist/shared/index.d.ts +2 -2
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +1 -1
- package/dist/shared/index.js.map +1 -1
- package/package.json +6 -2
|
@@ -10,6 +10,25 @@
|
|
|
10
10
|
* - Include risk score and threshold information
|
|
11
11
|
* - Facilitate auditing and debugging
|
|
12
12
|
*/
|
|
13
|
+
const VALID_ACTIONS = new Set(['ALLOW', 'WARN', 'BLOCK']);
|
|
14
|
+
function assertBuildDecisionReasonArgs(action, islSignal, policy) {
|
|
15
|
+
if (action == null || !VALID_ACTIONS.has(action)) {
|
|
16
|
+
throw new TypeError('AAL buildDecisionReason: action must be ALLOW, WARN, or BLOCK');
|
|
17
|
+
}
|
|
18
|
+
if (islSignal == null || typeof islSignal !== 'object') {
|
|
19
|
+
throw new TypeError('AAL buildDecisionReason: islSignal must be a non-null object');
|
|
20
|
+
}
|
|
21
|
+
if (typeof islSignal.riskScore !== 'number') {
|
|
22
|
+
throw new TypeError('AAL buildDecisionReason: islSignal.riskScore must be a number');
|
|
23
|
+
}
|
|
24
|
+
if (policy == null || typeof policy !== 'object') {
|
|
25
|
+
throw new TypeError('AAL buildDecisionReason: policy must be a non-null object');
|
|
26
|
+
}
|
|
27
|
+
const t = policy.thresholds;
|
|
28
|
+
if (t == null || typeof t !== 'object' || typeof t.warn !== 'number' || typeof t.block !== 'number') {
|
|
29
|
+
throw new TypeError('AAL buildDecisionReason: policy.thresholds.warn and block must be numbers');
|
|
30
|
+
}
|
|
31
|
+
}
|
|
13
32
|
/**
|
|
14
33
|
* Builds the reason for a decision
|
|
15
34
|
*
|
|
@@ -19,6 +38,9 @@
|
|
|
19
38
|
* @returns DecisionReason with complete information
|
|
20
39
|
*/
|
|
21
40
|
export function buildDecisionReason(action, islSignal, policy) {
|
|
41
|
+
assertBuildDecisionReasonArgs(action, islSignal, policy);
|
|
42
|
+
const detectionCount = islSignal.piDetection?.detections?.length ?? 0;
|
|
43
|
+
const hasThreats = islSignal.hasThreats === true && detectionCount > 0;
|
|
22
44
|
let threshold;
|
|
23
45
|
let reason;
|
|
24
46
|
if (action === 'BLOCK') {
|
|
@@ -33,16 +55,16 @@ export function buildDecisionReason(action, islSignal, policy) {
|
|
|
33
55
|
threshold = policy.thresholds.warn;
|
|
34
56
|
reason = `Risk score ${islSignal.riskScore.toFixed(3)} is below warn threshold ${threshold.toFixed(3)}`;
|
|
35
57
|
}
|
|
36
|
-
if (
|
|
37
|
-
reason += `. ${
|
|
58
|
+
if (hasThreats) {
|
|
59
|
+
reason += `. ${detectionCount} threat(s) detected.`;
|
|
38
60
|
}
|
|
39
61
|
return {
|
|
40
62
|
action,
|
|
41
63
|
riskScore: islSignal.riskScore,
|
|
42
64
|
threshold,
|
|
43
65
|
reason,
|
|
44
|
-
hasThreats
|
|
45
|
-
detectionCount
|
|
66
|
+
hasThreats,
|
|
67
|
+
detectionCount
|
|
46
68
|
};
|
|
47
69
|
}
|
|
48
70
|
//# sourceMappingURL=buildDecisionReason.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildDecisionReason.js","sourceRoot":"","sources":["../../../src/AAL/process/buildDecisionReason.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAkBH;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAqB,EACrB,SAAoB,EACpB,MAAmB;IAEnB,IAAI,SAAiB,CAAA;IACrB,IAAI,MAAc,CAAA;IAElB,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAA;QACnC,MAAM,GAAG,cAAc,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;IACzG,CAAC;SAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7B,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAA;QAClC,MAAM,GAAG,cAAc,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAA;IACrI,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAA;QAClC,MAAM,GAAG,cAAc,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;IACzG,CAAC;IAED,IAAI,
|
|
1
|
+
{"version":3,"file":"buildDecisionReason.js","sourceRoot":"","sources":["../../../src/AAL/process/buildDecisionReason.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAkBH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAExE,SAAS,6BAA6B,CACpC,MAAqB,EACrB,SAAoB,EACpB,MAAmB;IAEnB,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,SAAS,CAAC,+DAA+D,CAAC,CAAA;IACtF,CAAC;IACD,IAAI,SAAS,IAAI,IAAI,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QACvD,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAA;IACrF,CAAC;IACD,IAAI,OAAO,SAAS,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,SAAS,CAAC,+DAA+D,CAAC,CAAA;IACtF,CAAC;IACD,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACjD,MAAM,IAAI,SAAS,CAAC,2DAA2D,CAAC,CAAA;IAClF,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAA;IAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACpG,MAAM,IAAI,SAAS,CAAC,2EAA2E,CAAC,CAAA;IAClG,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAqB,EACrB,SAAoB,EACpB,MAAmB;IAEnB,6BAA6B,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAA;IAExD,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC,CAAA;IACrE,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,KAAK,IAAI,IAAI,cAAc,GAAG,CAAC,CAAA;IAEtE,IAAI,SAAiB,CAAA;IACrB,IAAI,MAAc,CAAA;IAElB,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAA;QACnC,MAAM,GAAG,cAAc,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;IACzG,CAAC;SAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7B,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAA;QAClC,MAAM,GAAG,cAAc,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,2BAA2B,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,+BAA+B,CAAA;IACrI,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAA;QAClC,MAAM,GAAG,cAAc,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,4BAA4B,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAA;IACzG,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,cAAc,sBAAsB,CAAA;IACrD,CAAC;IAED,OAAO;QACL,MAAM;QACN,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,SAAS;QACT,MAAM;QACN,UAAU;QACV,cAAc;KACf,CAAA;AACH,CAAC"}
|
|
@@ -2,17 +2,14 @@
|
|
|
2
2
|
* buildRemovalPlan - Builds a plan for instruction removal
|
|
3
3
|
*
|
|
4
4
|
* @remarks
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* **Responsibility:**
|
|
9
|
-
* - Identify instructions to remove
|
|
10
|
-
* - Create removal plan based on detections
|
|
11
|
-
* - Does not execute the removal (that is SDK responsibility)
|
|
5
|
+
* Two entry points:
|
|
6
|
+
* - buildRemovalPlan(islSignal, policy): from signal only; no segmentId (descriptive).
|
|
7
|
+
* - buildRemovalPlanFromResult(islResult, policy): from result; includes segmentId for applyRemovalPlan.
|
|
12
8
|
*/
|
|
13
9
|
import type { RemovedInstruction } from '../types.js';
|
|
14
|
-
import type { ISLSignal } from '../../isl/signals.js';
|
|
15
10
|
import type { AgentPolicy } from '../types.js';
|
|
11
|
+
import type { ISLSignal } from '../../isl/signals.js';
|
|
12
|
+
import type { ISLResult } from '../../isl/types.js';
|
|
16
13
|
/**
|
|
17
14
|
* Plan for instruction removal
|
|
18
15
|
*/
|
|
@@ -22,11 +19,21 @@ export interface RemovalPlan {
|
|
|
22
19
|
readonly removalEnabled: boolean;
|
|
23
20
|
}
|
|
24
21
|
/**
|
|
25
|
-
* Builds a plan for instruction removal
|
|
22
|
+
* Builds a plan for instruction removal from ISL signal (no segment ids).
|
|
23
|
+
* Use when you only have the signal; plan is descriptive. For actionable removal use buildRemovalPlanFromResult.
|
|
26
24
|
*
|
|
27
25
|
* @param islSignal - ISL signal with detections
|
|
28
26
|
* @param policy - Agent policy
|
|
29
|
-
* @returns RemovalPlan with instructions to remove
|
|
27
|
+
* @returns RemovalPlan with instructions to remove (no segmentId)
|
|
30
28
|
*/
|
|
31
29
|
export declare function buildRemovalPlan(islSignal: ISLSignal, policy: AgentPolicy): RemovalPlan;
|
|
30
|
+
/**
|
|
31
|
+
* Builds a plan for instruction removal from ISL result (with segment ids).
|
|
32
|
+
* Use with applyRemovalPlan to produce content with malicious ranges removed.
|
|
33
|
+
*
|
|
34
|
+
* @param islResult - ISL result with segments and per-segment piDetection
|
|
35
|
+
* @param policy - Agent policy
|
|
36
|
+
* @returns RemovalPlan with instructions to remove (segmentId set per instruction)
|
|
37
|
+
*/
|
|
38
|
+
export declare function buildRemovalPlanFromResult(islResult: ISLResult, policy: AgentPolicy): RemovalPlan;
|
|
32
39
|
//# sourceMappingURL=buildRemovalPlan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildRemovalPlan.d.ts","sourceRoot":"","sources":["../../../src/AAL/process/buildRemovalPlan.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"buildRemovalPlan.d.ts","sourceRoot":"","sources":["../../../src/AAL/process/buildRemovalPlan.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAGnD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,oBAAoB,EAAE,SAAS,kBAAkB,EAAE,CAAA;IAC5D,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAA;CACjC;AA0CD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,GAClB,WAAW,CAoBb;AAWD;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,GAClB,WAAW,CAmBb"}
|
|
@@ -2,45 +2,99 @@
|
|
|
2
2
|
* buildRemovalPlan - Builds a plan for instruction removal
|
|
3
3
|
*
|
|
4
4
|
* @remarks
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* **Responsibility:**
|
|
9
|
-
* - Identify instructions to remove
|
|
10
|
-
* - Create removal plan based on detections
|
|
11
|
-
* - Does not execute the removal (that is SDK responsibility)
|
|
5
|
+
* Two entry points:
|
|
6
|
+
* - buildRemovalPlan(islSignal, policy): from signal only; no segmentId (descriptive).
|
|
7
|
+
* - buildRemovalPlanFromResult(islResult, policy): from result; includes segmentId for applyRemovalPlan.
|
|
12
8
|
*/
|
|
9
|
+
function mapDetectionToRemovedInstruction(detection, segmentId) {
|
|
10
|
+
return {
|
|
11
|
+
type: detection.pattern_type,
|
|
12
|
+
pattern: detection.matched_pattern,
|
|
13
|
+
position: detection.position,
|
|
14
|
+
description: `Detected ${detection.pattern_type} pattern with confidence ${detection.confidence.toFixed(3)}`,
|
|
15
|
+
...(segmentId != null && { segmentId })
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const EMPTY_PLAN_DISABLED = Object.freeze({
|
|
19
|
+
instructionsToRemove: Object.freeze([]),
|
|
20
|
+
shouldRemove: false,
|
|
21
|
+
removalEnabled: false
|
|
22
|
+
});
|
|
23
|
+
const EMPTY_PLAN_NO_THREATS = Object.freeze({
|
|
24
|
+
instructionsToRemove: Object.freeze([]),
|
|
25
|
+
shouldRemove: false,
|
|
26
|
+
removalEnabled: true
|
|
27
|
+
});
|
|
28
|
+
function assertPolicyForRemoval(policy) {
|
|
29
|
+
if (policy == null || typeof policy !== 'object') {
|
|
30
|
+
throw new TypeError('AAL buildRemovalPlan: policy must be a non-null object');
|
|
31
|
+
}
|
|
32
|
+
const r = policy.removal;
|
|
33
|
+
if (r == null || typeof r !== 'object' || typeof r.enabled !== 'boolean') {
|
|
34
|
+
throw new TypeError('AAL buildRemovalPlan: policy.removal.enabled must be a boolean');
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function assertISLSignalForRemoval(signal) {
|
|
38
|
+
if (signal == null || typeof signal !== 'object') {
|
|
39
|
+
throw new TypeError('AAL buildRemovalPlan: islSignal must be a non-null object');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
13
42
|
/**
|
|
14
|
-
* Builds a plan for instruction removal
|
|
43
|
+
* Builds a plan for instruction removal from ISL signal (no segment ids).
|
|
44
|
+
* Use when you only have the signal; plan is descriptive. For actionable removal use buildRemovalPlanFromResult.
|
|
15
45
|
*
|
|
16
46
|
* @param islSignal - ISL signal with detections
|
|
17
47
|
* @param policy - Agent policy
|
|
18
|
-
* @returns RemovalPlan with instructions to remove
|
|
48
|
+
* @returns RemovalPlan with instructions to remove (no segmentId)
|
|
19
49
|
*/
|
|
20
50
|
export function buildRemovalPlan(islSignal, policy) {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
51
|
+
assertPolicyForRemoval(policy);
|
|
52
|
+
assertISLSignalForRemoval(islSignal);
|
|
53
|
+
if (!policy.removal.enabled)
|
|
54
|
+
return EMPTY_PLAN_DISABLED;
|
|
55
|
+
if (!islSignal.hasThreats)
|
|
56
|
+
return EMPTY_PLAN_NO_THREATS;
|
|
57
|
+
const detections = islSignal.piDetection?.detections;
|
|
58
|
+
if (!Array.isArray(detections) || detections.length === 0) {
|
|
59
|
+
return EMPTY_PLAN_NO_THREATS;
|
|
60
|
+
}
|
|
61
|
+
const instructionsToRemove = detections.map((d) => mapDetectionToRemovedInstruction(d));
|
|
62
|
+
return {
|
|
63
|
+
instructionsToRemove: Object.freeze(instructionsToRemove),
|
|
64
|
+
shouldRemove: instructionsToRemove.length > 0,
|
|
65
|
+
removalEnabled: true
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function assertISLResultForRemoval(islResult) {
|
|
69
|
+
if (islResult == null || typeof islResult !== 'object') {
|
|
70
|
+
throw new TypeError('AAL buildRemovalPlanFromResult: islResult must be a non-null object');
|
|
28
71
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
72
|
+
if (!Array.isArray(islResult.segments)) {
|
|
73
|
+
throw new TypeError('AAL buildRemovalPlanFromResult: islResult.segments must be an array');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Builds a plan for instruction removal from ISL result (with segment ids).
|
|
78
|
+
* Use with applyRemovalPlan to produce content with malicious ranges removed.
|
|
79
|
+
*
|
|
80
|
+
* @param islResult - ISL result with segments and per-segment piDetection
|
|
81
|
+
* @param policy - Agent policy
|
|
82
|
+
* @returns RemovalPlan with instructions to remove (segmentId set per instruction)
|
|
83
|
+
*/
|
|
84
|
+
export function buildRemovalPlanFromResult(islResult, policy) {
|
|
85
|
+
assertPolicyForRemoval(policy);
|
|
86
|
+
assertISLResultForRemoval(islResult);
|
|
87
|
+
if (!policy.removal.enabled)
|
|
88
|
+
return EMPTY_PLAN_DISABLED;
|
|
89
|
+
const instructionsToRemove = [];
|
|
90
|
+
for (const segment of islResult.segments) {
|
|
91
|
+
const detections = segment.piDetection?.detections;
|
|
92
|
+
if (!Array.isArray(detections) || detections.length === 0)
|
|
93
|
+
continue;
|
|
94
|
+
for (const d of detections) {
|
|
95
|
+
instructionsToRemove.push(mapDetectionToRemovedInstruction(d, segment.id));
|
|
96
|
+
}
|
|
36
97
|
}
|
|
37
|
-
// Build list of instructions to remove from detections
|
|
38
|
-
const instructionsToRemove = islSignal.piDetection.detections.map((detection) => ({
|
|
39
|
-
type: detection.pattern_type,
|
|
40
|
-
pattern: detection.matched_pattern,
|
|
41
|
-
position: detection.position,
|
|
42
|
-
description: `Detected ${detection.pattern_type} pattern with confidence ${detection.confidence.toFixed(3)}`
|
|
43
|
-
}));
|
|
44
98
|
return {
|
|
45
99
|
instructionsToRemove: Object.freeze(instructionsToRemove),
|
|
46
100
|
shouldRemove: instructionsToRemove.length > 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildRemovalPlan.js","sourceRoot":"","sources":["../../../src/AAL/process/buildRemovalPlan.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"buildRemovalPlan.js","sourceRoot":"","sources":["../../../src/AAL/process/buildRemovalPlan.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
export { resolveAgentAction, resolveAgentActionWithScore } from './resolveAgentAction.js';
|
|
5
5
|
export { buildDecisionReason } from './buildDecisionReason.js';
|
|
6
6
|
export type { DecisionReason } from './buildDecisionReason.js';
|
|
7
|
-
export { buildRemovalPlan } from './buildRemovalPlan.js';
|
|
7
|
+
export { buildRemovalPlan, buildRemovalPlanFromResult } from './buildRemovalPlan.js';
|
|
8
8
|
export type { RemovalPlan } from './buildRemovalPlan.js';
|
|
9
|
+
export { applyRemovalPlan } from './applyRemovalPlan.js';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/AAL/process/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/AAL/process/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAC9D,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAA;AACpF,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
|
|
@@ -3,5 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export { resolveAgentAction, resolveAgentActionWithScore } from './resolveAgentAction.js';
|
|
5
5
|
export { buildDecisionReason } from './buildDecisionReason.js';
|
|
6
|
-
export { buildRemovalPlan } from './buildRemovalPlan.js';
|
|
6
|
+
export { buildRemovalPlan, buildRemovalPlanFromResult } from './buildRemovalPlan.js';
|
|
7
|
+
export { applyRemovalPlan } from './applyRemovalPlan.js';
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/AAL/process/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/AAL/process/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAA;AAEpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveAgentAction.d.ts","sourceRoot":"","sources":["../../../src/AAL/process/resolveAgentAction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"resolveAgentAction.d.ts","sourceRoot":"","sources":["../../../src/AAL/process/resolveAgentAction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAyB7D;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,GAClB,aAAa,CAef;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,2DAMpB"}
|
|
@@ -11,6 +11,26 @@
|
|
|
11
11
|
* - Return decision based on risk score and thresholds
|
|
12
12
|
*/
|
|
13
13
|
import { createAnomalyScore } from '../value-objects/AnomalyScore.js';
|
|
14
|
+
function assertAgentPolicy(policy) {
|
|
15
|
+
if (policy == null || typeof policy !== 'object') {
|
|
16
|
+
throw new TypeError('AAL resolveAgentAction: policy must be a non-null object');
|
|
17
|
+
}
|
|
18
|
+
const t = policy.thresholds;
|
|
19
|
+
if (t == null || typeof t !== 'object') {
|
|
20
|
+
throw new TypeError('AAL resolveAgentAction: policy.thresholds must be defined');
|
|
21
|
+
}
|
|
22
|
+
if (typeof t.warn !== 'number' || typeof t.block !== 'number') {
|
|
23
|
+
throw new TypeError('AAL resolveAgentAction: policy.thresholds.warn and block must be numbers');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function assertISLSignal(signal) {
|
|
27
|
+
if (signal == null || typeof signal !== 'object') {
|
|
28
|
+
throw new TypeError('AAL resolveAgentAction: islSignal must be a non-null object');
|
|
29
|
+
}
|
|
30
|
+
if (typeof signal.riskScore !== 'number') {
|
|
31
|
+
throw new TypeError('AAL resolveAgentAction: islSignal.riskScore must be a number');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
14
34
|
/**
|
|
15
35
|
* Resolves agent action based on ISL signal and policy
|
|
16
36
|
*
|
|
@@ -19,6 +39,8 @@ import { createAnomalyScore } from '../value-objects/AnomalyScore.js';
|
|
|
19
39
|
* @returns AnomalyAction (ALLOW, WARN, BLOCK)
|
|
20
40
|
*/
|
|
21
41
|
export function resolveAgentAction(islSignal, policy) {
|
|
42
|
+
assertISLSignal(islSignal);
|
|
43
|
+
assertAgentPolicy(policy);
|
|
22
44
|
const riskScore = islSignal.riskScore;
|
|
23
45
|
// Evaluate policy thresholds
|
|
24
46
|
if (riskScore >= policy.thresholds.block) {
|
|
@@ -37,6 +59,8 @@ export function resolveAgentAction(islSignal, policy) {
|
|
|
37
59
|
* @returns AnomalyScore with score and action
|
|
38
60
|
*/
|
|
39
61
|
export function resolveAgentActionWithScore(islSignal, policy) {
|
|
62
|
+
assertISLSignal(islSignal);
|
|
63
|
+
assertAgentPolicy(policy);
|
|
40
64
|
const action = resolveAgentAction(islSignal, policy);
|
|
41
65
|
return createAnomalyScore(islSignal.riskScore, action);
|
|
42
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveAgentAction.js","sourceRoot":"","sources":["../../../src/AAL/process/resolveAgentAction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAErE;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAAoB,EACpB,MAAmB;IAEnB,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAA;IAErC,6BAA6B;IAC7B,IAAI,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACzC,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,IAAI,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACxC,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CACzC,SAAoB,EACpB,MAAmB;IAEnB,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IACpD,OAAO,kBAAkB,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AACxD,CAAC"}
|
|
1
|
+
{"version":3,"file":"resolveAgentAction.js","sourceRoot":"","sources":["../../../src/AAL/process/resolveAgentAction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAA;AAErE,SAAS,iBAAiB,CAAC,MAAmB;IAC5C,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACjD,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAA;IACjF,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAA;IAC3B,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,IAAI,SAAS,CAAC,2DAA2D,CAAC,CAAA;IAClF,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9D,MAAM,IAAI,SAAS,CAAC,0EAA0E,CAAC,CAAA;IACjG,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,MAAiB;IACxC,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACjD,MAAM,IAAI,SAAS,CAAC,6DAA6D,CAAC,CAAA;IACpF,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAA;IACrF,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,SAAoB,EACpB,MAAmB;IAEnB,eAAe,CAAC,SAAS,CAAC,CAAA;IAC1B,iBAAiB,CAAC,MAAM,CAAC,CAAA;IACzB,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAA;IAErC,6BAA6B;IAC7B,IAAI,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACzC,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,IAAI,SAAS,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QACxC,OAAO,MAAM,CAAA;IACf,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CACzC,SAAoB,EACpB,MAAmB;IAEnB,eAAe,CAAC,SAAS,CAAC,CAAA;IAC1B,iBAAiB,CAAC,MAAM,CAAC,CAAA;IACzB,MAAM,MAAM,GAAG,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IACpD,OAAO,kBAAkB,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AACxD,CAAC"}
|
package/dist/AAL/types.d.ts
CHANGED
|
@@ -46,29 +46,33 @@ export type ImmutableInstruction = string;
|
|
|
46
46
|
* and marked for removal by the Agent Action Lock (AAL).
|
|
47
47
|
*
|
|
48
48
|
* @remarks
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
* Instances of this type are typically recorded in lineage
|
|
53
|
-
* for auditability and explainability.
|
|
49
|
+
* When built from ISLResult (buildRemovalPlanFromResult), segmentId is set
|
|
50
|
+
* so applyRemovalPlan can remove the range from the correct segment.
|
|
51
|
+
* When built from ISLSignal only, segmentId is absent (plan is descriptive only).
|
|
54
52
|
*/
|
|
55
53
|
export interface RemovedInstruction {
|
|
56
54
|
/**
|
|
57
55
|
* The classified threat category that triggered the removal.
|
|
56
|
+
* Matches ISL pattern_type (e.g. prompt-injection, jailbreak, role_hijacking).
|
|
58
57
|
*/
|
|
59
|
-
readonly type:
|
|
58
|
+
readonly type: string;
|
|
60
59
|
/**
|
|
61
60
|
* The detected pattern or signature that matched the threat.
|
|
62
61
|
*/
|
|
63
62
|
readonly pattern: string;
|
|
64
63
|
/**
|
|
65
|
-
* The exact position of the instruction within the
|
|
64
|
+
* The exact position of the instruction within the segment (start inclusive, end exclusive).
|
|
66
65
|
*/
|
|
67
66
|
readonly position: Position;
|
|
68
67
|
/**
|
|
69
68
|
* Human-readable explanation of why the instruction was removed.
|
|
70
69
|
*/
|
|
71
70
|
readonly description: string;
|
|
71
|
+
/**
|
|
72
|
+
* Segment id (from ISLSegment.id) when plan is built from ISLResult.
|
|
73
|
+
* Required for applyRemovalPlan to target the correct segment.
|
|
74
|
+
*/
|
|
75
|
+
readonly segmentId?: string;
|
|
72
76
|
}
|
|
73
77
|
/**
|
|
74
78
|
* AgentPolicy
|
package/dist/AAL/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/AAL/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAGlD;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAA;AAEtD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAA;AAElC;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAA;AAEnC;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAA;AAElC;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAA;AAEzC
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/AAL/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAGlD;;;;;;;;;GASG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAA;AAEtD;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAA;AAElC;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAA;AAEnC;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,CAAA;AAElC;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAA;AAEzC;;;;;;;;;;GAUG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IAExB;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAE3B;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAE5B;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,WAAW;IAE1B;;OAEG;IACH,UAAU,EAAE;QACV,IAAI,EAAE,SAAS,CAAC;QAChB,KAAK,EAAE,SAAS,CAAC;KAClB,CAAC;IAED;;;MAGE;IACH,OAAO,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;KAClB,CAAC;IAGF,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CAGnB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -17,13 +17,13 @@
|
|
|
17
17
|
*/
|
|
18
18
|
export { segment, classifySource, classifyOrigin, initLineage, createLineageEntry, generateId, splitByContextRules, OriginType, TrustLevelType, ClassificationError, SegmentationError } from './csl/index.js';
|
|
19
19
|
export type { HashAlgorithm, Source, CSLInput, CSLSegment, CSLResult, TrustLevel, Origin, LineageEntry, ContentHash } from './csl/index.js';
|
|
20
|
-
export { sanitize, emitSignal, createISLSignal, isHighRiskSignal, isMediumRiskSignal, isLowRiskSignal } from './isl/index.js';
|
|
21
|
-
export type { RiskScore, ISLSegment, ISLResult, ISLSignal, PiDetection, PiDetectionResult, Pattern } from './isl/index.js';
|
|
20
|
+
export { sanitize, emitSignal, createISLSignal, isHighRiskSignal, isMediumRiskSignal, isLowRiskSignal, RiskScoreStrategy, getCalculator, maxConfidenceCalculator, severityPlusVolumeCalculator, weightedByTypeCalculator, defaultWeightedByTypeCalculator, DEFAULT_TYPE_WEIGHTS } from './isl/index.js';
|
|
21
|
+
export type { RiskScore, ISLSegment, ISLResult, ISLSignal, ISLSignalMetadata, EmitSignalOptions, RiskScoreCalculator, PiDetection, PiDetectionResult, Pattern, SanitizeOptions } from './isl/index.js';
|
|
22
22
|
export { createPiDetection, getDetectionLength, isHighConfidence, isMediumConfidence, isLowConfidence, createPiDetectionResult, hasDetections, getDetectionCount, getDetectionsByType, getHighestConfidenceDetection, createPattern, matchesPattern, findMatch, MAX_CONTENT_LENGTH, MAX_PATTERN_LENGTH, MAX_MATCHES, createRiskScore, normalizeRiskScore, isHighRiskScore, isMediumRiskScore, isLowRiskScore, MIN_RISK_SCORE, MAX_RISK_SCORE, SanitizationError } from './isl/index.js';
|
|
23
|
-
export { addLineageEntry, addLineageEntries, filterLineageByStep, getLastLineageEntry, formatLineageForAudit, formatCSLForAudit, formatISLForAudit, formatISLSignalForAudit, formatAALForAudit, formatCPEForAudit, formatPipelineAudit } from './shared/index.js';
|
|
24
|
-
export type { LineageEntryLike, CSLResultLike, ISLResultLike, ISLSignalLike, DecisionReasonLike, RemovalPlanLike, CPEResultLike } from './shared/index.js';
|
|
23
|
+
export { addLineageEntry, addLineageEntries, filterLineageByStep, getLastLineageEntry, formatLineageForAudit, formatCSLForAudit, formatISLForAudit, formatISLSignalForAudit, formatAALForAudit, formatCPEForAudit, formatPipelineAudit, formatPipelineAuditFull, formatPipelineAuditAsJson, createAuditRunId, buildAuditLogEntry, buildFullAuditPayload } from './shared/index.js';
|
|
24
|
+
export type { LineageEntryLike, CSLResultLike, ISLResultLike, ISLSignalLike, DecisionReasonLike, RemovalPlanLike, CPEResultLike, AuditRunInfo, AuditLogSummary, FullPipelineAuditOptions, PipelineAuditJsonOptions } from './shared/index.js';
|
|
25
25
|
export { envelope, createNonce, isValidNonce, equalsNonce, createMetadata, isValidMetadata, CURRENT_PROTOCOL_VERSION, createSignature, EnvelopeError } from './cpe/index.js';
|
|
26
26
|
export type { Nonce, SignatureVO, ProtocolVersion, Timestamp, NonceValue, SignatureAlgorithm, Signature, CPEMetadata, CPEEvelope, CPEResult } from './cpe/index.js';
|
|
27
|
-
export { createAnomalyScore, isHighRisk, isLowRisk, isWarnRisk, isRoleProtected, isContextLeakPreventionEnabled, isInstructionImmutable, isIntentBlocked, isScopeSensitive, resolveAgentAction, resolveAgentActionWithScore, buildDecisionReason, buildRemovalPlan, buildAALLineage } from './AAL/index.js';
|
|
27
|
+
export { createAnomalyScore, isHighRisk, isLowRisk, isWarnRisk, isRoleProtected, isContextLeakPreventionEnabled, isInstructionImmutable, isIntentBlocked, isScopeSensitive, resolveAgentAction, resolveAgentActionWithScore, buildDecisionReason, buildRemovalPlan, buildRemovalPlanFromResult, applyRemovalPlan, buildAALLineage, ACTION_DISPLAY_COLORS, getActionDisplayColor } from './AAL/index.js';
|
|
28
28
|
export type { AnomalyAction, AnomalyScore, RemovedInstruction, BlockedIntent, SensitiveScope, ProtectedRole, ImmutableInstruction, AgentPolicy, DecisionReason, RemovalPlan } from './AAL/index.js';
|
|
29
29
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACV,aAAa,EACb,MAAM,EACN,QAAQ,EACR,UAAU,EACV,SAAS,EACT,UAAU,EACV,MAAM,EACN,YAAY,EACZ,WAAW,EACZ,MAAM,gBAAgB,CAAA;AAGvB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACV,aAAa,EACb,MAAM,EACN,QAAQ,EACR,UAAU,EACV,SAAS,EACT,UAAU,EACV,MAAM,EACN,YAAY,EACZ,WAAW,EACZ,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EACL,QAAQ,EACR,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,EACxB,+BAA+B,EAC/B,oBAAoB,EACrB,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,OAAO,EACP,eAAe,EAChB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,6BAA6B,EAC7B,aAAa,EACb,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,EAClB,MAAM,gBAAgB,CAAA;AAGvB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,eAAe,EACf,wBAAwB,EACxB,wBAAwB,EACzB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,wBAAwB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC5K,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAInK,OAAO,EACH,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,8BAA8B,EAC9B,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,2BAA2B,EAC3B,mBAAmB,EACnB,gBAAgB,EAChB,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACxB,MAAM,gBAAgB,CAAA;AAGvB,YAAY,EACR,aAAa,EACb,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,WAAW,EACd,MAAM,gBAAgB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -18,12 +18,12 @@
|
|
|
18
18
|
// Re-export CSL
|
|
19
19
|
export { segment, classifySource, classifyOrigin, initLineage, createLineageEntry, generateId, splitByContextRules, OriginType, TrustLevelType, ClassificationError, SegmentationError } from './csl/index.js';
|
|
20
20
|
// Re-export ISL
|
|
21
|
-
export { sanitize, emitSignal, createISLSignal, isHighRiskSignal, isMediumRiskSignal, isLowRiskSignal } from './isl/index.js';
|
|
21
|
+
export { sanitize, emitSignal, createISLSignal, isHighRiskSignal, isMediumRiskSignal, isLowRiskSignal, RiskScoreStrategy, getCalculator, maxConfidenceCalculator, severityPlusVolumeCalculator, weightedByTypeCalculator, defaultWeightedByTypeCalculator, DEFAULT_TYPE_WEIGHTS } from './isl/index.js';
|
|
22
22
|
export { createPiDetection, getDetectionLength, isHighConfidence, isMediumConfidence, isLowConfidence, createPiDetectionResult, hasDetections, getDetectionCount, getDetectionsByType, getHighestConfidenceDetection, createPattern, matchesPattern, findMatch, MAX_CONTENT_LENGTH, MAX_PATTERN_LENGTH, MAX_MATCHES, createRiskScore, normalizeRiskScore, isHighRiskScore, isMediumRiskScore, isLowRiskScore, MIN_RISK_SCORE, MAX_RISK_SCORE, SanitizationError } from './isl/index.js';
|
|
23
23
|
// Re-export Shared
|
|
24
|
-
export { addLineageEntry, addLineageEntries, filterLineageByStep, getLastLineageEntry, formatLineageForAudit, formatCSLForAudit, formatISLForAudit, formatISLSignalForAudit, formatAALForAudit, formatCPEForAudit, formatPipelineAudit } from './shared/index.js';
|
|
24
|
+
export { addLineageEntry, addLineageEntries, filterLineageByStep, getLastLineageEntry, formatLineageForAudit, formatCSLForAudit, formatISLForAudit, formatISLSignalForAudit, formatAALForAudit, formatCPEForAudit, formatPipelineAudit, formatPipelineAuditFull, formatPipelineAuditAsJson, createAuditRunId, buildAuditLogEntry, buildFullAuditPayload } from './shared/index.js';
|
|
25
25
|
// Re-export CPE
|
|
26
26
|
export { envelope, createNonce, isValidNonce, equalsNonce, createMetadata, isValidMetadata, CURRENT_PROTOCOL_VERSION, createSignature, EnvelopeError } from './cpe/index.js';
|
|
27
27
|
// Re-export AAL
|
|
28
|
-
export { createAnomalyScore, isHighRisk, isLowRisk, isWarnRisk, isRoleProtected, isContextLeakPreventionEnabled, isInstructionImmutable, isIntentBlocked, isScopeSensitive, resolveAgentAction, resolveAgentActionWithScore, buildDecisionReason, buildRemovalPlan, buildAALLineage } from './AAL/index.js';
|
|
28
|
+
export { createAnomalyScore, isHighRisk, isLowRisk, isWarnRisk, isRoleProtected, isContextLeakPreventionEnabled, isInstructionImmutable, isIntentBlocked, isScopeSensitive, resolveAgentAction, resolveAgentActionWithScore, buildDecisionReason, buildRemovalPlan, buildRemovalPlanFromResult, applyRemovalPlan, buildAALLineage, ACTION_DISPLAY_COLORS, getActionDisplayColor } from './AAL/index.js';
|
|
29
29
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,gBAAgB;AAChB,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,gBAAgB,CAAA;AAavB,gBAAgB;AAChB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,gBAAgB;AAChB,OAAO,EACL,OAAO,EACP,cAAc,EACd,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,mBAAmB,EACnB,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,gBAAgB,CAAA;AAavB,gBAAgB;AAChB,OAAO,EACL,QAAQ,EACR,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,EACxB,+BAA+B,EAC/B,oBAAoB,EACrB,MAAM,gBAAgB,CAAA;AAcvB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,6BAA6B,EAC7B,aAAa,EACb,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,EAClB,MAAM,gBAAgB,CAAA;AAEvB,mBAAmB;AACnB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,gBAAgB,EAChB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,mBAAmB,CAAA;AAe1B,gBAAgB;AAChB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,wBAAwB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAI5K,gBAAgB;AAChB,OAAO,EACH,kBAAkB,EAClB,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,8BAA8B,EAC9B,sBAAsB,EACtB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,2BAA2B,EAC3B,mBAAmB,EACnB,gBAAgB,EAChB,0BAA0B,EAC1B,gBAAgB,EAChB,eAAe,EACf,qBAAqB,EACrB,qBAAqB,EACxB,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ISL threat detection - pure, deterministic, single source of truth.
|
|
3
|
+
*
|
|
4
|
+
* Runs pattern-based detection on content and returns PiDetection[].
|
|
5
|
+
* No duplication: reuses Pattern, findAllMatches, createPiDetection.
|
|
6
|
+
* Same input → same output; bounded by MAX_TOTAL_DETECTIONS and per-pattern cap.
|
|
7
|
+
*/
|
|
8
|
+
import type { Pattern } from '../value-objects/Pattern.js';
|
|
9
|
+
import type { PiDetection } from '../value-objects/PiDetection.js';
|
|
10
|
+
/** Threat pattern type identifiers (deterministic taxonomy) */
|
|
11
|
+
export declare const THREAT_TYPES: {
|
|
12
|
+
readonly PROMPT_INJECTION: "prompt-injection";
|
|
13
|
+
readonly JAILBREAK: "jailbreak";
|
|
14
|
+
readonly ROLE_HIJACKING: "role_hijacking";
|
|
15
|
+
readonly SCRIPT_LIKE: "script_like";
|
|
16
|
+
readonly HIDDEN_TEXT: "hidden_text";
|
|
17
|
+
};
|
|
18
|
+
export type ThreatType = (typeof THREAT_TYPES)[keyof typeof THREAT_TYPES];
|
|
19
|
+
/** Returns default threat patterns (cached, frozen). */
|
|
20
|
+
export declare function getDefaultThreatPatterns(): readonly Pattern[];
|
|
21
|
+
export interface DetectThreatsOptions {
|
|
22
|
+
/** Max total detections to return (default: MAX_TOTAL_DETECTIONS) */
|
|
23
|
+
maxTotal?: number;
|
|
24
|
+
/** Max matches per pattern (default: MAX_PER_PATTERN) */
|
|
25
|
+
maxPerPattern?: number;
|
|
26
|
+
/** Override patterns (default: getDefaultThreatPatterns()) */
|
|
27
|
+
patterns?: readonly Pattern[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Detects threats in content using the configured patterns.
|
|
31
|
+
* Pure, deterministic: same content → same PiDetection[] (order preserved by pattern order then by match position).
|
|
32
|
+
* Bounded by maxTotal and maxPerPattern to avoid runaway.
|
|
33
|
+
*
|
|
34
|
+
* @param content - Segment or string to scan
|
|
35
|
+
* @param options - Optional caps and pattern override
|
|
36
|
+
* @returns Array of PiDetection (frozen); empty if none
|
|
37
|
+
*/
|
|
38
|
+
export declare function detectThreats(content: string, options?: DetectThreatsOptions): readonly PiDetection[];
|
|
39
|
+
//# sourceMappingURL=detect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../../src/isl/detect/detect.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAQlE,+DAA+D;AAC/D,eAAO,MAAM,YAAY;;;;;;CAMf,CAAA;AAEV,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,OAAO,YAAY,CAAC,CAAA;AA0TzE,wDAAwD;AACxD,wBAAgB,wBAAwB,IAAI,SAAS,OAAO,EAAE,CAG7D;AAED,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yDAAyD;IACzD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,SAAS,OAAO,EAAE,CAAA;CAC9B;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,oBAAyB,GACjC,SAAS,WAAW,EAAE,CAsCxB"}
|