@ai-pip/core 0.1.2 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +102 -9
- package/dist/cpe/envelope.d.ts +34 -0
- package/dist/cpe/envelope.d.ts.map +1 -0
- package/dist/cpe/envelope.js +70 -0
- package/dist/cpe/envelope.js.map +1 -0
- package/dist/cpe/exceptions/EnvelopeError.d.ts +8 -0
- package/dist/cpe/exceptions/EnvelopeError.d.ts.map +1 -0
- package/dist/cpe/exceptions/EnvelopeError.js +13 -0
- package/dist/cpe/exceptions/EnvelopeError.js.map +1 -0
- package/dist/cpe/exceptions/index.d.ts +5 -0
- package/dist/cpe/exceptions/index.d.ts.map +1 -0
- package/dist/cpe/exceptions/index.js +5 -0
- package/dist/cpe/exceptions/index.js.map +1 -0
- package/dist/cpe/index.d.ts +24 -0
- package/dist/cpe/index.d.ts.map +1 -0
- package/dist/cpe/index.js +26 -0
- package/dist/cpe/index.js.map +1 -0
- package/dist/cpe/types.d.ts +58 -0
- package/dist/cpe/types.d.ts.map +1 -0
- package/dist/cpe/types.js +5 -0
- package/dist/cpe/types.js.map +1 -0
- package/dist/cpe/utils.d.ts +38 -0
- package/dist/cpe/utils.d.ts.map +1 -0
- package/dist/cpe/utils.js +47 -0
- package/dist/cpe/utils.js.map +1 -0
- package/dist/cpe/value-objects/Metadata.d.ts +32 -0
- package/dist/cpe/value-objects/Metadata.d.ts.map +1 -0
- package/dist/cpe/value-objects/Metadata.js +65 -0
- package/dist/cpe/value-objects/Metadata.js.map +1 -0
- package/dist/cpe/value-objects/Nonce.d.ts +33 -0
- package/dist/cpe/value-objects/Nonce.d.ts.map +1 -0
- package/dist/cpe/value-objects/Nonce.js +44 -0
- package/dist/cpe/value-objects/Nonce.js.map +1 -0
- package/dist/cpe/value-objects/Signature.d.ts +39 -0
- package/dist/cpe/value-objects/Signature.d.ts.map +1 -0
- package/dist/cpe/value-objects/Signature.js +60 -0
- package/dist/cpe/value-objects/Signature.js.map +1 -0
- package/dist/cpe/value-objects/index.d.ts +9 -0
- package/dist/cpe/value-objects/index.d.ts.map +1 -0
- package/dist/cpe/value-objects/index.js +7 -0
- package/dist/cpe/value-objects/index.js.map +1 -0
- package/dist/csl/classify.d.ts +35 -0
- package/dist/csl/classify.d.ts.map +1 -0
- package/dist/csl/classify.js +62 -0
- package/dist/csl/classify.js.map +1 -0
- package/dist/csl/exceptions/ClassificationError.d.ts +12 -0
- package/dist/csl/exceptions/ClassificationError.d.ts.map +1 -0
- package/dist/csl/exceptions/ClassificationError.js +16 -0
- package/dist/csl/exceptions/ClassificationError.js.map +1 -0
- package/dist/csl/exceptions/SegmentationError.d.ts +13 -0
- package/dist/csl/exceptions/SegmentationError.d.ts.map +1 -0
- package/dist/csl/exceptions/SegmentationError.js +18 -0
- package/dist/csl/exceptions/SegmentationError.js.map +1 -0
- package/dist/csl/exceptions/index.d.ts +3 -0
- package/dist/csl/exceptions/index.d.ts.map +1 -0
- package/dist/csl/exceptions/index.js +3 -0
- package/dist/csl/exceptions/index.js.map +1 -0
- package/dist/csl/index.d.ts +27 -0
- package/dist/csl/index.d.ts.map +1 -0
- package/dist/csl/index.js +29 -0
- package/dist/csl/index.js.map +1 -0
- package/dist/csl/lineage.d.ts +31 -0
- package/dist/csl/lineage.d.ts.map +1 -0
- package/dist/csl/lineage.js +36 -0
- package/dist/csl/lineage.js.map +1 -0
- package/dist/csl/segment.d.ts +35 -0
- package/dist/csl/segment.d.ts.map +1 -0
- package/dist/csl/segment.js +90 -0
- package/dist/csl/segment.js.map +1 -0
- package/dist/csl/types.d.ts +97 -0
- package/dist/csl/types.d.ts.map +1 -0
- package/dist/csl/types.js +62 -0
- package/dist/csl/types.js.map +1 -0
- package/dist/csl/utils.d.ts +16 -0
- package/dist/csl/utils.d.ts.map +1 -0
- package/dist/csl/utils.js +27 -0
- package/dist/csl/utils.js.map +1 -0
- package/dist/csl/value-objects/ContentHash.d.ts +18 -0
- package/dist/csl/value-objects/ContentHash.d.ts.map +1 -0
- package/dist/csl/value-objects/ContentHash.js +33 -0
- package/dist/csl/value-objects/ContentHash.js.map +1 -0
- package/dist/csl/value-objects/LineageEntry.d.ts +20 -0
- package/dist/csl/value-objects/LineageEntry.d.ts.map +1 -0
- package/dist/csl/value-objects/LineageEntry.js +20 -0
- package/dist/csl/value-objects/LineageEntry.js.map +1 -0
- package/dist/csl/value-objects/Origin-map.d.ts +21 -0
- package/dist/csl/value-objects/Origin-map.d.ts.map +1 -0
- package/dist/csl/value-objects/Origin-map.js +42 -0
- package/dist/csl/value-objects/Origin-map.js.map +1 -0
- package/dist/csl/value-objects/Origin.d.ts +22 -0
- package/dist/csl/value-objects/Origin.d.ts.map +1 -0
- package/dist/csl/value-objects/Origin.js +38 -0
- package/dist/csl/value-objects/Origin.js.map +1 -0
- package/dist/csl/value-objects/TrustLevel.d.ts +18 -0
- package/dist/csl/value-objects/TrustLevel.d.ts.map +1 -0
- package/dist/csl/value-objects/TrustLevel.js +23 -0
- package/dist/csl/value-objects/TrustLevel.js.map +1 -0
- package/dist/csl/value-objects/index.d.ts +10 -0
- package/dist/csl/value-objects/index.d.ts.map +1 -0
- package/dist/csl/value-objects/index.js +8 -0
- package/dist/csl/value-objects/index.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/isl/exceptions/SanitizationError.d.ts +8 -0
- package/dist/isl/exceptions/SanitizationError.d.ts.map +1 -0
- package/dist/isl/exceptions/SanitizationError.js +13 -0
- package/dist/isl/exceptions/SanitizationError.js.map +1 -0
- package/dist/isl/exceptions/index.d.ts +2 -0
- package/dist/isl/exceptions/index.d.ts.map +1 -0
- package/dist/isl/exceptions/index.js +2 -0
- package/dist/isl/exceptions/index.js.map +1 -0
- package/dist/isl/index.d.ts +13 -0
- package/dist/isl/index.d.ts.map +1 -0
- package/dist/isl/index.js +13 -0
- package/dist/isl/index.js.map +1 -0
- package/dist/isl/sanitize.d.ts +13 -0
- package/dist/isl/sanitize.d.ts.map +1 -0
- package/dist/isl/sanitize.js +74 -0
- package/dist/isl/sanitize.js.map +1 -0
- package/dist/isl/types.d.ts +75 -0
- package/dist/isl/types.d.ts.map +1 -0
- package/dist/isl/types.js +5 -0
- package/dist/isl/types.js.map +1 -0
- package/dist/isl/value-objects/AnomalyScore.d.ts +19 -0
- package/dist/isl/value-objects/AnomalyScore.d.ts.map +1 -0
- package/dist/isl/value-objects/AnomalyScore.js +25 -0
- package/dist/isl/value-objects/AnomalyScore.js.map +1 -0
- package/dist/isl/value-objects/Pattern.d.ts +32 -0
- package/dist/isl/value-objects/Pattern.d.ts.map +1 -0
- package/dist/isl/value-objects/Pattern.js +116 -0
- package/dist/isl/value-objects/Pattern.js.map +1 -0
- package/dist/isl/value-objects/PiDetection.d.ts +22 -0
- package/dist/isl/value-objects/PiDetection.d.ts.map +1 -0
- package/dist/isl/value-objects/PiDetection.js +60 -0
- package/dist/isl/value-objects/PiDetection.js.map +1 -0
- package/dist/isl/value-objects/PiDetectionResult.d.ts +24 -0
- package/dist/isl/value-objects/PiDetectionResult.d.ts.map +1 -0
- package/dist/isl/value-objects/PiDetectionResult.js +90 -0
- package/dist/isl/value-objects/PiDetectionResult.js.map +1 -0
- package/dist/isl/value-objects/PolicyRule.d.ts +39 -0
- package/dist/isl/value-objects/PolicyRule.d.ts.map +1 -0
- package/dist/isl/value-objects/PolicyRule.js +65 -0
- package/dist/isl/value-objects/PolicyRule.js.map +1 -0
- package/dist/isl/value-objects/index.d.ts +9 -0
- package/dist/isl/value-objects/index.d.ts.map +1 -0
- package/dist/isl/value-objects/index.js +8 -0
- package/dist/isl/value-objects/index.js.map +1 -0
- package/dist/shared/index.d.ts +9 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +12 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/lineage.d.ts +29 -0
- package/dist/shared/lineage.d.ts.map +1 -0
- package/dist/shared/lineage.js +36 -0
- package/dist/shared/lineage.js.map +1 -0
- package/package.json +19 -18
- package/src/cpe/index.ts +11 -2
- package/src/cpe/value-objects/Metadata.ts +1 -1
- package/src/cpe/value-objects/index.ts +5 -3
- package/src/csl/exceptions/index.ts +2 -2
- package/src/csl/index.ts +24 -3
- package/src/index.ts +81 -5
- package/src/isl/exceptions/index.ts +1 -1
- package/src/isl/index.ts +36 -3
- package/src/shared/index.ts +6 -1
- package/tsconfig.json +6 -3
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crea un PiDetection - función pura
|
|
3
|
+
*/
|
|
4
|
+
export function createPiDetection(pattern_type, matched_pattern, position, confidence) {
|
|
5
|
+
// Validar pattern_type
|
|
6
|
+
if (!pattern_type || typeof pattern_type !== 'string' || pattern_type.trim().length === 0) {
|
|
7
|
+
throw new Error('PiDetection pattern_type must be a non-empty string');
|
|
8
|
+
}
|
|
9
|
+
// Validar matched_pattern
|
|
10
|
+
if (!matched_pattern || typeof matched_pattern !== 'string') {
|
|
11
|
+
throw new Error('PiDetection matched_pattern must be a non-empty string');
|
|
12
|
+
}
|
|
13
|
+
// Validar position
|
|
14
|
+
if (!position || typeof position !== 'object') {
|
|
15
|
+
throw new TypeError('PiDetection position must be an object with start and end properties');
|
|
16
|
+
}
|
|
17
|
+
if (typeof position.start !== 'number' || !Number.isFinite(position.start) || position.start < 0) {
|
|
18
|
+
throw new Error('PiDetection position.start must be a valid non-negative number');
|
|
19
|
+
}
|
|
20
|
+
if (typeof position.end !== 'number' || !Number.isFinite(position.end) || position.end < 0) {
|
|
21
|
+
throw new Error('PiDetection position.end must be a valid non-negative number');
|
|
22
|
+
}
|
|
23
|
+
if (position.end <= position.start) {
|
|
24
|
+
throw new Error('PiDetection position.end must be greater than position.start');
|
|
25
|
+
}
|
|
26
|
+
// Validar confidence
|
|
27
|
+
if (typeof confidence !== 'number' || !Number.isFinite(confidence)) {
|
|
28
|
+
throw new TypeError('PiDetection confidence must be a valid number');
|
|
29
|
+
}
|
|
30
|
+
if (confidence < 0 || confidence > 1) {
|
|
31
|
+
throw new Error('PiDetection confidence must be between 0 and 1');
|
|
32
|
+
}
|
|
33
|
+
// Validar que matched_pattern length coincide con position
|
|
34
|
+
const patternLength = position.end - position.start;
|
|
35
|
+
if (matched_pattern.length !== patternLength) {
|
|
36
|
+
throw new Error(`PiDetection matched_pattern length (${matched_pattern.length}) does not match position range (${patternLength})`);
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
pattern_type: pattern_type.trim(),
|
|
40
|
+
matched_pattern,
|
|
41
|
+
position: Object.freeze({ ...position }),
|
|
42
|
+
confidence
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Funciones puras para PiDetection
|
|
47
|
+
*/
|
|
48
|
+
export function getDetectionLength(detection) {
|
|
49
|
+
return detection.position.end - detection.position.start;
|
|
50
|
+
}
|
|
51
|
+
export function isHighConfidence(detection) {
|
|
52
|
+
return detection.confidence >= 0.7;
|
|
53
|
+
}
|
|
54
|
+
export function isMediumConfidence(detection) {
|
|
55
|
+
return detection.confidence >= 0.3 && detection.confidence < 0.7;
|
|
56
|
+
}
|
|
57
|
+
export function isLowConfidence(detection) {
|
|
58
|
+
return detection.confidence < 0.3;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=PiDetection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PiDetection.js","sourceRoot":"","sources":["../../../src/isl/value-objects/PiDetection.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAAoB,EACpB,eAAuB,EACvB,QAAkB,EAClB,UAAqB;IAErB,uBAAuB;IACvB,IAAI,CAAC,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1F,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAA;IACxE,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC,eAAe,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;IAC3E,CAAC;IAED,mBAAmB;IACnB,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9C,MAAM,IAAI,SAAS,CAAC,sEAAsE,CAAC,CAAA;IAC7F,CAAC;IAED,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;QACjG,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAA;IACnF,CAAC;IAED,IAAI,OAAO,QAAQ,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;QAC3F,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;IACjF,CAAC;IAED,IAAI,QAAQ,CAAC,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;IACjF,CAAC;IAED,qBAAqB;IACrB,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAA;IACtE,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACnE,CAAC;IAED,2DAA2D;IAC3D,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAA;IACnD,IAAI,eAAe,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACb,uCAAuC,eAAe,CAAC,MAAM,oCAAoC,aAAa,GAAG,CAClH,CAAA;IACH,CAAC;IAED,OAAO;QACL,YAAY,EAAE,YAAY,CAAC,IAAI,EAAE;QACjC,eAAe;QACf,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,QAAQ,EAAE,CAAC;QACxC,UAAU;KACX,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAsB;IACvD,OAAO,SAAS,CAAC,QAAQ,CAAC,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAA;AAC1D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,SAAsB;IACrD,OAAO,SAAS,CAAC,UAAU,IAAI,GAAG,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,SAAsB;IACvD,OAAO,SAAS,CAAC,UAAU,IAAI,GAAG,IAAI,SAAS,CAAC,UAAU,GAAG,GAAG,CAAA;AAClE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAsB;IACpD,OAAO,SAAS,CAAC,UAAU,GAAG,GAAG,CAAA;AACnC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AnomalyAction, RiskScore } from '../types';
|
|
2
|
+
import type { PiDetection } from './PiDetection';
|
|
3
|
+
/**
|
|
4
|
+
* PiDetectionResult - tipo puro
|
|
5
|
+
*/
|
|
6
|
+
export type PiDetectionResult = {
|
|
7
|
+
readonly detections: readonly PiDetection[];
|
|
8
|
+
readonly score: RiskScore;
|
|
9
|
+
readonly action: AnomalyAction;
|
|
10
|
+
readonly patterns: readonly string[];
|
|
11
|
+
readonly detected: boolean;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Crea un PiDetectionResult - función pura
|
|
15
|
+
*/
|
|
16
|
+
export declare function createPiDetectionResult(detections: readonly PiDetection[], action?: AnomalyAction): PiDetectionResult;
|
|
17
|
+
/**
|
|
18
|
+
* Funciones puras para PiDetectionResult
|
|
19
|
+
*/
|
|
20
|
+
export declare function hasDetections(result: PiDetectionResult): boolean;
|
|
21
|
+
export declare function getDetectionCount(result: PiDetectionResult): number;
|
|
22
|
+
export declare function getDetectionsByType(result: PiDetectionResult, pattern_type: string): readonly PiDetection[];
|
|
23
|
+
export declare function getHighestConfidenceDetection(result: PiDetectionResult): PiDetection | undefined;
|
|
24
|
+
//# sourceMappingURL=PiDetectionResult.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PiDetectionResult.d.ts","sourceRoot":"","sources":["../../../src/isl/value-objects/PiDetectionResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,UAAU,EAAE,SAAS,WAAW,EAAE,CAAA;IAC3C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;CAC3B,CAAA;AAuCD;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,SAAS,WAAW,EAAE,EAClC,MAAM,CAAC,EAAE,aAAa,GACrB,iBAAiB,CAqCnB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAEhE;AAKD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAEnE;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,iBAAiB,EACzB,YAAY,EAAE,MAAM,GACnB,SAAS,WAAW,EAAE,CAExB;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,iBAAiB,GACxB,WAAW,GAAG,SAAS,CAQzB"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calcula score agregado desde detecciones individuales - función pura
|
|
3
|
+
*/
|
|
4
|
+
function calculateAggregatedScore(detections) {
|
|
5
|
+
if (detections.length === 0) {
|
|
6
|
+
return 0;
|
|
7
|
+
}
|
|
8
|
+
if (detections.length === 1) {
|
|
9
|
+
const first = detections[0];
|
|
10
|
+
if (!first)
|
|
11
|
+
return 0;
|
|
12
|
+
return first.confidence;
|
|
13
|
+
}
|
|
14
|
+
// Usar probabilidad complementaria: 1 - (1-c1)*(1-c2)*...
|
|
15
|
+
let complementaryProduct = 1;
|
|
16
|
+
for (const detection of detections) {
|
|
17
|
+
complementaryProduct *= (1 - detection.confidence);
|
|
18
|
+
}
|
|
19
|
+
const aggregatedScore = 1 - complementaryProduct;
|
|
20
|
+
return Math.max(0, Math.min(1, aggregatedScore));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Determina acción basada en score - función pura
|
|
24
|
+
*/
|
|
25
|
+
function determineActionFromScore(score) {
|
|
26
|
+
if (score >= 0.7) {
|
|
27
|
+
return 'BLOCK';
|
|
28
|
+
}
|
|
29
|
+
else if (score >= 0.3) {
|
|
30
|
+
return 'WARN';
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return 'ALLOW';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Crea un PiDetectionResult - función pura
|
|
38
|
+
*/
|
|
39
|
+
export function createPiDetectionResult(detections, action) {
|
|
40
|
+
// Validar detections array
|
|
41
|
+
if (!Array.isArray(detections)) {
|
|
42
|
+
throw new TypeError('PiDetectionResult detections must be an array');
|
|
43
|
+
}
|
|
44
|
+
// Calcular score agregado
|
|
45
|
+
const score = calculateAggregatedScore(detections);
|
|
46
|
+
// Determinar acción (o usar la proporcionada)
|
|
47
|
+
const finalAction = action ?? determineActionFromScore(score);
|
|
48
|
+
// Validar acción
|
|
49
|
+
if (!['ALLOW', 'WARN', 'BLOCK'].includes(finalAction)) {
|
|
50
|
+
throw new Error(`Invalid AnomalyAction: ${finalAction}. Must be one of: ALLOW, WARN, BLOCK`);
|
|
51
|
+
}
|
|
52
|
+
// Validar que la acción coincide con el score calculado
|
|
53
|
+
const expectedAction = determineActionFromScore(score);
|
|
54
|
+
if (finalAction !== expectedAction) {
|
|
55
|
+
throw new Error(`PiDetectionResult action mismatch. Calculated score ${score} requires action '${expectedAction}', but '${finalAction}' was provided`);
|
|
56
|
+
}
|
|
57
|
+
// Derivar patterns array
|
|
58
|
+
const patterns = detections.map((detection) => detection.pattern_type);
|
|
59
|
+
const result = {
|
|
60
|
+
detections: Object.freeze(Array.from(detections)),
|
|
61
|
+
score,
|
|
62
|
+
action: finalAction,
|
|
63
|
+
patterns: Object.freeze(Array.from(patterns)),
|
|
64
|
+
detected: detections.length > 0
|
|
65
|
+
};
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Funciones puras para PiDetectionResult
|
|
70
|
+
*/
|
|
71
|
+
export function hasDetections(result) {
|
|
72
|
+
return result.detected;
|
|
73
|
+
}
|
|
74
|
+
// shouldBlock y shouldWarn NO son core - son decisiones que van a ModelGateway
|
|
75
|
+
// El core solo produce señales (score, action), no decide acciones finales
|
|
76
|
+
export function getDetectionCount(result) {
|
|
77
|
+
return result.detections.length;
|
|
78
|
+
}
|
|
79
|
+
export function getDetectionsByType(result, pattern_type) {
|
|
80
|
+
return result.detections.filter(detection => detection.pattern_type === pattern_type);
|
|
81
|
+
}
|
|
82
|
+
export function getHighestConfidenceDetection(result) {
|
|
83
|
+
if (result.detections.length === 0) {
|
|
84
|
+
return undefined;
|
|
85
|
+
}
|
|
86
|
+
return result.detections.reduce((highest, current) => {
|
|
87
|
+
return current.confidence > highest.confidence ? current : highest;
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=PiDetectionResult.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PiDetectionResult.js","sourceRoot":"","sources":["../../../src/isl/value-objects/PiDetectionResult.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { BlockedIntent, ImmutableInstruction, ProtectedRole, SensitiveScope } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* RoleProtectionConfig - configuración de protección de roles
|
|
4
|
+
*/
|
|
5
|
+
export type RoleProtectionConfig = {
|
|
6
|
+
readonly protectedRoles: readonly ProtectedRole[];
|
|
7
|
+
readonly immutableInstructions: readonly ImmutableInstruction[];
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* ContextLeakPreventionConfig - configuración de prevención de fuga de contexto
|
|
11
|
+
*/
|
|
12
|
+
export type ContextLeakPreventionConfig = {
|
|
13
|
+
readonly enabled: boolean;
|
|
14
|
+
readonly blockMetadataExposure: boolean;
|
|
15
|
+
readonly sanitizeInternalReferences: boolean;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* PolicyRule - tipo puro
|
|
19
|
+
*/
|
|
20
|
+
export type PolicyRule = {
|
|
21
|
+
readonly version: string;
|
|
22
|
+
readonly blockedIntents: readonly BlockedIntent[];
|
|
23
|
+
readonly sensitiveScope: readonly SensitiveScope[];
|
|
24
|
+
readonly roleProtection: RoleProtectionConfig;
|
|
25
|
+
readonly contextLeakPrevention: ContextLeakPreventionConfig;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Crea un PolicyRule - función pura
|
|
29
|
+
*/
|
|
30
|
+
export declare function createPolicyRule(version: string, blockedIntents: readonly BlockedIntent[], sensitiveScope: readonly SensitiveScope[], roleProtection: RoleProtectionConfig, contextLeakPrevention: ContextLeakPreventionConfig): PolicyRule;
|
|
31
|
+
/**
|
|
32
|
+
* Funciones puras para PolicyRule
|
|
33
|
+
*/
|
|
34
|
+
export declare function isIntentBlocked(policy: PolicyRule, intent: string): boolean;
|
|
35
|
+
export declare function isScopeSensitive(policy: PolicyRule, scope: string): boolean;
|
|
36
|
+
export declare function isRoleProtected(policy: PolicyRule, role: string): boolean;
|
|
37
|
+
export declare function isInstructionImmutable(policy: PolicyRule, instruction: string): boolean;
|
|
38
|
+
export declare function isContextLeakPreventionEnabled(policy: PolicyRule): boolean;
|
|
39
|
+
//# sourceMappingURL=PolicyRule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PolicyRule.d.ts","sourceRoot":"","sources":["../../../src/isl/value-objects/PolicyRule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAElG;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAA;IACjD,QAAQ,CAAC,qBAAqB,EAAE,SAAS,oBAAoB,EAAE,CAAA;CAChE,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG;IACxC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAA;IACvC,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAA;CAC7C,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAA;IACjD,QAAQ,CAAC,cAAc,EAAE,SAAS,cAAc,EAAE,CAAA;IAClD,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAA;IAC7C,QAAQ,CAAC,qBAAqB,EAAE,2BAA2B,CAAA;CAC5D,CAAA;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,SAAS,aAAa,EAAE,EACxC,cAAc,EAAE,SAAS,cAAc,EAAE,EACzC,cAAc,EAAE,oBAAoB,EACpC,qBAAqB,EAAE,2BAA2B,GACjD,UAAU,CAqDZ;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAE3E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAE3E;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAEvF;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAE1E"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crea un PolicyRule - función pura
|
|
3
|
+
*/
|
|
4
|
+
export function createPolicyRule(version, blockedIntents, sensitiveScope, roleProtection, contextLeakPrevention) {
|
|
5
|
+
if (!version || typeof version !== 'string' || version.trim().length === 0) {
|
|
6
|
+
throw new Error('PolicyRule version must be a non-empty string');
|
|
7
|
+
}
|
|
8
|
+
if (!Array.isArray(blockedIntents)) {
|
|
9
|
+
throw new TypeError('PolicyRule blockedIntents must be an array');
|
|
10
|
+
}
|
|
11
|
+
if (!Array.isArray(sensitiveScope)) {
|
|
12
|
+
throw new TypeError('PolicyRule sensitiveScope must be an array');
|
|
13
|
+
}
|
|
14
|
+
if (!roleProtection || typeof roleProtection !== 'object') {
|
|
15
|
+
throw new TypeError('PolicyRule roleProtection must be an object');
|
|
16
|
+
}
|
|
17
|
+
if (!Array.isArray(roleProtection.protectedRoles)) {
|
|
18
|
+
throw new TypeError('PolicyRule roleProtection.protectedRoles must be an array');
|
|
19
|
+
}
|
|
20
|
+
if (!Array.isArray(roleProtection.immutableInstructions)) {
|
|
21
|
+
throw new TypeError('PolicyRule roleProtection.immutableInstructions must be an array');
|
|
22
|
+
}
|
|
23
|
+
if (!contextLeakPrevention || typeof contextLeakPrevention !== 'object') {
|
|
24
|
+
throw new TypeError('PolicyRule contextLeakPrevention must be an object');
|
|
25
|
+
}
|
|
26
|
+
if (typeof contextLeakPrevention.enabled !== 'boolean') {
|
|
27
|
+
throw new TypeError('PolicyRule contextLeakPrevention.enabled must be a boolean');
|
|
28
|
+
}
|
|
29
|
+
if (typeof contextLeakPrevention.blockMetadataExposure !== 'boolean') {
|
|
30
|
+
throw new TypeError('PolicyRule contextLeakPrevention.blockMetadataExposure must be a boolean');
|
|
31
|
+
}
|
|
32
|
+
if (typeof contextLeakPrevention.sanitizeInternalReferences !== 'boolean') {
|
|
33
|
+
throw new TypeError('PolicyRule contextLeakPrevention.sanitizeInternalReferences must be a boolean');
|
|
34
|
+
}
|
|
35
|
+
const result = {
|
|
36
|
+
version: version.trim(),
|
|
37
|
+
blockedIntents: Object.freeze(Array.from(blockedIntents)),
|
|
38
|
+
sensitiveScope: Object.freeze(Array.from(sensitiveScope)),
|
|
39
|
+
roleProtection: {
|
|
40
|
+
protectedRoles: Object.freeze(Array.from(roleProtection.protectedRoles)),
|
|
41
|
+
immutableInstructions: Object.freeze(Array.from(roleProtection.immutableInstructions))
|
|
42
|
+
},
|
|
43
|
+
contextLeakPrevention: Object.freeze({ ...contextLeakPrevention })
|
|
44
|
+
};
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Funciones puras para PolicyRule
|
|
49
|
+
*/
|
|
50
|
+
export function isIntentBlocked(policy, intent) {
|
|
51
|
+
return policy.blockedIntents.includes(intent);
|
|
52
|
+
}
|
|
53
|
+
export function isScopeSensitive(policy, scope) {
|
|
54
|
+
return policy.sensitiveScope.includes(scope);
|
|
55
|
+
}
|
|
56
|
+
export function isRoleProtected(policy, role) {
|
|
57
|
+
return policy.roleProtection.protectedRoles.includes(role);
|
|
58
|
+
}
|
|
59
|
+
export function isInstructionImmutable(policy, instruction) {
|
|
60
|
+
return policy.roleProtection.immutableInstructions.includes(instruction);
|
|
61
|
+
}
|
|
62
|
+
export function isContextLeakPreventionEnabled(policy) {
|
|
63
|
+
return policy.contextLeakPrevention.enabled;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=PolicyRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PolicyRule.js","sourceRoot":"","sources":["../../../src/isl/value-objects/PolicyRule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type { PiDetection } from './PiDetection';
|
|
2
|
+
export type { PiDetectionResult } from './PiDetectionResult';
|
|
3
|
+
export type { AnomalyScore } from './AnomalyScore';
|
|
4
|
+
export type { Pattern } from './Pattern';
|
|
5
|
+
export { createPiDetection, getDetectionLength, isHighConfidence, isMediumConfidence, isLowConfidence } from './PiDetection';
|
|
6
|
+
export { createPiDetectionResult, hasDetections, getDetectionCount, getDetectionsByType, getHighestConfidenceDetection } from './PiDetectionResult';
|
|
7
|
+
export { createAnomalyScore, isHighRisk, isWarnRisk, isLowRisk } from './AnomalyScore';
|
|
8
|
+
export { createPattern, matchesPattern, findMatch, MAX_CONTENT_LENGTH, MAX_PATTERN_LENGTH, MAX_MATCHES } from './Pattern';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/isl/value-objects/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,YAAY,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EAChB,MAAM,eAAe,CAAA;AAEtB,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,6BAA6B,EAC9B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,SAAS,EACV,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACL,aAAa,EACb,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACZ,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// Funciones de creación
|
|
2
|
+
export { createPiDetection, getDetectionLength, isHighConfidence, isMediumConfidence, isLowConfidence } from './PiDetection';
|
|
3
|
+
export { createPiDetectionResult, hasDetections, getDetectionCount, getDetectionsByType, getHighestConfidenceDetection } from './PiDetectionResult';
|
|
4
|
+
export { createAnomalyScore, isHighRisk, isWarnRisk, isLowRisk } from './AnomalyScore';
|
|
5
|
+
export { createPattern, matchesPattern, findMatch, MAX_CONTENT_LENGTH, MAX_PATTERN_LENGTH, MAX_MATCHES } from './Pattern';
|
|
6
|
+
// PolicyRule NO es core - va a ModelGateway/Policy Engine
|
|
7
|
+
// Se mantiene el tipo para compatibilidad pero las funciones de decisión no son core
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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,eAAe,CAAA;AAEtB,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,6BAA6B,EAC9B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,SAAS,EACV,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACL,aAAa,EACb,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACZ,MAAM,WAAW,CAAA;AAElB,0DAA0D;AAC1D,qFAAqF"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities for all layers - funciones puras compartidas
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Solo funciones básicas de manejo de linaje.
|
|
6
|
+
* Auditoría y análisis avanzado van al SDK.
|
|
7
|
+
*/
|
|
8
|
+
export { addLineageEntry, addLineageEntries, filterLineageByStep, getLastLineageEntry } from './lineage';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared utilities for all layers - funciones puras compartidas
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* Solo funciones básicas de manejo de linaje.
|
|
6
|
+
* Auditoría y análisis avanzado van al SDK.
|
|
7
|
+
*/
|
|
8
|
+
// Lineage básico
|
|
9
|
+
export { addLineageEntry, addLineageEntries, filterLineageByStep, getLastLineageEntry } from './lineage';
|
|
10
|
+
// Funciones de auditoría NO son core - van al SDK/tooling
|
|
11
|
+
// El core solo preserva linaje, no lo analiza
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,iBAAiB;AACjB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,WAAW,CAAA;AAElB,0DAA0D;AAC1D,8CAA8C"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { LineageEntry } from '../csl/value-objects';
|
|
2
|
+
/**
|
|
3
|
+
* Lineage global - funciones puras para manejar linaje entre capas
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* El linaje es compartido entre todas las capas (CSL, ISL, CPE, etc.)
|
|
7
|
+
* Cada capa puede agregar entradas al linaje de un segmento.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Agrega una entrada de linaje a un array existente - función pura
|
|
11
|
+
*
|
|
12
|
+
* @param lineage - Array de entradas de linaje existentes
|
|
13
|
+
* @param entry - Nueva entrada a agregar
|
|
14
|
+
* @returns Nuevo array con la entrada agregada
|
|
15
|
+
*/
|
|
16
|
+
export declare function addLineageEntry(lineage: readonly LineageEntry[], entry: LineageEntry): LineageEntry[];
|
|
17
|
+
/**
|
|
18
|
+
* Agrega múltiples entradas de linaje - función pura
|
|
19
|
+
*/
|
|
20
|
+
export declare function addLineageEntries(lineage: readonly LineageEntry[], entries: readonly LineageEntry[]): LineageEntry[];
|
|
21
|
+
/**
|
|
22
|
+
* Filtra entradas de linaje por step - función pura
|
|
23
|
+
*/
|
|
24
|
+
export declare function filterLineageByStep(lineage: readonly LineageEntry[], step: string): LineageEntry[];
|
|
25
|
+
/**
|
|
26
|
+
* Obtiene la última entrada de linaje - función pura
|
|
27
|
+
*/
|
|
28
|
+
export declare function getLastLineageEntry(lineage: readonly LineageEntry[]): LineageEntry | undefined;
|
|
29
|
+
//# sourceMappingURL=lineage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lineage.d.ts","sourceRoot":"","sources":["../../src/shared/lineage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,KAAK,EAAE,YAAY,GAClB,YAAY,EAAE,CAEhB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,OAAO,EAAE,SAAS,YAAY,EAAE,GAC/B,YAAY,EAAE,CAEhB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,IAAI,EAAE,MAAM,GACX,YAAY,EAAE,CAEhB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,YAAY,EAAE,GAC/B,YAAY,GAAG,SAAS,CAE1B"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lineage global - funciones puras para manejar linaje entre capas
|
|
3
|
+
*
|
|
4
|
+
* @remarks
|
|
5
|
+
* El linaje es compartido entre todas las capas (CSL, ISL, CPE, etc.)
|
|
6
|
+
* Cada capa puede agregar entradas al linaje de un segmento.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Agrega una entrada de linaje a un array existente - función pura
|
|
10
|
+
*
|
|
11
|
+
* @param lineage - Array de entradas de linaje existentes
|
|
12
|
+
* @param entry - Nueva entrada a agregar
|
|
13
|
+
* @returns Nuevo array con la entrada agregada
|
|
14
|
+
*/
|
|
15
|
+
export function addLineageEntry(lineage, entry) {
|
|
16
|
+
return [...lineage, entry];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Agrega múltiples entradas de linaje - función pura
|
|
20
|
+
*/
|
|
21
|
+
export function addLineageEntries(lineage, entries) {
|
|
22
|
+
return [...lineage, ...entries];
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Filtra entradas de linaje por step - función pura
|
|
26
|
+
*/
|
|
27
|
+
export function filterLineageByStep(lineage, step) {
|
|
28
|
+
return lineage.filter(entry => entry.step === step);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Obtiene la última entrada de linaje - función pura
|
|
32
|
+
*/
|
|
33
|
+
export function getLastLineageEntry(lineage) {
|
|
34
|
+
return lineage.length > 0 ? lineage.at(-1) : undefined;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=lineage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lineage.js","sourceRoot":"","sources":["../../src/shared/lineage.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAgC,EAChC,KAAmB;IAEnB,OAAO,CAAC,GAAG,OAAO,EAAE,KAAK,CAAC,CAAA;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,OAAgC,EAChC,OAAgC;IAEhC,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAA;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAgC,EAChC,IAAY;IAEZ,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAgC;IAEhC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACxD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,38 +1,39 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-pip/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.4",
|
|
4
4
|
"description": "Core implementation of the AI-PIP protocol. Provides layered, zero-trust context processing (CSL, ISL, CPE, ALL, ModelGateway)",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"main": "./
|
|
7
|
-
"types": "./
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
|
-
"types": "./
|
|
11
|
-
"import": "./
|
|
12
|
-
"default": "./
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"default": "./dist/index.js"
|
|
13
13
|
},
|
|
14
14
|
"./csl": {
|
|
15
|
-
"types": "./
|
|
16
|
-
"import": "./
|
|
17
|
-
"default": "./
|
|
15
|
+
"types": "./dist/csl/index.d.ts",
|
|
16
|
+
"import": "./dist/csl/index.js",
|
|
17
|
+
"default": "./dist/csl/index.js"
|
|
18
18
|
},
|
|
19
19
|
"./isl": {
|
|
20
|
-
"types": "./
|
|
21
|
-
"import": "./
|
|
22
|
-
"default": "./
|
|
20
|
+
"types": "./dist/isl/index.d.ts",
|
|
21
|
+
"import": "./dist/isl/index.js",
|
|
22
|
+
"default": "./dist/isl/index.js"
|
|
23
23
|
},
|
|
24
24
|
"./cpe": {
|
|
25
|
-
"types": "./
|
|
26
|
-
"import": "./
|
|
27
|
-
"default": "./
|
|
25
|
+
"types": "./dist/cpe/index.d.ts",
|
|
26
|
+
"import": "./dist/cpe/index.js",
|
|
27
|
+
"default": "./dist/cpe/index.js"
|
|
28
28
|
},
|
|
29
29
|
"./shared": {
|
|
30
|
-
"types": "./
|
|
31
|
-
"import": "./
|
|
32
|
-
"default": "./
|
|
30
|
+
"types": "./dist/shared/index.d.ts",
|
|
31
|
+
"import": "./dist/shared/index.js",
|
|
32
|
+
"default": "./dist/shared/index.js"
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
"files": [
|
|
36
|
+
"dist",
|
|
36
37
|
"src",
|
|
37
38
|
"tsconfig.json",
|
|
38
39
|
"README.md",
|
package/src/cpe/index.ts
CHANGED
|
@@ -25,10 +25,19 @@ export { createSignature } from './value-objects/Signature'
|
|
|
25
25
|
export type { SignatureVO } from './value-objects/Signature'
|
|
26
26
|
|
|
27
27
|
// Exceptions
|
|
28
|
-
export
|
|
28
|
+
export { EnvelopeError } from './exceptions/EnvelopeError'
|
|
29
29
|
|
|
30
30
|
// Types
|
|
31
|
-
export
|
|
31
|
+
export type {
|
|
32
|
+
ProtocolVersion,
|
|
33
|
+
Timestamp,
|
|
34
|
+
NonceValue,
|
|
35
|
+
SignatureAlgorithm,
|
|
36
|
+
Signature,
|
|
37
|
+
CPEMetadata,
|
|
38
|
+
CPEEvelope,
|
|
39
|
+
CPEResult
|
|
40
|
+
} from './types'
|
|
32
41
|
|
|
33
42
|
// Serialización y verificación NO son core - van al SDK
|
|
34
43
|
// El core solo define la estructura del envelope, no implementa serialización
|
|
@@ -9,7 +9,7 @@ import type { Nonce as NonceVO } from './Nonce'
|
|
|
9
9
|
/**
|
|
10
10
|
* Versión actual del protocolo
|
|
11
11
|
*/
|
|
12
|
-
export const CURRENT_PROTOCOL_VERSION: ProtocolVersion = '1.
|
|
12
|
+
export const CURRENT_PROTOCOL_VERSION: ProtocolVersion = '0.1.4'
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
15
|
* Crea metadata de seguridad para el envelope
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
* CPE Value Objects - Exports
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
5
|
+
export type { Nonce } from './Nonce'
|
|
6
|
+
export { createNonce, isValidNonce, equalsNonce } from './Nonce'
|
|
7
|
+
export { createMetadata, isValidMetadata } from './Metadata'
|
|
8
|
+
export type { SignatureVO } from './Signature'
|
|
9
|
+
export { createSignature, verifySignature, isValidSignatureFormat } from './Signature'
|
|
8
10
|
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export { ClassificationError } from './ClassificationError'
|
|
2
|
+
export { SegmentationError } from './SegmentationError'
|
|
3
3
|
|
package/src/csl/index.ts
CHANGED
|
@@ -21,13 +21,34 @@ export { classifySource, classifyOrigin } from './classify'
|
|
|
21
21
|
export { initLineage, createLineageEntry } from './lineage'
|
|
22
22
|
|
|
23
23
|
// Value objects
|
|
24
|
-
export
|
|
24
|
+
export type { TrustLevel, Origin, LineageEntry, ContentHash } from './value-objects'
|
|
25
|
+
export {
|
|
26
|
+
createTrustLevel,
|
|
27
|
+
isTrusted,
|
|
28
|
+
isSemiTrusted,
|
|
29
|
+
isUntrusted,
|
|
30
|
+
createOrigin,
|
|
31
|
+
isDom,
|
|
32
|
+
isUser,
|
|
33
|
+
isSystem,
|
|
34
|
+
isInjected,
|
|
35
|
+
isUnknown,
|
|
36
|
+
isNetworkFetched,
|
|
37
|
+
isExternal,
|
|
38
|
+
isSha256,
|
|
39
|
+
isSha512,
|
|
40
|
+
originMap,
|
|
41
|
+
createContentHash,
|
|
42
|
+
validateOriginMap
|
|
43
|
+
} from './value-objects'
|
|
25
44
|
|
|
26
45
|
// Exceptions
|
|
27
|
-
export
|
|
46
|
+
export { ClassificationError } from './exceptions/ClassificationError'
|
|
47
|
+
export { SegmentationError } from './exceptions/SegmentationError'
|
|
28
48
|
|
|
29
49
|
// Types
|
|
30
|
-
export
|
|
50
|
+
export { OriginType, TrustLevelType } from './types'
|
|
51
|
+
export type { HashAlgorithm, Source, CSLInput, CSLSegment, CSLResult } from './types'
|
|
31
52
|
|
|
32
53
|
// Utils
|
|
33
54
|
export { generateId, splitByContextRules } from './utils'
|