@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.
Files changed (89) hide show
  1. package/CHANGELOG.md +66 -2
  2. package/README.md +107 -18
  3. package/dist/AAL/constants.d.ts +15 -0
  4. package/dist/AAL/constants.d.ts.map +1 -0
  5. package/dist/AAL/constants.js +20 -0
  6. package/dist/AAL/constants.js.map +1 -0
  7. package/dist/AAL/index.d.ts +2 -1
  8. package/dist/AAL/index.d.ts.map +1 -1
  9. package/dist/AAL/index.js +3 -1
  10. package/dist/AAL/index.js.map +1 -1
  11. package/dist/AAL/process/applyRemovalPlan.d.ts +21 -0
  12. package/dist/AAL/process/applyRemovalPlan.d.ts.map +1 -0
  13. package/dist/AAL/process/applyRemovalPlan.js +150 -0
  14. package/dist/AAL/process/applyRemovalPlan.js.map +1 -0
  15. package/dist/AAL/process/buildDecisionReason.d.ts.map +1 -1
  16. package/dist/AAL/process/buildDecisionReason.js +26 -4
  17. package/dist/AAL/process/buildDecisionReason.js.map +1 -1
  18. package/dist/AAL/process/buildRemovalPlan.d.ts +17 -10
  19. package/dist/AAL/process/buildRemovalPlan.d.ts.map +1 -1
  20. package/dist/AAL/process/buildRemovalPlan.js +84 -30
  21. package/dist/AAL/process/buildRemovalPlan.js.map +1 -1
  22. package/dist/AAL/process/index.d.ts +2 -1
  23. package/dist/AAL/process/index.d.ts.map +1 -1
  24. package/dist/AAL/process/index.js +2 -1
  25. package/dist/AAL/process/index.js.map +1 -1
  26. package/dist/AAL/process/resolveAgentAction.d.ts.map +1 -1
  27. package/dist/AAL/process/resolveAgentAction.js +24 -0
  28. package/dist/AAL/process/resolveAgentAction.js.map +1 -1
  29. package/dist/AAL/types.d.ts +11 -7
  30. package/dist/AAL/types.d.ts.map +1 -1
  31. package/dist/index.d.ts +5 -5
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +3 -3
  34. package/dist/index.js.map +1 -1
  35. package/dist/isl/detect/detect.d.ts +39 -0
  36. package/dist/isl/detect/detect.d.ts.map +1 -0
  37. package/dist/isl/detect/detect.js +369 -0
  38. package/dist/isl/detect/detect.js.map +1 -0
  39. package/dist/isl/detect/index.d.ts +6 -0
  40. package/dist/isl/detect/index.d.ts.map +1 -0
  41. package/dist/isl/detect/index.js +5 -0
  42. package/dist/isl/detect/index.js.map +1 -0
  43. package/dist/isl/index.d.ts +8 -1
  44. package/dist/isl/index.d.ts.map +1 -1
  45. package/dist/isl/index.js +5 -0
  46. package/dist/isl/index.js.map +1 -1
  47. package/dist/isl/process/emitSignal.d.ts +19 -10
  48. package/dist/isl/process/emitSignal.d.ts.map +1 -1
  49. package/dist/isl/process/emitSignal.js +25 -23
  50. package/dist/isl/process/emitSignal.js.map +1 -1
  51. package/dist/isl/process/index.d.ts +1 -0
  52. package/dist/isl/process/index.d.ts.map +1 -1
  53. package/dist/isl/riskScore/calculators.d.ts +19 -0
  54. package/dist/isl/riskScore/calculators.d.ts.map +1 -0
  55. package/dist/isl/riskScore/calculators.js +50 -0
  56. package/dist/isl/riskScore/calculators.js.map +1 -0
  57. package/dist/isl/riskScore/index.d.ts +14 -0
  58. package/dist/isl/riskScore/index.d.ts.map +1 -0
  59. package/dist/isl/riskScore/index.js +26 -0
  60. package/dist/isl/riskScore/index.js.map +1 -0
  61. package/dist/isl/riskScore/types.d.ts +20 -0
  62. package/dist/isl/riskScore/types.d.ts.map +1 -0
  63. package/dist/isl/riskScore/types.js +12 -0
  64. package/dist/isl/riskScore/types.js.map +1 -0
  65. package/dist/isl/sanitize.d.ts +8 -1
  66. package/dist/isl/sanitize.d.ts.map +1 -1
  67. package/dist/isl/sanitize.js +13 -5
  68. package/dist/isl/sanitize.js.map +1 -1
  69. package/dist/isl/signals.d.ts +16 -1
  70. package/dist/isl/signals.d.ts.map +1 -1
  71. package/dist/isl/signals.js +4 -2
  72. package/dist/isl/signals.js.map +1 -1
  73. package/dist/isl/value-objects/Pattern.d.ts +21 -0
  74. package/dist/isl/value-objects/Pattern.d.ts.map +1 -1
  75. package/dist/isl/value-objects/Pattern.js +36 -0
  76. package/dist/isl/value-objects/Pattern.js.map +1 -1
  77. package/dist/isl/value-objects/index.d.ts +2 -2
  78. package/dist/isl/value-objects/index.d.ts.map +1 -1
  79. package/dist/isl/value-objects/index.js +1 -1
  80. package/dist/isl/value-objects/index.js.map +1 -1
  81. package/dist/shared/audit.d.ts +116 -16
  82. package/dist/shared/audit.d.ts.map +1 -1
  83. package/dist/shared/audit.js +314 -32
  84. package/dist/shared/audit.js.map +1 -1
  85. package/dist/shared/index.d.ts +2 -2
  86. package/dist/shared/index.d.ts.map +1 -1
  87. package/dist/shared/index.js +1 -1
  88. package/dist/shared/index.js.map +1 -1
  89. 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 (islSignal.hasThreats) {
37
- reason += `. ${islSignal.piDetection.detections.length} threat(s) detected.`;
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: islSignal.hasThreats,
45
- detectionCount: islSignal.piDetection.detections.length
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,SAAS,CAAC,UAAU,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,sBAAsB,CAAA;IAC9E,CAAC;IAED,OAAO;QACL,MAAM;QACN,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,SAAS;QACT,MAAM;QACN,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,cAAc,EAAE,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM;KACxD,CAAA;AACH,CAAC"}
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
- * This function builds a plan of which instructions should be removed
6
- * based on ISL detections and agent policy.
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;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C;;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;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,GAClB,WAAW,CAkCb"}
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
- * This function builds a plan of which instructions should be removed
6
- * based on ISL detections and agent policy.
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
- // If removal is not enabled, return empty plan
22
- if (!policy.removal.enabled) {
23
- return {
24
- instructionsToRemove: Object.freeze([]),
25
- shouldRemove: false,
26
- removalEnabled: false
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
- // If no threats detected, nothing to remove
30
- if (!islSignal.hasThreats) {
31
- return {
32
- instructionsToRemove: Object.freeze([]),
33
- shouldRemove: false,
34
- removalEnabled: true
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;;;;;;;;;;;GAWG;AAeH;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAoB,EACpB,MAAmB;IAEnB,+CAA+C;IAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAC5B,OAAO;YACL,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;SACtB,CAAA;IACH,CAAC;IAED,4CAA4C;IAC5C,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAC1B,OAAO;YACL,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACvC,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,IAAI;SACrB,CAAA;IACH,CAAC;IAED,uDAAuD;IACvD,MAAM,oBAAoB,GAAyB,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,GAAG,CACrF,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACd,IAAI,EAAE,SAAS,CAAC,YAA0C;QAC1D,OAAO,EAAE,SAAS,CAAC,eAAe;QAClC,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,WAAW,EAAE,YAAY,SAAS,CAAC,YAAY,4BAA4B,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;KAC7G,CAAC,CACH,CAAA;IAED,OAAO;QACL,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC;QACzD,YAAY,EAAE,oBAAoB,CAAC,MAAM,GAAG,CAAC;QAC7C,cAAc,EAAE,IAAI;KACrB,CAAA;AACH,CAAC"}
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;AACxD,YAAY,EAAE,WAAW,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;AAG7D;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,GAClB,aAAa,CAaf;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,WAAW,2DAIpB"}
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"}
@@ -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
- * This interface is descriptive only.
50
- * The actual removal is performed by the SDK.
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: 'system_command' | 'role_swapping' | 'jailbreak' | 'override' | 'manipulation';
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 original content.
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
@@ -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;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,CAAC,IAAI,EACT,gBAAgB,GAChB,eAAe,GACf,WAAW,GACX,UAAU,GACV,cAAc,CAAA;IAElB;;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;CAC7B;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"}
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
@@ -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,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAC7H,YAAY,EACV,SAAS,EACT,UAAU,EACV,SAAS,EACT,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,OAAO,EACR,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,EACpB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,aAAa,EACd,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,eAAe,EAClB,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"}
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,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAU7H,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,EACpB,MAAM,mBAAmB,CAAA;AAW1B,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,eAAe,EAClB,MAAM,gBAAgB,CAAA"}
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"}