@ai-pip/core 0.2.0 → 0.4.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 (133) hide show
  1. package/CHANGELOG.md +106 -3
  2. package/README.md +52 -951
  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 +5 -4
  8. package/dist/AAL/index.d.ts.map +1 -1
  9. package/dist/AAL/index.js +4 -2
  10. package/dist/AAL/index.js.map +1 -1
  11. package/dist/AAL/process/applyRemovalPlan.d.ts +23 -0
  12. package/dist/AAL/process/applyRemovalPlan.d.ts.map +1 -0
  13. package/dist/AAL/process/applyRemovalPlan.js +157 -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 +24 -4
  17. package/dist/AAL/process/buildDecisionReason.js.map +1 -1
  18. package/dist/AAL/process/buildRemediationPlan.d.ts +22 -0
  19. package/dist/AAL/process/buildRemediationPlan.d.ts.map +1 -0
  20. package/dist/AAL/process/buildRemediationPlan.js +81 -0
  21. package/dist/AAL/process/buildRemediationPlan.js.map +1 -0
  22. package/dist/AAL/process/buildRemovalPlan.d.ts +27 -9
  23. package/dist/AAL/process/buildRemovalPlan.d.ts.map +1 -1
  24. package/dist/AAL/process/buildRemovalPlan.js +95 -29
  25. package/dist/AAL/process/buildRemovalPlan.js.map +1 -1
  26. package/dist/AAL/process/index.d.ts +2 -2
  27. package/dist/AAL/process/index.d.ts.map +1 -1
  28. package/dist/AAL/process/index.js +2 -1
  29. package/dist/AAL/process/index.js.map +1 -1
  30. package/dist/AAL/process/resolveAgentAction.d.ts.map +1 -1
  31. package/dist/AAL/process/resolveAgentAction.js +13 -0
  32. package/dist/AAL/process/resolveAgentAction.js.map +1 -1
  33. package/dist/AAL/process/validatePolicy.d.ts +20 -0
  34. package/dist/AAL/process/validatePolicy.d.ts.map +1 -0
  35. package/dist/AAL/process/validatePolicy.js +40 -0
  36. package/dist/AAL/process/validatePolicy.js.map +1 -0
  37. package/dist/AAL/types.d.ts +18 -31
  38. package/dist/AAL/types.d.ts.map +1 -1
  39. package/dist/index.d.ts +9 -9
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +6 -6
  42. package/dist/index.js.map +1 -1
  43. package/dist/isl/detect/detect.d.ts +39 -0
  44. package/dist/isl/detect/detect.d.ts.map +1 -0
  45. package/dist/isl/detect/detect.js +369 -0
  46. package/dist/isl/detect/detect.js.map +1 -0
  47. package/dist/isl/detect/index.d.ts +6 -0
  48. package/dist/isl/detect/index.d.ts.map +1 -0
  49. package/dist/isl/detect/index.js +5 -0
  50. package/dist/isl/detect/index.js.map +1 -0
  51. package/dist/isl/index.d.ts +8 -1
  52. package/dist/isl/index.d.ts.map +1 -1
  53. package/dist/isl/index.js +5 -0
  54. package/dist/isl/index.js.map +1 -1
  55. package/dist/isl/process/emitSignal.d.ts +19 -10
  56. package/dist/isl/process/emitSignal.d.ts.map +1 -1
  57. package/dist/isl/process/emitSignal.js +25 -23
  58. package/dist/isl/process/emitSignal.js.map +1 -1
  59. package/dist/isl/process/index.d.ts +1 -0
  60. package/dist/isl/process/index.d.ts.map +1 -1
  61. package/dist/isl/riskScore/calculators.d.ts +19 -0
  62. package/dist/isl/riskScore/calculators.d.ts.map +1 -0
  63. package/dist/isl/riskScore/calculators.js +50 -0
  64. package/dist/isl/riskScore/calculators.js.map +1 -0
  65. package/dist/isl/riskScore/index.d.ts +14 -0
  66. package/dist/isl/riskScore/index.d.ts.map +1 -0
  67. package/dist/isl/riskScore/index.js +26 -0
  68. package/dist/isl/riskScore/index.js.map +1 -0
  69. package/dist/isl/riskScore/types.d.ts +20 -0
  70. package/dist/isl/riskScore/types.d.ts.map +1 -0
  71. package/dist/isl/riskScore/types.js +12 -0
  72. package/dist/isl/riskScore/types.js.map +1 -0
  73. package/dist/isl/sanitize.d.ts +8 -1
  74. package/dist/isl/sanitize.d.ts.map +1 -1
  75. package/dist/isl/sanitize.js +13 -5
  76. package/dist/isl/sanitize.js.map +1 -1
  77. package/dist/isl/signals.d.ts +16 -1
  78. package/dist/isl/signals.d.ts.map +1 -1
  79. package/dist/isl/signals.js +4 -2
  80. package/dist/isl/signals.js.map +1 -1
  81. package/dist/isl/value-objects/Pattern.d.ts +21 -0
  82. package/dist/isl/value-objects/Pattern.d.ts.map +1 -1
  83. package/dist/isl/value-objects/Pattern.js +36 -0
  84. package/dist/isl/value-objects/Pattern.js.map +1 -1
  85. package/dist/isl/value-objects/index.d.ts +2 -2
  86. package/dist/isl/value-objects/index.d.ts.map +1 -1
  87. package/dist/isl/value-objects/index.js +1 -1
  88. package/dist/isl/value-objects/index.js.map +1 -1
  89. package/dist/shared/audit.d.ts +126 -28
  90. package/dist/shared/audit.d.ts.map +1 -1
  91. package/dist/shared/audit.js +322 -44
  92. package/dist/shared/audit.js.map +1 -1
  93. package/dist/shared/envelope/envelope.d.ts +23 -0
  94. package/dist/shared/envelope/envelope.d.ts.map +1 -0
  95. package/dist/shared/envelope/envelope.js +58 -0
  96. package/dist/shared/envelope/envelope.js.map +1 -0
  97. package/dist/shared/envelope/exceptions/EnvelopeError.d.ts +8 -0
  98. package/dist/shared/envelope/exceptions/EnvelopeError.d.ts.map +1 -0
  99. package/dist/shared/envelope/exceptions/EnvelopeError.js +13 -0
  100. package/dist/shared/envelope/exceptions/EnvelopeError.js.map +1 -0
  101. package/dist/shared/envelope/exceptions/index.d.ts +2 -0
  102. package/dist/shared/envelope/exceptions/index.d.ts.map +1 -0
  103. package/dist/shared/envelope/exceptions/index.js +2 -0
  104. package/dist/shared/envelope/exceptions/index.js.map +1 -0
  105. package/dist/shared/envelope/index.d.ts +18 -0
  106. package/dist/shared/envelope/index.d.ts.map +1 -0
  107. package/dist/shared/envelope/index.js +15 -0
  108. package/dist/shared/envelope/index.js.map +1 -0
  109. package/dist/shared/envelope/types.d.ts +45 -0
  110. package/dist/shared/envelope/types.d.ts.map +1 -0
  111. package/dist/shared/envelope/types.js +10 -0
  112. package/dist/shared/envelope/types.js.map +1 -0
  113. package/dist/shared/envelope/value-objects/Metadata.d.ts +27 -0
  114. package/dist/shared/envelope/value-objects/Metadata.d.ts.map +1 -0
  115. package/dist/shared/envelope/value-objects/Metadata.js +57 -0
  116. package/dist/shared/envelope/value-objects/Metadata.js.map +1 -0
  117. package/dist/shared/envelope/value-objects/Nonce.d.ts +26 -0
  118. package/dist/shared/envelope/value-objects/Nonce.d.ts.map +1 -0
  119. package/dist/shared/envelope/value-objects/Nonce.js +38 -0
  120. package/dist/shared/envelope/value-objects/Nonce.js.map +1 -0
  121. package/dist/shared/envelope/value-objects/Signature.d.ts +28 -0
  122. package/dist/shared/envelope/value-objects/Signature.d.ts.map +1 -0
  123. package/dist/shared/envelope/value-objects/Signature.js +50 -0
  124. package/dist/shared/envelope/value-objects/Signature.js.map +1 -0
  125. package/dist/shared/envelope/value-objects/index.d.ts +9 -0
  126. package/dist/shared/envelope/value-objects/index.d.ts.map +1 -0
  127. package/dist/shared/envelope/value-objects/index.js +7 -0
  128. package/dist/shared/envelope/value-objects/index.js.map +1 -0
  129. package/dist/shared/index.d.ts +2 -2
  130. package/dist/shared/index.d.ts.map +1 -1
  131. package/dist/shared/index.js +1 -1
  132. package/dist/shared/index.js.map +1 -1
  133. package/package.json +11 -6
@@ -2,38 +2,40 @@
2
2
  * emitSignal - Emits an ISLSignal from an internal ISLResult
3
3
  *
4
4
  * @remarks
5
- * This function converts the internal ISL result (ISLResult)
6
- * into a semantic signal (ISLSignal) that can be consumed by other layers.
7
- *
8
- * **Responsibility:**
9
- * - Extract essential semantic information from internal result
10
- * - Create signal without exposing ISL internals
11
- * - Add risk score and detections
5
+ * Converts ISLResult into a semantic signal (ISLSignal) for AAL/SDK.
6
+ * Aggregates all segment detections (from detectThreats piDetection);
7
+ * hasThreats and riskScore are derived solely from that aggregation
8
+ * (no separate source of truth). Same ISLResult + same options → same ISLSignal (deterministic).
9
+ * Strategy is fixed at emit time; reflected in ISLSignal.metadata for auditability.
12
10
  */
13
11
  import { createISLSignal } from '../signals.js';
14
12
  import { createPiDetectionResult } from '../value-objects/PiDetectionResult.js';
15
- import { MIN_RISK_SCORE, createRiskScore } from '../value-objects/RiskScore.js';
13
+ import { MIN_RISK_SCORE, normalizeRiskScore } from '../value-objects/RiskScore.js';
14
+ import { RiskScoreStrategy } from '../riskScore/types.js';
15
+ import { getCalculator } from '../riskScore/index.js';
16
+ const DEFAULT_STRATEGY = RiskScoreStrategy.MAX_CONFIDENCE;
16
17
  /**
17
18
  * Emits an ISLSignal from an internal ISLResult
18
19
  *
19
20
  * @param islResult - Internal ISL result
20
- * @param timestamp - Signal timestamp (default: Date.now())
21
- * @returns ISLSignal - Semantic signal for external consumption
21
+ * @param options - Optional timestamp and risk score strategy (default: MAX_CONFIDENCE)
22
+ * @returns ISLSignal - Semantic signal for external consumption; metadata.strategy reflects strategy used
22
23
  */
23
- export function emitSignal(islResult, timestamp = Date.now()) {
24
- // Aggregate all detections from all segments
24
+ export function emitSignal(islResult, options = {}) {
25
+ const opts = typeof options === 'number' ? { timestamp: options } : options;
26
+ const timestamp = opts.timestamp ?? Date.now();
27
+ const strategy = opts.riskScore?.strategy ?? DEFAULT_STRATEGY;
28
+ const typeWeights = opts.riskScore?.typeWeights;
25
29
  const allDetections = islResult.segments
26
- .filter(segment => segment.piDetection)
27
- .flatMap(segment => segment.piDetection?.detections ?? []);
28
- // Create aggregated detection result
30
+ .filter((s) => s.piDetection != null)
31
+ .flatMap(s => s.piDetection.detections);
29
32
  const piDetection = createPiDetectionResult(allDetections);
30
- // Calculate aggregated risk score
31
- // If there are detections, use the detection result score
32
- // If no detections, use minimum score
33
- const riskScore = piDetection.detected
34
- ? createRiskScore(piDetection.score)
35
- : MIN_RISK_SCORE;
36
- // Create and return signal
37
- return createISLSignal(riskScore, piDetection, timestamp);
33
+ const calculator = getCalculator(strategy, typeWeights);
34
+ const rawScore = calculator.calculate(allDetections);
35
+ const riskScore = allDetections.length === 0
36
+ ? MIN_RISK_SCORE
37
+ : normalizeRiskScore(rawScore);
38
+ const metadata = Object.freeze({ strategy });
39
+ return createISLSignal(riskScore, piDetection, timestamp, metadata);
38
40
  }
39
41
  //# sourceMappingURL=emitSignal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"emitSignal.js","sourceRoot":"","sources":["../../../src/isl/process/emitSignal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAE/E;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,SAAoB,EACpB,YAAoB,IAAI,CAAC,GAAG,EAAE;IAE9B,6CAA6C;IAC7C,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ;SACrC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;SACtC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,IAAI,EAAE,CAAC,CAAA;IAE5D,qCAAqC;IACrC,MAAM,WAAW,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAA;IAE1D,kCAAkC;IAClC,0DAA0D;IAC1D,sCAAsC;IACtC,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ;QACpC,CAAC,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC;QACpC,CAAC,CAAC,cAAc,CAAA;IAElB,2BAA2B;IAC3B,OAAO,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;AAC3D,CAAC"}
1
+ {"version":3,"file":"emitSignal.js","sourceRoot":"","sources":["../../../src/isl/process/emitSignal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAarD,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,cAAc,CAAA;AAEzD;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,SAAoB,EACpB,UAAsC,EAAE;IAExC,MAAM,IAAI,GACR,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;IAChE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,CAAA;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,IAAI,gBAAgB,CAAA;IAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAA;IAE/C,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ;SACrC,MAAM,CAAC,CAAC,CAAC,EAAsE,EAAE,CAChF,CAAC,CAAC,WAAW,IAAI,IAAI,CACtB;SACA,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAA;IAEzC,MAAM,WAAW,GAAG,uBAAuB,CAAC,aAAa,CAAC,CAAA;IAC1D,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;IACvD,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;IACpD,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,KAAK,CAAC;QAC1C,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IAEhC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAA;IAC5C,OAAO,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;AACrE,CAAC"}
@@ -3,4 +3,5 @@
3
3
  */
4
4
  export { buildISLResult } from './buildISLResult.js';
5
5
  export { emitSignal } from './emitSignal.js';
6
+ export type { EmitSignalOptions } from './emitSignal.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/isl/process/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/isl/process/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Risk score calculators - pure, deterministic, no side effects.
3
+ * Only registered implementations; no custom inline strategies.
4
+ */
5
+ import type { RiskScoreCalculator } from './types.js';
6
+ /** Max confidence among all detections. Simple default. */
7
+ export declare const maxConfidenceCalculator: RiskScoreCalculator;
8
+ /** Max confidence plus a small bump per extra detection (volume). Clamped by caller. */
9
+ export declare const severityPlusVolumeCalculator: RiskScoreCalculator;
10
+ /**
11
+ * Weighted by pattern_type. Weights default to 1 if type not present.
12
+ * Returns a registered calculator (no inline custom logic).
13
+ */
14
+ export declare function weightedByTypeCalculator(weights: Record<string, number>): RiskScoreCalculator;
15
+ /** Default weights for WEIGHTED_BY_TYPE (all 1). Use for reproducible audits. */
16
+ export declare const DEFAULT_TYPE_WEIGHTS: Record<string, number>;
17
+ /** Pre-built weighted calculator with default weights. */
18
+ export declare const defaultWeightedByTypeCalculator: RiskScoreCalculator;
19
+ //# sourceMappingURL=calculators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculators.d.ts","sourceRoot":"","sources":["../../../src/isl/riskScore/calculators.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAGrD,2DAA2D;AAC3D,eAAO,MAAM,uBAAuB,EAAE,mBAMrC,CAAA;AAED,wFAAwF;AACxF,eAAO,MAAM,4BAA4B,EAAE,mBAO1C,CAAA;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,mBAAmB,CASrB;AAED,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAMtD,CAAA;AAEF,0DAA0D;AAC1D,eAAO,MAAM,+BAA+B,EAAE,mBACS,CAAA"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Risk score calculators - pure, deterministic, no side effects.
3
+ * Only registered implementations; no custom inline strategies.
4
+ */
5
+ import { RiskScoreStrategy } from './types.js';
6
+ /** Max confidence among all detections. Simple default. */
7
+ export const maxConfidenceCalculator = {
8
+ strategy: RiskScoreStrategy.MAX_CONFIDENCE,
9
+ calculate(detections) {
10
+ if (detections.length === 0)
11
+ return 0;
12
+ return Math.max(...detections.map((d) => d.confidence));
13
+ }
14
+ };
15
+ /** Max confidence plus a small bump per extra detection (volume). Clamped by caller. */
16
+ export const severityPlusVolumeCalculator = {
17
+ strategy: RiskScoreStrategy.SEVERITY_PLUS_VOLUME,
18
+ calculate(detections) {
19
+ if (detections.length === 0)
20
+ return 0;
21
+ const max = Math.max(...detections.map((d) => d.confidence));
22
+ return Math.min(1, max + 0.1 * (detections.length - 1));
23
+ }
24
+ };
25
+ /**
26
+ * Weighted by pattern_type. Weights default to 1 if type not present.
27
+ * Returns a registered calculator (no inline custom logic).
28
+ */
29
+ export function weightedByTypeCalculator(weights) {
30
+ return {
31
+ strategy: RiskScoreStrategy.WEIGHTED_BY_TYPE,
32
+ calculate(detections) {
33
+ if (detections.length === 0)
34
+ return 0;
35
+ const w = (d) => d.confidence * (weights[d.pattern_type] ?? 1);
36
+ return Math.min(1, Math.max(...detections.map(w)));
37
+ }
38
+ };
39
+ }
40
+ /** Default weights for WEIGHTED_BY_TYPE (all 1). Use for reproducible audits. */
41
+ export const DEFAULT_TYPE_WEIGHTS = Object.freeze({
42
+ 'prompt-injection': 1,
43
+ jailbreak: 1,
44
+ role_hijacking: 1,
45
+ script_like: 1,
46
+ hidden_text: 1
47
+ });
48
+ /** Pre-built weighted calculator with default weights. */
49
+ export const defaultWeightedByTypeCalculator = weightedByTypeCalculator({ ...DEFAULT_TYPE_WEIGHTS });
50
+ //# sourceMappingURL=calculators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calculators.js","sourceRoot":"","sources":["../../../src/isl/riskScore/calculators.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAI9C,2DAA2D;AAC3D,MAAM,CAAC,MAAM,uBAAuB,GAAwB;IAC1D,QAAQ,EAAE,iBAAiB,CAAC,cAAc;IAC1C,SAAS,CAAC,UAAkC;QAC1C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAA;QACrC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;IACzD,CAAC;CACF,CAAA;AAED,wFAAwF;AACxF,MAAM,CAAC,MAAM,4BAA4B,GAAwB;IAC/D,QAAQ,EAAE,iBAAiB,CAAC,oBAAoB;IAChD,SAAS,CAAC,UAAkC;QAC1C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,CAAC,CAAA;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAA;QAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IACzD,CAAC;CACF,CAAA;AAED;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CACtC,OAA+B;IAE/B,OAAO;QACL,QAAQ,EAAE,iBAAiB,CAAC,gBAAgB;QAC5C,SAAS,CAAC,UAAkC;YAC1C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAA;YACrC,MAAM,CAAC,GAAG,CAAC,CAAc,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;YAC3E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACpD,CAAC;KACF,CAAA;AACH,CAAC;AAED,iFAAiF;AACjF,MAAM,CAAC,MAAM,oBAAoB,GAA2B,MAAM,CAAC,MAAM,CAAC;IACxE,kBAAkB,EAAE,CAAC;IACrB,SAAS,EAAE,CAAC;IACZ,cAAc,EAAE,CAAC;IACjB,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,CAAC;CACf,CAAC,CAAA;AAEF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,+BAA+B,GAC1C,wBAAwB,CAAC,EAAE,GAAG,oBAAoB,EAAE,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * ISL risk score strategy - registered calculators only.
3
+ */
4
+ export { RiskScoreStrategy } from './types.js';
5
+ export type { RiskScoreCalculator } from './types.js';
6
+ export { maxConfidenceCalculator, severityPlusVolumeCalculator, weightedByTypeCalculator, defaultWeightedByTypeCalculator, DEFAULT_TYPE_WEIGHTS } from './calculators.js';
7
+ import { RiskScoreStrategy } from './types.js';
8
+ import type { RiskScoreCalculator } from './types.js';
9
+ /**
10
+ * Returns the registered calculator for the given strategy.
11
+ * For WEIGHTED_BY_TYPE without custom weights, uses default weights.
12
+ */
13
+ export declare function getCalculator(strategy: RiskScoreStrategy, typeWeights?: Record<string, number>): RiskScoreCalculator;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/isl/riskScore/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACrD,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,EACxB,+BAA+B,EAC/B,oBAAoB,EACrB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAQrD;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,iBAAiB,EAC3B,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,mBAAmB,CAarB"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * ISL risk score strategy - registered calculators only.
3
+ */
4
+ export { RiskScoreStrategy } from './types.js';
5
+ export { maxConfidenceCalculator, severityPlusVolumeCalculator, weightedByTypeCalculator, defaultWeightedByTypeCalculator, DEFAULT_TYPE_WEIGHTS } from './calculators.js';
6
+ import { RiskScoreStrategy } from './types.js';
7
+ import { defaultWeightedByTypeCalculator, maxConfidenceCalculator, severityPlusVolumeCalculator, weightedByTypeCalculator } from './calculators.js';
8
+ /**
9
+ * Returns the registered calculator for the given strategy.
10
+ * For WEIGHTED_BY_TYPE without custom weights, uses default weights.
11
+ */
12
+ export function getCalculator(strategy, typeWeights) {
13
+ switch (strategy) {
14
+ case RiskScoreStrategy.MAX_CONFIDENCE:
15
+ return maxConfidenceCalculator;
16
+ case RiskScoreStrategy.SEVERITY_PLUS_VOLUME:
17
+ return severityPlusVolumeCalculator;
18
+ case RiskScoreStrategy.WEIGHTED_BY_TYPE:
19
+ return typeWeights == null
20
+ ? defaultWeightedByTypeCalculator
21
+ : weightedByTypeCalculator(typeWeights);
22
+ default:
23
+ return maxConfidenceCalculator;
24
+ }
25
+ }
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/isl/riskScore/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,EACxB,+BAA+B,EAC/B,oBAAoB,EACrB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,OAAO,EACL,+BAA+B,EAC/B,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,EACzB,MAAM,kBAAkB,CAAA;AAEzB;;;GAGG;AACH,MAAM,UAAU,aAAa,CAC3B,QAA2B,EAC3B,WAAoC;IAEpC,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,iBAAiB,CAAC,cAAc;YACnC,OAAO,uBAAuB,CAAA;QAChC,KAAK,iBAAiB,CAAC,oBAAoB;YACzC,OAAO,4BAA4B,CAAA;QACrC,KAAK,iBAAiB,CAAC,gBAAgB;YACrC,OAAO,WAAW,IAAI,IAAI;gBACxB,CAAC,CAAC,+BAA+B;gBACjC,CAAC,CAAC,wBAAwB,CAAC,WAAW,CAAC,CAAA;QAC3C;YACE,OAAO,uBAAuB,CAAA;IAClC,CAAC;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Risk score strategy - registered strategies only (auditability, reproducibility).
3
+ * AAL and SDK do not choose the formula; the caller of emitSignal/sanitize does.
4
+ */
5
+ import type { PiDetection } from '../value-objects/PiDetection.js';
6
+ /** Registered risk score strategies. No custom inline strategies . */
7
+ export declare enum RiskScoreStrategy {
8
+ MAX_CONFIDENCE = "max-confidence",
9
+ SEVERITY_PLUS_VOLUME = "severity-plus-volume",
10
+ WEIGHTED_BY_TYPE = "weighted-by-type"
11
+ }
12
+ /**
13
+ * Pure, deterministic calculator: detections → raw score (caller clamps to [0,1]).
14
+ * Strategy is fixed per calculator; no side effects.
15
+ */
16
+ export interface RiskScoreCalculator {
17
+ readonly strategy: RiskScoreStrategy;
18
+ calculate(detections: readonly PiDetection[]): number;
19
+ }
20
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/isl/riskScore/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAA;AAElE,sEAAsE;AACtE,oBAAY,iBAAiB;IAC3B,cAAc,mBAAmB;IACjC,oBAAoB,yBAAyB;IAC7C,gBAAgB,qBAAqB;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;IACpC,SAAS,CAAC,UAAU,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,CAAA;CACtD"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Risk score strategy - registered strategies only (auditability, reproducibility).
3
+ * AAL and SDK do not choose the formula; the caller of emitSignal/sanitize does.
4
+ */
5
+ /** Registered risk score strategies. No custom inline strategies . */
6
+ export var RiskScoreStrategy;
7
+ (function (RiskScoreStrategy) {
8
+ RiskScoreStrategy["MAX_CONFIDENCE"] = "max-confidence";
9
+ RiskScoreStrategy["SEVERITY_PLUS_VOLUME"] = "severity-plus-volume";
10
+ RiskScoreStrategy["WEIGHTED_BY_TYPE"] = "weighted-by-type";
11
+ })(RiskScoreStrategy || (RiskScoreStrategy = {}));
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/isl/riskScore/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,sEAAsE;AACtE,MAAM,CAAN,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,sDAAiC,CAAA;IACjC,kEAA6C,CAAA;IAC7C,0DAAqC,CAAA;AACvC,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B"}
@@ -1,5 +1,11 @@
1
1
  import type { CSLResult } from '../csl/types.js';
2
2
  import type { ISLResult } from './types.js';
3
+ import type { DetectThreatsOptions } from './detect/index.js';
4
+ /** Options for sanitize. Enables flexible threat detection (e.g. custom patterns). */
5
+ export interface SanitizeOptions {
6
+ /** Passed to detectThreats per segment (e.g. patterns override/extend). */
7
+ readonly detectThreatsOptions?: DetectThreatsOptions;
8
+ }
3
9
  /**
4
10
  * Sanitizes content according to trust level - pure function
5
11
  *
@@ -8,6 +14,7 @@ import type { ISLResult } from './types.js';
8
14
  * - TC: Minimal sanitization
9
15
  * - STC: Moderate sanitization
10
16
  * - UC: Aggressive sanitization
17
+ * Threat detection uses default patterns unless detectThreatsOptions (e.g. patterns) is provided.
11
18
  */
12
- export declare function sanitize(cslResult: CSLResult): ISLResult;
19
+ export declare function sanitize(cslResult: CSLResult, options?: SanitizeOptions): ISLResult;
13
20
  //# sourceMappingURL=sanitize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/isl/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGhD,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,YAAY,CAAA;AAIvD;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS,CAqCxD"}
1
+ {"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/isl/sanitize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAGhD,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,YAAY,CAAA;AAIvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAG7D,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;CACrD;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,GAAE,eAAoB,GAAG,SAAS,CA2CvF"}
@@ -1,6 +1,8 @@
1
1
  import { TrustLevelType } from '../csl/types.js';
2
2
  import { buildISLLineage } from './lineage/buildISLLineage.js';
3
3
  import { buildISLResult } from './process/buildISLResult.js';
4
+ import { detectThreats } from './detect/index.js';
5
+ import { createPiDetectionResult } from './value-objects/PiDetectionResult.js';
4
6
  /**
5
7
  * Sanitizes content according to trust level - pure function
6
8
  *
@@ -9,25 +11,31 @@ import { buildISLResult } from './process/buildISLResult.js';
9
11
  * - TC: Minimal sanitization
10
12
  * - STC: Moderate sanitization
11
13
  * - UC: Aggressive sanitization
14
+ * Threat detection uses default patterns unless detectThreatsOptions (e.g. patterns) is provided.
12
15
  */
13
- export function sanitize(cslResult) {
16
+ export function sanitize(cslResult, options = {}) {
14
17
  const startTime = Date.now();
15
18
  const segments = [];
19
+ const detectOptions = options.detectThreatsOptions;
16
20
  for (const cslSegment of cslResult.segments) {
17
21
  // Determine sanitization level according to trust level
18
22
  const sanitizationLevel = getSanitizationLevel(cslSegment.trust);
19
23
  // Sanitize content according to level
20
24
  const sanitized = sanitizeContent(cslSegment.content, sanitizationLevel);
25
+ // Detect threats on sanitizedContent; positions are segment-local for downstream use (e.g. SDK/AI remediation).
26
+ const detections = detectThreats(sanitized.content, detectOptions);
27
+ const piDetection = detections.length > 0 ? createPiDetectionResult(detections) : undefined;
21
28
  // Build ISL lineage for this segment
22
29
  const segmentLineage = buildISLLineage(cslSegment.lineage, startTime);
23
- // Create sanitized segment
30
+ // Create sanitized segment with detections when present
24
31
  const islSegment = {
25
32
  id: cslSegment.id,
26
- originalContent: cslSegment.content, // ✅ Preserve original
33
+ originalContent: cslSegment.content,
27
34
  sanitizedContent: sanitized.content,
28
35
  trust: cslSegment.trust,
29
- lineage: [...segmentLineage], // Convert readonly to mutable for segment
30
- sanitizationLevel
36
+ lineage: [...segmentLineage],
37
+ sanitizationLevel,
38
+ ...(piDetection !== undefined && { piDetection })
31
39
  };
32
40
  segments.push(islSegment);
33
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/isl/sanitize.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,SAAoB;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAC5B,MAAM,QAAQ,GAAiB,EAAE,CAAA;IAGjC,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC5C,wDAAwD;QACxD,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAEhE,sCAAsC;QACtC,MAAM,SAAS,GAAG,eAAe,CAC/B,UAAU,CAAC,OAAO,EAClB,iBAAiB,CAClB,CAAA;QAED,qCAAqC;QACrC,MAAM,cAAc,GAAG,eAAe,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAErE,2BAA2B;QAC3B,MAAM,UAAU,GAAe;YAC7B,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,eAAe,EAAE,UAAU,CAAC,OAAO,EAAG,sBAAsB;YAC5D,gBAAgB,EAAE,SAAS,CAAC,OAAO;YACnC,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,OAAO,EAAE,CAAC,GAAG,cAAc,CAAC,EAAE,0CAA0C;YACxE,iBAAiB;SAClB,CAAA;QAED,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC3B,CAAC;IAED,yBAAyB;IACzB,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAEhE,sCAAsC;IACtC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;IAC7C,OAAO,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC,CAAA;AAC7D,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,KAAiB;IAC7C,IAAI,KAAK,CAAC,KAAK,KAAK,cAAc,CAAC,EAAE;QAAE,OAAO,SAAS,CAAA;IACvD,IAAI,KAAK,CAAC,KAAK,KAAK,cAAc,CAAC,GAAG;QAAE,OAAO,UAAU,CAAA;IACzD,OAAO,YAAY,CAAA,CAAE,KAAK;AAC5B,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CACtB,OAAe,EACf,MAA6C;IAE7C,oCAAoC;IACpC,oDAAoD;IACpD,OAAO;QACL,OAAO;KACR,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/isl/sanitize.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAEjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAA;AAQ9E;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CAAC,SAAoB,EAAE,UAA2B,EAAE;IAC1E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;IAC5B,MAAM,QAAQ,GAAiB,EAAE,CAAA;IACjC,MAAM,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAA;IAElD,KAAK,MAAM,UAAU,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QAC5C,wDAAwD;QACxD,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAEhE,sCAAsC;QACtC,MAAM,SAAS,GAAG,eAAe,CAC/B,UAAU,CAAC,OAAO,EAClB,iBAAiB,CAClB,CAAA;QAED,gHAAgH;QAChH,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC,CAAA;QAClE,MAAM,WAAW,GACf,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAEzE,qCAAqC;QACrC,MAAM,cAAc,GAAG,eAAe,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;QAErE,wDAAwD;QACxD,MAAM,UAAU,GAAe;YAC7B,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,eAAe,EAAE,UAAU,CAAC,OAAO;YACnC,gBAAgB,EAAE,SAAS,CAAC,OAAO;YACnC,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,OAAO,EAAE,CAAC,GAAG,cAAc,CAAC;YAC5B,iBAAiB;YACjB,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,CAAC;SAClD,CAAA;QAED,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC3B,CAAC;IAED,yBAAyB;IACzB,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAEhE,sCAAsC;IACtC,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;IAC7C,OAAO,cAAc,CAAC,QAAQ,EAAE,UAAU,EAAE,cAAc,CAAC,CAAA;AAC7D,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,KAAiB;IAC7C,IAAI,KAAK,CAAC,KAAK,KAAK,cAAc,CAAC,EAAE;QAAE,OAAO,SAAS,CAAA;IACvD,IAAI,KAAK,CAAC,KAAK,KAAK,cAAc,CAAC,GAAG;QAAE,OAAO,UAAU,CAAA;IACzD,OAAO,YAAY,CAAA,CAAE,KAAK;AAC5B,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CACtB,OAAe,EACf,MAA6C;IAE7C,oCAAoC;IACpC,oDAAoD;IACpD,OAAO;QACL,OAAO;KACR,CAAA;AACH,CAAC"}
@@ -29,6 +29,15 @@
29
29
  */
30
30
  import type { RiskScore } from './value-objects/RiskScore.js';
31
31
  import type { PiDetectionResult } from './value-objects/PiDetectionResult.js';
32
+ import type { RiskScoreStrategy } from './riskScore/types.js';
33
+ /**
34
+ * Metadata for the signal (auditability, reproducibility).
35
+ * Strategy is fixed at emit time; no per-segment or dynamic strategy.
36
+ */
37
+ export interface ISLSignalMetadata {
38
+ /** Risk score strategy used to compute riskScore. */
39
+ readonly strategy: RiskScoreStrategy;
40
+ }
32
41
  /**
33
42
  * ISLSignal - Semantic signal emitted by ISL
34
43
  *
@@ -56,6 +65,11 @@ export interface ISLSignal {
56
65
  * Useful for auditing and traceability.
57
66
  */
58
67
  readonly timestamp: number;
68
+ /**
69
+ * Optional metadata (e.g. risk score strategy used).
70
+ * Ensures auditability and reproducibility.
71
+ */
72
+ readonly metadata?: ISLSignalMetadata;
59
73
  }
60
74
  /**
61
75
  * Creates an ISLSignal from an internal ISLResult
@@ -67,9 +81,10 @@ export interface ISLSignal {
67
81
  * @param riskScore - Risk score value
68
82
  * @param piDetection - Prompt injection detection result
69
83
  * @param timestamp - Timestamp of the signal (default: Date.now())
84
+ * @param metadata - Optional metadata (e.g. risk score strategy) for auditability
70
85
  * @returns ISLSignal - Semantic signal for external consumption
71
86
  */
72
- export declare function createISLSignal(riskScore: RiskScore, piDetection: PiDetectionResult, timestamp?: number): ISLSignal;
87
+ export declare function createISLSignal(riskScore: RiskScore, piDetection: PiDetectionResult, timestamp?: number, metadata?: ISLSignalMetadata): ISLSignal;
73
88
  /**
74
89
  * Checks if the signal indicates high risk
75
90
  *
@@ -1 +1 @@
1
- {"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/isl/signals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAE7E;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAE7B;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAA;IAEvC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAE5B;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,iBAAiB,EAC9B,SAAS,GAAE,MAAmB,GAC7B,SAAS,CAqBX;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,GAAE,MAAY,GAAG,OAAO,CAEpF;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,YAAY,GAAE,MAAY,EAC1B,aAAa,GAAE,MAAY,GAC1B,OAAO,CAET;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,GAAE,MAAY,GAAG,OAAO,CAEnF"}
1
+ {"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/isl/signals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAA;AAC7E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAE7D;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAA;CACrC;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAE7B;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAA;IAEvC;;;OAGG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAE5B;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAE1B;;;OAGG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAA;CACtC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,iBAAiB,EAC9B,SAAS,GAAE,MAAmB,EAC9B,QAAQ,CAAC,EAAE,iBAAiB,GAC3B,SAAS,CAsBX;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,GAAE,MAAY,GAAG,OAAO,CAEpF;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,SAAS,EACjB,YAAY,GAAE,MAAY,EAC1B,aAAa,GAAE,MAAY,GAC1B,OAAO,CAET;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,GAAE,MAAY,GAAG,OAAO,CAEnF"}
@@ -37,9 +37,10 @@
37
37
  * @param riskScore - Risk score value
38
38
  * @param piDetection - Prompt injection detection result
39
39
  * @param timestamp - Timestamp of the signal (default: Date.now())
40
+ * @param metadata - Optional metadata (e.g. risk score strategy) for auditability
40
41
  * @returns ISLSignal - Semantic signal for external consumption
41
42
  */
42
- export function createISLSignal(riskScore, piDetection, timestamp = Date.now()) {
43
+ export function createISLSignal(riskScore, piDetection, timestamp = Date.now(), metadata) {
43
44
  // Validar riskScore
44
45
  if (typeof riskScore !== 'number' || !Number.isFinite(riskScore)) {
45
46
  throw new TypeError('ISLSignal riskScore must be a valid number');
@@ -55,7 +56,8 @@ export function createISLSignal(riskScore, piDetection, timestamp = Date.now())
55
56
  riskScore,
56
57
  piDetection,
57
58
  hasThreats: piDetection.detected,
58
- timestamp
59
+ timestamp,
60
+ ...(metadata != null && { metadata: Object.freeze(metadata) })
59
61
  };
60
62
  }
61
63
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"signals.js","sourceRoot":"","sources":["../../src/isl/signals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAqCH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAC7B,SAAoB,EACpB,WAA8B,EAC9B,YAAoB,IAAI,CAAC,GAAG,EAAE;IAE9B,oBAAoB;IACpB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAA;IACnE,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAChE,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IAC5E,CAAC;IAED,OAAO;QACL,SAAS;QACT,WAAW;QACX,UAAU,EAAE,WAAW,CAAC,QAAQ;QAChC,SAAS;KACV,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,YAAoB,GAAG;IACzE,OAAO,MAAM,CAAC,SAAS,IAAI,SAAS,CAAA;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAiB,EACjB,eAAuB,GAAG,EAC1B,gBAAwB,GAAG;IAE3B,OAAO,MAAM,CAAC,SAAS,IAAI,YAAY,IAAI,MAAM,CAAC,SAAS,GAAG,aAAa,CAAA;AAC7E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,MAAiB,EAAE,YAAoB,GAAG;IACxE,OAAO,MAAM,CAAC,SAAS,GAAG,SAAS,CAAA;AACrC,CAAC"}
1
+ {"version":3,"file":"signals.js","sourceRoot":"","sources":["../../src/isl/signals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAqDH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAC7B,SAAoB,EACpB,WAA8B,EAC9B,YAAoB,IAAI,CAAC,GAAG,EAAE,EAC9B,QAA4B;IAE5B,oBAAoB;IACpB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAA;IACnE,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAChE,CAAC;IAED,oBAAoB;IACpB,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClF,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IAC5E,CAAC;IAED,OAAO;QACL,SAAS;QACT,WAAW;QACX,UAAU,EAAE,WAAW,CAAC,QAAQ;QAChC,SAAS;QACT,GAAG,CAAC,QAAQ,IAAI,IAAI,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;KAC/D,CAAA;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,YAAoB,GAAG;IACzE,OAAO,MAAM,CAAC,SAAS,IAAI,SAAS,CAAA;AACtC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAiB,EACjB,eAAuB,GAAG,EAC1B,gBAAwB,GAAG;IAE3B,OAAO,MAAM,CAAC,SAAS,IAAI,YAAY,IAAI,MAAM,CAAC,SAAS,GAAG,aAAa,CAAA;AAC7E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,MAAiB,EAAE,YAAoB,GAAG;IACxE,OAAO,MAAM,CAAC,SAAS,GAAG,SAAS,CAAA;AACrC,CAAC"}
@@ -22,6 +22,27 @@ export declare function createPattern(pattern_type: string, regex: string | RegE
22
22
  * Funciones puras para Pattern matching
23
23
  */
24
24
  export declare function matchesPattern(pattern: Pattern, content: string): boolean;
25
+ /**
26
+ * Single match result for findAllMatches
27
+ */
28
+ export type PatternMatch = {
29
+ readonly matched: string;
30
+ readonly position: {
31
+ start: number;
32
+ end: number;
33
+ };
34
+ };
35
+ /**
36
+ * Finds all non-overlapping matches of a pattern in content.
37
+ * Uses a global clone of the pattern regex so each exec() call advances.
38
+ * Caps at MAX_MATCHES to avoid runaway on zero-width or many matches.
39
+ *
40
+ * @param pattern - Pattern to match
41
+ * @param content - Content to scan
42
+ * @param maxMatches - Cap on number of matches returned (default: MAX_MATCHES)
43
+ * @returns Array of { matched, position } (empty if no matches)
44
+ */
45
+ export declare function findAllMatches(pattern: Pattern, content: string, maxMatches?: number): PatternMatch[];
25
46
  export declare function findMatch(pattern: Pattern, content: string): {
26
47
  matched: string;
27
48
  position: {
@@ -1 +1 @@
1
- {"version":3,"file":"Pattern.d.ts","sourceRoot":"","sources":["../../../src/isl/value-objects/Pattern.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAA;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,WAAa,CAAA;AAC5C,eAAO,MAAM,kBAAkB,QAAS,CAAA;AACxC,eAAO,MAAM,WAAW,QAAS,CAAA;AA6DjC;;GAEG;AACH,wBAAgB,aAAa,CAC3B,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,eAAe,EAAE,SAAS,EAC1B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAyBT;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAYzE;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG;IAC5D,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CACzC,GAAG,IAAI,CAuBP"}
1
+ {"version":3,"file":"Pattern.d.ts","sourceRoot":"","sources":["../../../src/isl/value-objects/Pattern.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAA;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,WAAa,CAAA;AAC5C,eAAO,MAAM,kBAAkB,QAAS,CAAA;AACxC,eAAO,MAAM,WAAW,QAAS,CAAA;AA6DjC;;GAEG;AACH,wBAAgB,aAAa,CAC3B,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,GAAG,MAAM,EACtB,eAAe,EAAE,SAAS,EAC1B,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAyBT;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAYzE;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CAClD,CAAA;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,MAAM,EACf,UAAU,GAAE,MAAoB,GAC/B,YAAY,EAAE,CA6BhB;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG;IAC5D,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;CACzC,GAAG,IAAI,CAuBP"}
@@ -94,6 +94,42 @@ export function matchesPattern(pattern, content) {
94
94
  }
95
95
  return pattern.regex.test(content);
96
96
  }
97
+ /**
98
+ * Finds all non-overlapping matches of a pattern in content.
99
+ * Uses a global clone of the pattern regex so each exec() call advances.
100
+ * Caps at MAX_MATCHES to avoid runaway on zero-width or many matches.
101
+ *
102
+ * @param pattern - Pattern to match
103
+ * @param content - Content to scan
104
+ * @param maxMatches - Cap on number of matches returned (default: MAX_MATCHES)
105
+ * @returns Array of { matched, position } (empty if no matches)
106
+ */
107
+ export function findAllMatches(pattern, content, maxMatches = MAX_MATCHES) {
108
+ if (!content || typeof content !== 'string') {
109
+ throw new TypeError('Pattern.findAllMatches: content must be a non-empty string');
110
+ }
111
+ if (content.length > MAX_CONTENT_LENGTH) {
112
+ throw new Error(`Pattern.findAllMatches: Content length (${content.length}) exceeds maximum allowed length (${MAX_CONTENT_LENGTH})`);
113
+ }
114
+ if (maxMatches <= 0) {
115
+ return [];
116
+ }
117
+ const flags = pattern.regex.flags.includes('g') ? pattern.regex.flags : pattern.regex.flags + 'g';
118
+ const globalRegex = new RegExp(pattern.regex.source, flags);
119
+ const results = [];
120
+ let match;
121
+ while (results.length < maxMatches && (match = globalRegex.exec(content)) !== null) {
122
+ results.push({
123
+ matched: match[0],
124
+ position: { start: match.index, end: match.index + match[0].length }
125
+ });
126
+ // Guard: zero-width match would make exec() not advance and loop forever
127
+ if (match[0].length === 0) {
128
+ break;
129
+ }
130
+ }
131
+ return results;
132
+ }
97
133
  export function findMatch(pattern, content) {
98
134
  if (!content || typeof content !== 'string') {
99
135
  throw new TypeError('Pattern.findMatch: content must be a non-empty string');
@@ -1 +1 @@
1
- {"version":3,"file":"Pattern.js","sourceRoot":"","sources":["../../../src/isl/value-objects/Pattern.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Pattern.js","sourceRoot":"","sources":["../../../src/isl/value-objects/Pattern.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  export type { PiDetection } from './PiDetection.js';
2
2
  export type { PiDetectionResult } from './PiDetectionResult.js';
3
- export type { Pattern } from './Pattern.js';
3
+ export type { Pattern, PatternMatch } from './Pattern.js';
4
4
  export type { RiskScore } from './RiskScore.js';
5
5
  export { createPiDetection, getDetectionLength, isHighConfidence, isMediumConfidence, isLowConfidence } from './PiDetection.js';
6
6
  export { createPiDetectionResult, hasDetections, getDetectionCount, getDetectionsByType, getHighestConfidenceDetection } from './PiDetectionResult.js';
7
- export { createPattern, matchesPattern, findMatch, MAX_CONTENT_LENGTH, MAX_PATTERN_LENGTH, MAX_MATCHES } from './Pattern.js';
7
+ export { createPattern, matchesPattern, findMatch, findAllMatches, MAX_CONTENT_LENGTH, MAX_PATTERN_LENGTH, MAX_MATCHES } from './Pattern.js';
8
8
  export { createRiskScore, normalizeRiskScore, isHighRiskScore, isMediumRiskScore, isLowRiskScore, MIN_RISK_SCORE, MAX_RISK_SCORE } from './RiskScore.js';
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/isl/value-objects/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC3C,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,6BAA6B,EAC9B,MAAM,wBAAwB,CAAA;AAI/B,OAAO,EACL,aAAa,EACb,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACZ,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACf,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/isl/value-objects/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AACzD,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,6BAA6B,EAC9B,MAAM,wBAAwB,CAAA;AAI/B,OAAO,EACL,aAAa,EACb,cAAc,EACd,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACZ,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACf,MAAM,gBAAgB,CAAA"}
@@ -1,6 +1,6 @@
1
1
  // Funciones de creación
2
2
  export { createPiDetection, getDetectionLength, isHighConfidence, isMediumConfidence, isLowConfidence } from './PiDetection.js';
3
3
  export { createPiDetectionResult, hasDetections, getDetectionCount, getDetectionsByType, getHighestConfidenceDetection } from './PiDetectionResult.js';
4
- export { createPattern, matchesPattern, findMatch, MAX_CONTENT_LENGTH, MAX_PATTERN_LENGTH, MAX_MATCHES } from './Pattern.js';
4
+ export { createPattern, matchesPattern, findMatch, findAllMatches, MAX_CONTENT_LENGTH, MAX_PATTERN_LENGTH, MAX_MATCHES } from './Pattern.js';
5
5
  export { createRiskScore, normalizeRiskScore, isHighRiskScore, isMediumRiskScore, isLowRiskScore, MIN_RISK_SCORE, MAX_RISK_SCORE } from './RiskScore.js';
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/isl/value-objects/index.ts"],"names":[],"mappings":"AAKA,wBAAwB;AACxB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,6BAA6B,EAC9B,MAAM,wBAAwB,CAAA;AAI/B,OAAO,EACL,aAAa,EACb,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACZ,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACf,MAAM,gBAAgB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/isl/value-objects/index.ts"],"names":[],"mappings":"AAKA,wBAAwB;AACxB,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,6BAA6B,EAC9B,MAAM,wBAAwB,CAAA;AAI/B,OAAO,EACL,aAAa,EACb,cAAc,EACd,SAAS,EACT,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACZ,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,cAAc,EACf,MAAM,gBAAgB,CAAA"}