@studio-foundation/anonymizer 0.3.0-beta.1
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/ARCHITECTURE.md +40 -0
- package/LICENSE +663 -0
- package/README.md +90 -0
- package/dist/detector.d.ts +7 -0
- package/dist/detector.d.ts.map +1 -0
- package/dist/detector.js +92 -0
- package/dist/detector.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/tokenizer.d.ts +17 -0
- package/dist/tokenizer.d.ts.map +1 -0
- package/dist/tokenizer.js +60 -0
- package/dist/tokenizer.js.map +1 -0
- package/dist/types.d.ts +16 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +28 -0
- package/src/detector.ts +97 -0
- package/src/index.ts +52 -0
- package/src/tokenizer.ts +63 -0
- package/src/types.ts +24 -0
- package/tests/anonymizer.test.ts +88 -0
- package/tests/detector.test.ts +47 -0
- package/tests/tokenizer.test.ts +55 -0
- package/tsconfig.json +20 -0
package/ARCHITECTURE.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# @studio-foundation/anonymizer
|
|
2
|
+
|
|
3
|
+
Bibliothèque de détection et anonymisation de PII. Remplace les données sensibles par des tokens avant envoi au LLM, avec keymap pour restaurer les valeurs originales.
|
|
4
|
+
|
|
5
|
+
## Concept
|
|
6
|
+
|
|
7
|
+
`anonymize(text)` → `{ text: "Hi [PERSON_1]...", keymap: { "PERSON_1": "Marie" } }`
|
|
8
|
+
`deanonymize(text, keymap)` → texte original restauré.
|
|
9
|
+
|
|
10
|
+
Même valeur → même token, au sein d'un appel et entre appels si `seedKeymap` fourni.
|
|
11
|
+
|
|
12
|
+
## Règles
|
|
13
|
+
|
|
14
|
+
- **ZERO dépendance `@studio/*`** — bibliothèque pure, réutilisable hors de Studio
|
|
15
|
+
- Stateless : `Tokenizer` créé à chaque appel (ou seedé via `seedKeymap`)
|
|
16
|
+
- Détection en 2 phases : regex haute précision (email, phone, SSN, credit card) + noms via patterns de salutation (best-effort)
|
|
17
|
+
- La détection de personnes est non-fatale — silencieusement skippée sur erreur
|
|
18
|
+
- Les spans sont non-overlapping : premier match gagne, position marquée occupée
|
|
19
|
+
|
|
20
|
+
## Fichiers clés
|
|
21
|
+
|
|
22
|
+
- `index.ts` — `anonymize(text, options?)`, `deanonymize(text, keymap)`, exports publics
|
|
23
|
+
- `detector.ts` — `detectPII(text)` : détection regex + noms par salutation
|
|
24
|
+
- `tokenizer.ts` — `Tokenizer` : génération et résolution de tokens séquentiels
|
|
25
|
+
- `types.ts` — `PIICategory`, `PIISpan`, `PIIDetectionResult`, `AnonymizerOptions`
|
|
26
|
+
|
|
27
|
+
## Catégories PII
|
|
28
|
+
|
|
29
|
+
`person` → `PERSON_N`, `email` → `EMAIL_N`, `phone` → `PHONE_N`,
|
|
30
|
+
`ssn` → `SSN_N`, `credit_card` → `CREDIT_CARD_N`, `address` → `ADDRESS_N` (réservé)
|
|
31
|
+
|
|
32
|
+
## Intégration dans Studio
|
|
33
|
+
|
|
34
|
+
Utilisé par `runner/src/middleware/anonymization.ts` (`AnonymizationMiddleware`).
|
|
35
|
+
Activé via `--anonymize` sur `studio run` ou `anonymize: true` dans l'agent YAML.
|
|
36
|
+
Keymap persisté dans `.studio/runs/anonymization/<run-id>.keymap.json`.
|
|
37
|
+
|
|
38
|
+
## Dépendances
|
|
39
|
+
|
|
40
|
+
Aucune `@studio/*`. Bibliothèque autonome.
|