@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.
@@ -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.