@besales/anonymizer 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +81 -0
- package/dist/anonymizer.d.ts +31 -0
- package/dist/anonymizer.d.ts.map +1 -0
- package/dist/anonymizer.js +175 -0
- package/dist/anonymizer.js.map +1 -0
- package/dist/constants.d.ts +11 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +16 -0
- package/dist/constants.js.map +1 -0
- package/dist/detectors/contextual.detector.d.ts +10 -0
- package/dist/detectors/contextual.detector.d.ts.map +1 -0
- package/dist/detectors/contextual.detector.js +56 -0
- package/dist/detectors/contextual.detector.js.map +1 -0
- package/dist/detectors/detection-pipeline.d.ts +6 -0
- package/dist/detectors/detection-pipeline.d.ts.map +1 -0
- package/dist/detectors/detection-pipeline.js +102 -0
- package/dist/detectors/detection-pipeline.js.map +1 -0
- package/dist/detectors/detector.interface.d.ts +6 -0
- package/dist/detectors/detector.interface.d.ts.map +1 -0
- package/dist/detectors/detector.interface.js +3 -0
- package/dist/detectors/detector.interface.js.map +1 -0
- package/dist/detectors/dictionary.detector.d.ts +12 -0
- package/dist/detectors/dictionary.detector.d.ts.map +1 -0
- package/dist/detectors/dictionary.detector.js +222 -0
- package/dist/detectors/dictionary.detector.js.map +1 -0
- package/dist/detectors/regex.detector.d.ts +10 -0
- package/dist/detectors/regex.detector.d.ts.map +1 -0
- package/dist/detectors/regex.detector.js +41 -0
- package/dist/detectors/regex.detector.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/llm-protocol/response-validator.d.ts +5 -0
- package/dist/llm-protocol/response-validator.d.ts.map +1 -0
- package/dist/llm-protocol/response-validator.js +96 -0
- package/dist/llm-protocol/response-validator.js.map +1 -0
- package/dist/llm-protocol/system-prompt-builder.d.ts +2 -0
- package/dist/llm-protocol/system-prompt-builder.d.ts.map +1 -0
- package/dist/llm-protocol/system-prompt-builder.js +8 -0
- package/dist/llm-protocol/system-prompt-builder.js.map +1 -0
- package/dist/locales/index.d.ts +9 -0
- package/dist/locales/index.d.ts.map +1 -0
- package/dist/locales/index.js +15 -0
- package/dist/locales/index.js.map +1 -0
- package/dist/locales/locale.interface.d.ts +35 -0
- package/dist/locales/locale.interface.d.ts.map +1 -0
- package/dist/locales/locale.interface.js +3 -0
- package/dist/locales/locale.interface.js.map +1 -0
- package/dist/locales/ru/data/names.csv +1291 -0
- package/dist/locales/ru/data/stopwords.csv +236 -0
- package/dist/locales/ru/index.d.ts +3 -0
- package/dist/locales/ru/index.d.ts.map +1 -0
- package/dist/locales/ru/index.js +227 -0
- package/dist/locales/ru/index.js.map +1 -0
- package/dist/tokenizer/tokenizer.d.ts +13 -0
- package/dist/tokenizer/tokenizer.d.ts.map +1 -0
- package/dist/tokenizer/tokenizer.js +50 -0
- package/dist/tokenizer/tokenizer.js.map +1 -0
- package/dist/traversers/completions.traverser.d.ts +7 -0
- package/dist/traversers/completions.traverser.d.ts.map +1 -0
- package/dist/traversers/completions.traverser.js +111 -0
- package/dist/traversers/completions.traverser.js.map +1 -0
- package/dist/traversers/json.traverser.d.ts +12 -0
- package/dist/traversers/json.traverser.d.ts.map +1 -0
- package/dist/traversers/json.traverser.js +94 -0
- package/dist/traversers/json.traverser.js.map +1 -0
- package/dist/traversers/responses.traverser.d.ts +8 -0
- package/dist/traversers/responses.traverser.d.ts.map +1 -0
- package/dist/traversers/responses.traverser.js +86 -0
- package/dist/traversers/responses.traverser.js.map +1 -0
- package/dist/traversers/text.traverser.d.ts +6 -0
- package/dist/traversers/text.traverser.d.ts.map +1 -0
- package/dist/traversers/text.traverser.js +15 -0
- package/dist/traversers/text.traverser.js.map +1 -0
- package/dist/traversers/traverser.interface.d.ts +9 -0
- package/dist/traversers/traverser.interface.d.ts.map +1 -0
- package/dist/traversers/traverser.interface.js +3 -0
- package/dist/traversers/traverser.interface.js.map +1 -0
- package/dist/types/anonymize-result.interface.d.ts +23 -0
- package/dist/types/anonymize-result.interface.d.ts.map +1 -0
- package/dist/types/anonymize-result.interface.js +3 -0
- package/dist/types/anonymize-result.interface.js.map +1 -0
- package/dist/types/deanonymize-result.interface.d.ts +18 -0
- package/dist/types/deanonymize-result.interface.d.ts.map +1 -0
- package/dist/types/deanonymize-result.interface.js +3 -0
- package/dist/types/deanonymize-result.interface.js.map +1 -0
- package/dist/types/detected-entity.interface.d.ts +23 -0
- package/dist/types/detected-entity.interface.d.ts.map +1 -0
- package/dist/types/detected-entity.interface.js +3 -0
- package/dist/types/detected-entity.interface.js.map +1 -0
- package/dist/types/detection-context.d.ts +10 -0
- package/dist/types/detection-context.d.ts.map +1 -0
- package/dist/types/detection-context.js +12 -0
- package/dist/types/detection-context.js.map +1 -0
- package/dist/types/entity-type.d.ts +16 -0
- package/dist/types/entity-type.d.ts.map +1 -0
- package/dist/types/entity-type.js +18 -0
- package/dist/types/entity-type.js.map +1 -0
- package/dist/types/llm-message.interface.d.ts +23 -0
- package/dist/types/llm-message.interface.d.ts.map +1 -0
- package/dist/types/llm-message.interface.js +3 -0
- package/dist/types/llm-message.interface.js.map +1 -0
- package/dist/types/llm-validation.interface.d.ts +8 -0
- package/dist/types/llm-validation.interface.d.ts.map +1 -0
- package/dist/types/llm-validation.interface.js +3 -0
- package/dist/types/llm-validation.interface.js.map +1 -0
- package/dist/types/malformed-token.interface.d.ts +6 -0
- package/dist/types/malformed-token.interface.d.ts.map +1 -0
- package/dist/types/malformed-token.interface.js +3 -0
- package/dist/types/malformed-token.interface.js.map +1 -0
- package/dist/types/mapping-data.interface.d.ts +9 -0
- package/dist/types/mapping-data.interface.d.ts.map +1 -0
- package/dist/types/mapping-data.interface.js +12 -0
- package/dist/types/mapping-data.interface.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completions.traverser.js","sourceRoot":"","sources":["../../src/traversers/completions.traverser.ts"],"names":[],"mappings":";;;AAQA,MAAa,oBAAoB;IAG/B,cAAc,CAAC,QAA8B;QAC3C,MAAM,MAAM,GAAsB,EAAE,CAAC;QAErC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YAE1B,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9D,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,YAAY,CAAC,WAAW;oBAC9B,KAAK,EAAE,GAAG,CAAC,OAAO;iBACnB,CAAC,CAAC;YACL,CAAC;YAGD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;oBAC9B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC9D,MAAM,CAAC,IAAI,CAAC;4BACV,IAAI,EAAE,YAAY,CAAC,aAAa,CAAC,QAAQ;4BACzC,KAAK,EAAE,IAAI,CAAC,IAAI;yBACjB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAGD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBACnB,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;oBAC/B,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;wBAC3B,MAAM,QAAQ,GAAG,YAAY,CAAC,gBAAgB,CAAC,sBAAsB,CAAC;wBACtE,IAAI,CAAC;4BACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAY,CAAC;4BAC5D,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;wBAC7C,CAAC;wBAAC,MAAM,CAAC;4BAEP,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;wBAChE,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,UAAU,CACR,QAA8B,EAC9B,SAA8B;QAE9B,MAAM,MAAM,GAAyB,eAAe,CAAC,QAAQ,CAAC,CAAC;QAE/D,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;YAExB,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC;YAC7C,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAE,CAAC;YAC5C,CAAC;YAGD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;oBAC9B,MAAM,QAAQ,GAAG,YAAY,CAAC,aAAa,CAAC,QAAQ,CAAC;oBACrD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACpD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;oBACvC,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;YAGD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBACnB,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;oBAC/B,MAAM,QAAQ,GAAG,YAAY,CAAC,gBAAgB,CAAC,sBAAsB,CAAC;oBACtE,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;wBAC3B,IAAI,CAAC;4BACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAY,CAAC;4BAC5D,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;4BAC7D,EAAE,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;wBAClD,CAAC;wBAAC,MAAM,CAAC;4BACP,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gCAC5B,EAAE,CAAC,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;4BACnD,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA3FD,oDA2FC;AAKD,SAAS,gBAAgB,CACvB,KAAc,EACd,IAAY,EACZ,MAAyB;IAEzB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7B,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACxB,gBAAgB,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QACH,OAAO;IACT,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CACrC,KAAgC,CACjC,EAAE,CAAC;YACF,gBAAgB,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;AACH,CAAC;AAKD,SAAS,eAAe,CACtB,KAAc,EACd,IAAY,EACZ,SAA8B;IAE9B,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5D,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAC3B,eAAe,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAClD,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CACrC,KAAgC,CACjC,EAAE,CAAC;YACF,MAAM,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TraverserPort, ExtractedString } from './traverser.interface';
|
|
2
|
+
export interface JsonTraverserOptions {
|
|
3
|
+
targetPaths?: string[];
|
|
4
|
+
excludePaths?: string[];
|
|
5
|
+
}
|
|
6
|
+
export declare class JsonTraverser implements TraverserPort<Record<string, unknown>> {
|
|
7
|
+
extractStrings(input: Record<string, unknown>, options?: JsonTraverserOptions): ExtractedString[];
|
|
8
|
+
reassemble(input: Record<string, unknown>, processed: Map<string, string>): Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
export declare function getByPath(obj: unknown, path: string): unknown;
|
|
11
|
+
export declare function setByPath(obj: unknown, path: string, value: unknown): void;
|
|
12
|
+
//# sourceMappingURL=json.traverser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.traverser.d.ts","sourceRoot":"","sources":["../../src/traversers/json.traverser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEvE,MAAM,WAAW,oBAAoB;IAEnC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAEvB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAMD,qBAAa,aACX,YAAW,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjD,cAAc,CACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,eAAe,EAAE;IAqBpB,UAAU,CACR,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAU3B;AAeD,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAW7D;AAKD,wBAAgB,SAAS,CACvB,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,IAAI,CAsBN"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JsonTraverser = void 0;
|
|
4
|
+
exports.getByPath = getByPath;
|
|
5
|
+
exports.setByPath = setByPath;
|
|
6
|
+
class JsonTraverser {
|
|
7
|
+
extractStrings(input, options) {
|
|
8
|
+
const result = [];
|
|
9
|
+
const excludeSet = new Set(options?.excludePaths ?? []);
|
|
10
|
+
if (options?.targetPaths && options.targetPaths.length > 0) {
|
|
11
|
+
for (const targetPath of options.targetPaths) {
|
|
12
|
+
if (excludeSet.has(targetPath))
|
|
13
|
+
continue;
|
|
14
|
+
const value = getByPath(input, targetPath);
|
|
15
|
+
if (typeof value === 'string' && value.length > 0) {
|
|
16
|
+
result.push({ path: targetPath, value });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
walkObject(input, '', result, excludeSet);
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
reassemble(input, processed) {
|
|
26
|
+
const cloned = structuredClone(input);
|
|
27
|
+
for (const [path, value] of processed) {
|
|
28
|
+
setByPath(cloned, path, value);
|
|
29
|
+
}
|
|
30
|
+
return cloned;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.JsonTraverser = JsonTraverser;
|
|
34
|
+
function parsePath(path) {
|
|
35
|
+
return path.split(/[.[\]]+/).filter(Boolean);
|
|
36
|
+
}
|
|
37
|
+
function getByPath(obj, path) {
|
|
38
|
+
const segments = parsePath(path);
|
|
39
|
+
let current = obj;
|
|
40
|
+
for (const seg of segments) {
|
|
41
|
+
if (current === null || current === undefined)
|
|
42
|
+
return undefined;
|
|
43
|
+
if (typeof current !== 'object')
|
|
44
|
+
return undefined;
|
|
45
|
+
current = current[seg];
|
|
46
|
+
}
|
|
47
|
+
return current;
|
|
48
|
+
}
|
|
49
|
+
function setByPath(obj, path, value) {
|
|
50
|
+
const segments = parsePath(path);
|
|
51
|
+
if (segments.length === 0)
|
|
52
|
+
return;
|
|
53
|
+
let current = obj;
|
|
54
|
+
for (let i = 0; i < segments.length - 1; i++) {
|
|
55
|
+
const seg = segments[i];
|
|
56
|
+
if (current === null || current === undefined || typeof current !== 'object')
|
|
57
|
+
return;
|
|
58
|
+
const record = current;
|
|
59
|
+
if (record[seg] === undefined || record[seg] === null) {
|
|
60
|
+
const nextSeg = segments[i + 1];
|
|
61
|
+
record[seg] = /^\d+$/.test(nextSeg) ? [] : {};
|
|
62
|
+
}
|
|
63
|
+
current = record[seg];
|
|
64
|
+
}
|
|
65
|
+
if (current !== null && current !== undefined && typeof current === 'object') {
|
|
66
|
+
current[segments[segments.length - 1]] = value;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function walkObject(obj, currentPath, result, excludeSet) {
|
|
70
|
+
if (obj === null || obj === undefined)
|
|
71
|
+
return;
|
|
72
|
+
if (typeof obj === 'string') {
|
|
73
|
+
if (obj.length > 0 && !excludeSet.has(currentPath)) {
|
|
74
|
+
result.push({ path: currentPath, value: obj });
|
|
75
|
+
}
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (Array.isArray(obj)) {
|
|
79
|
+
obj.forEach((item, i) => {
|
|
80
|
+
const itemPath = currentPath ? `${currentPath}[${i}]` : `[${i}]`;
|
|
81
|
+
walkObject(item, itemPath, result, excludeSet);
|
|
82
|
+
});
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (typeof obj === 'object') {
|
|
86
|
+
for (const [key, val] of Object.entries(obj)) {
|
|
87
|
+
const keyPath = currentPath ? `${currentPath}.${key}` : key;
|
|
88
|
+
if (excludeSet.has(keyPath))
|
|
89
|
+
continue;
|
|
90
|
+
walkObject(val, keyPath, result, excludeSet);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=json.traverser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.traverser.js","sourceRoot":"","sources":["../../src/traversers/json.traverser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TraverserPort, ExtractedString } from './traverser.interface';
|
|
2
|
+
export declare class ResponsesTraverser implements TraverserPort<Record<string, unknown>> {
|
|
3
|
+
private readonly jsonTraverser;
|
|
4
|
+
extractStrings(input: Record<string, unknown>): ExtractedString[];
|
|
5
|
+
reassemble(input: Record<string, unknown>, processed: Map<string, string>): Record<string, unknown>;
|
|
6
|
+
private resolveTargetPaths;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=responses.traverser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses.traverser.d.ts","sourceRoot":"","sources":["../../src/traversers/responses.traverser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAuBvE,qBAAa,kBACX,YAAW,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IAErD,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,eAAe,EAAE;IAQjE,UAAU,CACR,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAO1B,OAAO,CAAC,kBAAkB;CA4E3B"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResponsesTraverser = void 0;
|
|
4
|
+
const json_traverser_1 = require("./json.traverser");
|
|
5
|
+
const DEFAULT_EXCLUDE_PATHS = [
|
|
6
|
+
'model',
|
|
7
|
+
'temperature',
|
|
8
|
+
'max_output_tokens',
|
|
9
|
+
'top_p',
|
|
10
|
+
'metadata',
|
|
11
|
+
'store',
|
|
12
|
+
'tools',
|
|
13
|
+
'id',
|
|
14
|
+
'object',
|
|
15
|
+
'status',
|
|
16
|
+
'usage',
|
|
17
|
+
'created_at',
|
|
18
|
+
];
|
|
19
|
+
class ResponsesTraverser {
|
|
20
|
+
jsonTraverser = new json_traverser_1.JsonTraverser();
|
|
21
|
+
extractStrings(input) {
|
|
22
|
+
const targetPaths = this.resolveTargetPaths(input);
|
|
23
|
+
return this.jsonTraverser.extractStrings(input, {
|
|
24
|
+
targetPaths: targetPaths.length > 0 ? targetPaths : undefined,
|
|
25
|
+
excludePaths: DEFAULT_EXCLUDE_PATHS,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
reassemble(input, processed) {
|
|
29
|
+
return this.jsonTraverser.reassemble(input, processed);
|
|
30
|
+
}
|
|
31
|
+
resolveTargetPaths(payload) {
|
|
32
|
+
const paths = [];
|
|
33
|
+
if (typeof payload['input'] === 'string') {
|
|
34
|
+
paths.push('input');
|
|
35
|
+
}
|
|
36
|
+
if (Array.isArray(payload['input'])) {
|
|
37
|
+
const input = payload['input'];
|
|
38
|
+
input.forEach((item, i) => {
|
|
39
|
+
if (item && typeof item === 'object') {
|
|
40
|
+
const record = item;
|
|
41
|
+
if (Array.isArray(record['content'])) {
|
|
42
|
+
record['content'].forEach((part, j) => {
|
|
43
|
+
if (part && typeof part === 'object') {
|
|
44
|
+
const partRecord = part;
|
|
45
|
+
if (partRecord['type'] === 'input_text' &&
|
|
46
|
+
typeof partRecord['text'] === 'string') {
|
|
47
|
+
paths.push(`input[${i}].content[${j}].text`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
if (typeof payload['instructions'] === 'string') {
|
|
56
|
+
paths.push('instructions');
|
|
57
|
+
}
|
|
58
|
+
if (Array.isArray(payload['output'])) {
|
|
59
|
+
const output = payload['output'];
|
|
60
|
+
output.forEach((item, i) => {
|
|
61
|
+
if (!item || typeof item !== 'object')
|
|
62
|
+
return;
|
|
63
|
+
const record = item;
|
|
64
|
+
if (record['type'] === 'message' &&
|
|
65
|
+
Array.isArray(record['content'])) {
|
|
66
|
+
record['content'].forEach((part, j) => {
|
|
67
|
+
if (part && typeof part === 'object') {
|
|
68
|
+
const partRecord = part;
|
|
69
|
+
if (partRecord['type'] === 'output_text' &&
|
|
70
|
+
typeof partRecord['text'] === 'string') {
|
|
71
|
+
paths.push(`output[${i}].content[${j}].text`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
if (record['type'] === 'function_call' &&
|
|
77
|
+
typeof record['arguments'] === 'string') {
|
|
78
|
+
paths.push(`output[${i}].arguments`);
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return paths;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.ResponsesTraverser = ResponsesTraverser;
|
|
86
|
+
//# sourceMappingURL=responses.traverser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses.traverser.js","sourceRoot":"","sources":["../../src/traversers/responses.traverser.ts"],"names":[],"mappings":";;;AACA,qDAAiD;AAEjD,MAAM,qBAAqB,GAAG;IAC5B,OAAO;IACP,aAAa;IACb,mBAAmB;IACnB,OAAO;IACP,UAAU;IACV,OAAO;IACP,OAAO;IACP,IAAI;IACJ,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,YAAY;CACb,CAAC;AAOF,MAAa,kBAAkB;IAGZ,aAAa,GAAG,IAAI,8BAAa,EAAE,CAAC;IAErD,cAAc,CAAC,KAA8B;QAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,KAAK,EAAE;YAC9C,WAAW,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;YAC7D,YAAY,EAAE,qBAAqB;SACpC,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CACR,KAA8B,EAC9B,SAA8B;QAE9B,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACzD,CAAC;IAKO,kBAAkB,CAAC,OAAgC;QACzD,MAAM,KAAK,GAAa,EAAE,CAAC;QAK3B,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;QAGD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAc,CAAC;YAC5C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBACxB,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBACrC,MAAM,MAAM,GAAG,IAA+B,CAAC;oBAC/C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;wBACpC,MAAM,CAAC,SAAS,CAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;4BACnD,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gCACrC,MAAM,UAAU,GAAG,IAA+B,CAAC;gCACnD,IACE,UAAU,CAAC,MAAM,CAAC,KAAK,YAAY;oCACnC,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,QAAQ,EACtC,CAAC;oCACD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gCAC/C,CAAC;4BACH,CAAC;wBACH,CAAC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAGD,IAAI,OAAO,OAAO,CAAC,cAAc,CAAC,KAAK,QAAQ,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7B,CAAC;QAID,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAc,CAAC;YAC9C,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBACzB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;oBAAE,OAAO;gBAC9C,MAAM,MAAM,GAAG,IAA+B,CAAC;gBAG/C,IACE,MAAM,CAAC,MAAM,CAAC,KAAK,SAAS;oBAC5B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAChC,CAAC;oBACA,MAAM,CAAC,SAAS,CAAe,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;wBACnD,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;4BACrC,MAAM,UAAU,GAAG,IAA+B,CAAC;4BACnD,IACE,UAAU,CAAC,MAAM,CAAC,KAAK,aAAa;gCACpC,OAAO,UAAU,CAAC,MAAM,CAAC,KAAK,QAAQ,EACtC,CAAC;gCACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;4BAChD,CAAC;wBACH,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;gBAGD,IACE,MAAM,CAAC,MAAM,CAAC,KAAK,eAAe;oBAClC,OAAO,MAAM,CAAC,WAAW,CAAC,KAAK,QAAQ,EACvC,CAAC;oBACD,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAnGD,gDAmGC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { TraverserPort, ExtractedString } from './traverser.interface';
|
|
2
|
+
export declare class TextTraverser implements TraverserPort<string> {
|
|
3
|
+
extractStrings(input: string): ExtractedString[];
|
|
4
|
+
reassemble(_input: string, processed: Map<string, string>): string;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=text.traverser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.traverser.d.ts","sourceRoot":"","sources":["../../src/traversers/text.traverser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAEvE,qBAAa,aAAc,YAAW,aAAa,CAAC,MAAM,CAAC;IACzD,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,EAAE;IAKhD,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;CAGnE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TextTraverser = void 0;
|
|
4
|
+
class TextTraverser {
|
|
5
|
+
extractStrings(input) {
|
|
6
|
+
if (!input)
|
|
7
|
+
return [];
|
|
8
|
+
return [{ path: 'text', value: input }];
|
|
9
|
+
}
|
|
10
|
+
reassemble(_input, processed) {
|
|
11
|
+
return processed.get('text') ?? _input;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
exports.TextTraverser = TextTraverser;
|
|
15
|
+
//# sourceMappingURL=text.traverser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.traverser.js","sourceRoot":"","sources":["../../src/traversers/text.traverser.ts"],"names":[],"mappings":";;;AAEA,MAAa,aAAa;IACxB,cAAc,CAAC,KAAa;QAC1B,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QACtB,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,SAA8B;QACvD,OAAO,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;IACzC,CAAC;CACF;AATD,sCASC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface ExtractedString {
|
|
2
|
+
path: string;
|
|
3
|
+
value: string;
|
|
4
|
+
}
|
|
5
|
+
export interface TraverserPort<TInput> {
|
|
6
|
+
extractStrings(input: TInput): ExtractedString[];
|
|
7
|
+
reassemble(input: TInput, processed: Map<string, string>): TInput;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=traverser.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traverser.interface.d.ts","sourceRoot":"","sources":["../../src/traversers/traverser.interface.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAE9B,IAAI,EAAE,MAAM,CAAC;IAEb,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,MAAM,WAAW,aAAa,CAAC,MAAM;IAEnC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,EAAE,CAAC;IAGjD,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC;CACnE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traverser.interface.js","sourceRoot":"","sources":["../../src/traversers/traverser.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { DetectedEntityMeta } from './detected-entity.interface';
|
|
2
|
+
import { EntityType } from './entity-type';
|
|
3
|
+
import { CompletionsMessage } from './llm-message.interface';
|
|
4
|
+
import { MappingData } from './mapping-data.interface';
|
|
5
|
+
export interface AnonymizeTextResult {
|
|
6
|
+
anonymized: string;
|
|
7
|
+
mappingData: MappingData;
|
|
8
|
+
detectedEntities: DetectedEntityMeta[];
|
|
9
|
+
stats: Partial<Record<EntityType, number>>;
|
|
10
|
+
}
|
|
11
|
+
export interface AnonymizeMessagesResult {
|
|
12
|
+
messages: CompletionsMessage[];
|
|
13
|
+
mappingData: MappingData;
|
|
14
|
+
detectedEntities: DetectedEntityMeta[];
|
|
15
|
+
stats: Partial<Record<EntityType, number>>;
|
|
16
|
+
}
|
|
17
|
+
export interface AnonymizePayloadResult<T extends Record<string, unknown>> {
|
|
18
|
+
payload: T;
|
|
19
|
+
mappingData: MappingData;
|
|
20
|
+
detectedEntities: DetectedEntityMeta[];
|
|
21
|
+
stats: Partial<Record<EntityType, number>>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=anonymize-result.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anonymize-result.interface.d.ts","sourceRoot":"","sources":["../../src/types/anonymize-result.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAGvD,MAAM,WAAW,mBAAmB;IAElC,UAAU,EAAE,MAAM,CAAC;IAEnB,WAAW,EAAE,WAAW,CAAC;IAEzB,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;IAEvC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;CAC5C;AAGD,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;IACvC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;CAC5C;AAGD,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACvE,OAAO,EAAE,CAAC,CAAC;IACX,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;IACvC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;CAC5C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anonymize-result.interface.js","sourceRoot":"","sources":["../../src/types/anonymize-result.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CompletionsMessage } from './llm-message.interface';
|
|
2
|
+
import { MalformedToken } from './malformed-token.interface';
|
|
3
|
+
export interface DeanonymizeTextResult {
|
|
4
|
+
restored: string;
|
|
5
|
+
unresolvedTokens: string[];
|
|
6
|
+
malformedTokens: MalformedToken[];
|
|
7
|
+
}
|
|
8
|
+
export interface DeanonymizeMessagesResult {
|
|
9
|
+
messages: CompletionsMessage[];
|
|
10
|
+
unresolvedTokens: string[];
|
|
11
|
+
malformedTokens: MalformedToken[];
|
|
12
|
+
}
|
|
13
|
+
export interface DeanonymizePayloadResult<T extends Record<string, unknown>> {
|
|
14
|
+
payload: T;
|
|
15
|
+
unresolvedTokens: string[];
|
|
16
|
+
malformedTokens: MalformedToken[];
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=deanonymize-result.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deanonymize-result.interface.d.ts","sourceRoot":"","sources":["../../src/types/deanonymize-result.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC;AAGD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC;AAGD,MAAM,WAAW,wBAAwB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACzE,OAAO,EAAE,CAAC,CAAC;IACX,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deanonymize-result.interface.js","sourceRoot":"","sources":["../../src/types/deanonymize-result.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { EntityType } from './entity-type';
|
|
2
|
+
export interface DetectedEntity {
|
|
3
|
+
type: EntityType;
|
|
4
|
+
value: string;
|
|
5
|
+
position: {
|
|
6
|
+
start: number;
|
|
7
|
+
end: number;
|
|
8
|
+
};
|
|
9
|
+
detectedBy: 'regex' | 'dictionary' | 'contextual';
|
|
10
|
+
confidence: number;
|
|
11
|
+
}
|
|
12
|
+
export interface DetectedEntityMeta {
|
|
13
|
+
type: EntityType;
|
|
14
|
+
token: string;
|
|
15
|
+
position: {
|
|
16
|
+
start: number;
|
|
17
|
+
end: number;
|
|
18
|
+
};
|
|
19
|
+
detectedBy: 'regex' | 'dictionary' | 'contextual';
|
|
20
|
+
confidence: number;
|
|
21
|
+
sourcePath: string | null;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=detected-entity.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detected-entity.interface.d.ts","sourceRoot":"","sources":["../../src/types/detected-entity.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IAEjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,UAAU,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAC;IAClD,UAAU,EAAE,MAAM,CAAC;CACpB;AAGD,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,UAAU,CAAC;IAEjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,UAAU,EAAE,OAAO,GAAG,YAAY,GAAG,YAAY,CAAC;IAClD,UAAU,EAAE,MAAM,CAAC;IAEnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detected-entity.interface.js","sourceRoot":"","sources":["../../src/types/detected-entity.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const DETECTION_CONTEXT: {
|
|
2
|
+
readonly SALES_CALL_TRANSCRIPT: "sales_call_transcript";
|
|
3
|
+
readonly CHAT_MESSAGE: "chat_message";
|
|
4
|
+
readonly OUTREACH_MESSAGE: "outreach_message";
|
|
5
|
+
readonly TRAINING_SCENARIO: "training_scenario";
|
|
6
|
+
readonly LEAK_ANALYSIS: "leak_analysis";
|
|
7
|
+
readonly GENERIC: "generic";
|
|
8
|
+
};
|
|
9
|
+
export type DetectionContext = (typeof DETECTION_CONTEXT)[keyof typeof DETECTION_CONTEXT];
|
|
10
|
+
//# sourceMappingURL=detection-context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detection-context.d.ts","sourceRoot":"","sources":["../../src/types/detection-context.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,iBAAiB;;;;;;;CAOpB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAC1B,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DETECTION_CONTEXT = void 0;
|
|
4
|
+
exports.DETECTION_CONTEXT = {
|
|
5
|
+
SALES_CALL_TRANSCRIPT: 'sales_call_transcript',
|
|
6
|
+
CHAT_MESSAGE: 'chat_message',
|
|
7
|
+
OUTREACH_MESSAGE: 'outreach_message',
|
|
8
|
+
TRAINING_SCENARIO: 'training_scenario',
|
|
9
|
+
LEAK_ANALYSIS: 'leak_analysis',
|
|
10
|
+
GENERIC: 'generic',
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=detection-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detection-context.js","sourceRoot":"","sources":["../../src/types/detection-context.ts"],"names":[],"mappings":";;;AAAa,QAAA,iBAAiB,GAAG;IAC/B,qBAAqB,EAAE,uBAAuB;IAC9C,YAAY,EAAE,cAAc;IAC5B,gBAAgB,EAAE,kBAAkB;IACpC,iBAAiB,EAAE,mBAAmB;IACtC,aAAa,EAAE,eAAe;IAC9B,OAAO,EAAE,SAAS;CACV,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const ENTITY_TYPE: {
|
|
2
|
+
readonly PERSON: "PERSON";
|
|
3
|
+
readonly PHONE: "PHONE";
|
|
4
|
+
readonly EMAIL: "EMAIL";
|
|
5
|
+
readonly INN: "INN";
|
|
6
|
+
readonly PASSPORT: "PASSPORT";
|
|
7
|
+
readonly CARD: "CARD";
|
|
8
|
+
readonly AMOUNT: "AMOUNT";
|
|
9
|
+
readonly DATE_OF_BIRTH: "DATE_OF_BIRTH";
|
|
10
|
+
readonly ADDRESS: "ADDRESS";
|
|
11
|
+
readonly COMPANY: "COMPANY";
|
|
12
|
+
readonly ACCOUNT: "ACCOUNT";
|
|
13
|
+
};
|
|
14
|
+
export type EntityType = (typeof ENTITY_TYPE)[keyof typeof ENTITY_TYPE];
|
|
15
|
+
export declare const ENTITY_TYPES: readonly EntityType[];
|
|
16
|
+
//# sourceMappingURL=entity-type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-type.d.ts","sourceRoot":"","sources":["../../src/types/entity-type.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW;;;;;;;;;;;;CAYd,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AACxE,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EAA+B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ENTITY_TYPES = exports.ENTITY_TYPE = void 0;
|
|
4
|
+
exports.ENTITY_TYPE = {
|
|
5
|
+
PERSON: 'PERSON',
|
|
6
|
+
PHONE: 'PHONE',
|
|
7
|
+
EMAIL: 'EMAIL',
|
|
8
|
+
INN: 'INN',
|
|
9
|
+
PASSPORT: 'PASSPORT',
|
|
10
|
+
CARD: 'CARD',
|
|
11
|
+
AMOUNT: 'AMOUNT',
|
|
12
|
+
DATE_OF_BIRTH: 'DATE_OF_BIRTH',
|
|
13
|
+
ADDRESS: 'ADDRESS',
|
|
14
|
+
COMPANY: 'COMPANY',
|
|
15
|
+
ACCOUNT: 'ACCOUNT',
|
|
16
|
+
};
|
|
17
|
+
exports.ENTITY_TYPES = Object.values(exports.ENTITY_TYPE);
|
|
18
|
+
//# sourceMappingURL=entity-type.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity-type.js","sourceRoot":"","sources":["../../src/types/entity-type.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG;IACzB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,aAAa,EAAE,eAAe;IAC9B,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;CACV,CAAC;AAGE,QAAA,YAAY,GAA0B,MAAM,CAAC,MAAM,CAAC,mBAAW,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface CompletionsMessage {
|
|
2
|
+
role: 'system' | 'user' | 'assistant' | 'tool';
|
|
3
|
+
content: string | CompletionsContentPart[] | null;
|
|
4
|
+
tool_calls?: CompletionsToolCall[];
|
|
5
|
+
tool_call_id?: string;
|
|
6
|
+
name?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface CompletionsContentPart {
|
|
9
|
+
type: 'text' | 'image_url';
|
|
10
|
+
text?: string;
|
|
11
|
+
image_url?: {
|
|
12
|
+
url: string;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export interface CompletionsToolCall {
|
|
16
|
+
id: string;
|
|
17
|
+
type: 'function';
|
|
18
|
+
function: {
|
|
19
|
+
name: string;
|
|
20
|
+
arguments: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=llm-message.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-message.interface.d.ts","sourceRoot":"","sources":["../../src/types/llm-message.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,GAAG,sBAAsB,EAAE,GAAG,IAAI,CAAC;IAClD,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE;QACR,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-message.interface.js","sourceRoot":"","sources":["../../src/types/llm-message.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { MalformedToken } from './malformed-token.interface';
|
|
2
|
+
export interface LlmResponseValidation {
|
|
3
|
+
isValid: boolean;
|
|
4
|
+
missingTokens: string[];
|
|
5
|
+
malformedTokens: MalformedToken[];
|
|
6
|
+
validTokens: string[];
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=llm-validation.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-validation.interface.d.ts","sourceRoot":"","sources":["../../src/types/llm-validation.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-validation.interface.js","sourceRoot":"","sources":["../../src/types/llm-validation.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"malformed-token.interface.d.ts","sourceRoot":"","sources":["../../src/types/malformed-token.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"malformed-token.interface.js","sourceRoot":"","sources":["../../src/types/malformed-token.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { EntityType } from './entity-type';
|
|
2
|
+
export interface MappingData {
|
|
3
|
+
version: 1;
|
|
4
|
+
tokens: Record<string, string>;
|
|
5
|
+
nextCounters: Partial<Record<EntityType, number>>;
|
|
6
|
+
reverseIndex: Record<string, string>;
|
|
7
|
+
}
|
|
8
|
+
export declare function createEmptyMapping(): MappingData;
|
|
9
|
+
//# sourceMappingURL=mapping-data.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapping-data.interface.d.ts","sourceRoot":"","sources":["../../src/types/mapping-data.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAU3C,MAAM,WAAW,WAAW;IAE1B,OAAO,EAAE,CAAC,CAAC;IAOX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAG/B,YAAY,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAOlD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAGD,wBAAgB,kBAAkB,IAAI,WAAW,CAOhD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createEmptyMapping = createEmptyMapping;
|
|
4
|
+
function createEmptyMapping() {
|
|
5
|
+
return {
|
|
6
|
+
version: 1,
|
|
7
|
+
tokens: {},
|
|
8
|
+
nextCounters: {},
|
|
9
|
+
reverseIndex: {},
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=mapping-data.interface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapping-data.interface.js","sourceRoot":"","sources":["../../src/types/mapping-data.interface.ts"],"names":[],"mappings":";;AAiCA,gDAOC;AAPD,SAAgB,kBAAkB;IAChC,OAAO;QACL,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,EAAE;QACV,YAAY,EAAE,EAAE;QAChB,YAAY,EAAE,EAAE;KACjB,CAAC;AACJ,CAAC"}
|