@ai-pip/csl 0.1.0 → 0.1.3

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 (59) hide show
  1. package/README.md +607 -56
  2. package/package.json +10 -28
  3. package/src/index.test.ts +429 -0
  4. package/{index.ts → src/index.ts} +100 -65
  5. package/src/test-external.js +547 -0
  6. package/layers/csl/adapters/index.ts +0 -9
  7. package/layers/csl/adapters/input/DOMAdapter.ts +0 -236
  8. package/layers/csl/adapters/input/UIAdapter.ts +0 -0
  9. package/layers/csl/adapters/output/ConsoleLogger.ts +0 -34
  10. package/layers/csl/adapters/output/CryptoHashGenerator.ts +0 -29
  11. package/layers/csl/adapters/output/FilePolicyRepository.ts +0 -0
  12. package/layers/csl/adapters/output/InMemoryPolicyRepository.ts +0 -135
  13. package/layers/csl/adapters/output/SystemTimestampProvider.ts +0 -9
  14. package/layers/csl/domain/entities/CSLResult.ts +0 -309
  15. package/layers/csl/domain/entities/Segment.ts +0 -338
  16. package/layers/csl/domain/entities/index.ts +0 -2
  17. package/layers/csl/domain/exceptions/ClassificationError.ts +0 -26
  18. package/layers/csl/domain/exceptions/SegmentationError.ts +0 -30
  19. package/layers/csl/domain/exceptions/index.ts +0 -2
  20. package/layers/csl/domain/index.ts +0 -4
  21. package/layers/csl/domain/services/AnomalyService.ts +0 -255
  22. package/layers/csl/domain/services/LineageService.ts +0 -224
  23. package/layers/csl/domain/services/NormalizationService.ts +0 -392
  24. package/layers/csl/domain/services/OriginClassificationService.ts +0 -69
  25. package/layers/csl/domain/services/PiDetectionService.ts +0 -475
  26. package/layers/csl/domain/services/PolicyService.ts +0 -296
  27. package/layers/csl/domain/services/SegmentClassificationService.ts +0 -105
  28. package/layers/csl/domain/services/SerializationService.ts +0 -229
  29. package/layers/csl/domain/services/index.ts +0 -7
  30. package/layers/csl/domain/value-objects/AnomalyScore.ts +0 -23
  31. package/layers/csl/domain/value-objects/ContentHash.ts +0 -54
  32. package/layers/csl/domain/value-objects/LineageEntry.ts +0 -42
  33. package/layers/csl/domain/value-objects/Origin-map.ts +0 -67
  34. package/layers/csl/domain/value-objects/Origin.ts +0 -99
  35. package/layers/csl/domain/value-objects/Pattern.ts +0 -221
  36. package/layers/csl/domain/value-objects/PiDetection.ts +0 -140
  37. package/layers/csl/domain/value-objects/PiDetectionResult.ts +0 -275
  38. package/layers/csl/domain/value-objects/PolicyRule.ts +0 -151
  39. package/layers/csl/domain/value-objects/TrustLevel.ts +0 -34
  40. package/layers/csl/domain/value-objects/index.ts +0 -10
  41. package/layers/csl/index.ts +0 -3
  42. package/layers/csl/ports/index.ts +0 -10
  43. package/layers/csl/ports/input/ClassificationPort.ts +0 -76
  44. package/layers/csl/ports/input/SegmentationPort.ts +0 -81
  45. package/layers/csl/ports/output/DOMAdapter.ts +0 -14
  46. package/layers/csl/ports/output/HashGenerator.ts +0 -18
  47. package/layers/csl/ports/output/Logger.ts +0 -17
  48. package/layers/csl/ports/output/PolicyRepository.ts +0 -29
  49. package/layers/csl/ports/output/SegmentClassified.ts +0 -8
  50. package/layers/csl/ports/output/TimeStampProvider.ts +0 -5
  51. package/layers/csl/services/CSLService.ts +0 -393
  52. package/layers/csl/services/index.ts +0 -1
  53. package/layers/csl/types/entities-types.ts +0 -37
  54. package/layers/csl/types/index.ts +0 -4
  55. package/layers/csl/types/pi-types.ts +0 -111
  56. package/layers/csl/types/port-output-types.ts +0 -17
  57. package/layers/csl/types/value-objects-types.ts +0 -213
  58. package/layers/csl/utils/colors.ts +0 -25
  59. package/layers/csl/utils/pattern-helpers.ts +0 -174
package/README.md CHANGED
@@ -1,7 +1,24 @@
1
1
  # @ai-pip/csl - SDK de Context Segmentation Layer
2
2
 
3
- SDK oficial para la capa de segmentación de contexto (CSL) del protocolo AI-PIP. La CSL es responsable de clasificar, etiquetar y aislar el contenido según origen, confiabilidad y riesgo operacional.
4
-
3
+ SDK oficial para la capa de segmentación de contexto (CSL) del protocolo AI-PIP. La CSL es responsable de clasificar, etiquetar y aislar el contenido según origen, confiabilidad y riesgo operacional, protegiendo aplicaciones contra prompt injection y otros ataques de seguridad en LLM.
4
+
5
+ ## 📋 Tabla de Contenidos
6
+
7
+ - [Requisitos](#requisitos)
8
+ - [Instalación](#instalación)
9
+ - [Arquitectura y Conceptos](#arquitectura-y-conceptos)
10
+ - [Guía de Uso](#guía-de-uso)
11
+ - [API Reference Completa](#api-reference-completa)
12
+ - [Features Avanzadas](#features-avanzadas)
13
+ - [Servicios de Dominio](#servicios-de-dominio)
14
+ - [Patrones de Uso](#patrones-de-uso)
15
+ - [Componentes Personalizados](#componentes-personalizados)
16
+ - [Roadmap](#roadmap)
17
+ - [Feedback](#feedback)
18
+ - [Más Información](#más-información)
19
+ - [Licencia](#licencia)
20
+
21
+ <a id="requisitos"></a>
5
22
  ## ⚙️ Requisitos
6
23
 
7
24
  Este SDK está escrito en **TypeScript puro** y requiere:
@@ -12,6 +29,7 @@ Este SDK está escrito en **TypeScript puro** y requiere:
12
29
 
13
30
  > **Nota:** Este paquete se distribuye como código TypeScript fuente, por lo que necesitas una versión moderna de Node.js que soporte las características de ES modules y TypeScript nativo, o un bundler/transpilador configurado en tu proyecto.
14
31
 
32
+ <a id="instalación"></a>
15
33
  ## 📦 Instalación
16
34
 
17
35
  ```bash
@@ -22,9 +40,36 @@ pnpm add @ai-pip/csl
22
40
  yarn add @ai-pip/csl
23
41
  ```
24
42
 
25
- ## 🚀 Uso Básico
43
+ <a id="arquitectura-y-conceptos"></a>
44
+ ## 🏗️ Arquitectura y Conceptos
45
+
46
+ ### Pipeline de Procesamiento CSL
47
+
48
+ El CSL procesa contenido a través de un pipeline de 9 etapas:
49
+
50
+ 1. **Adaptación DOM** - Extrae segmentos de contenido del DOM
51
+ 2. **Normalización** - Normaliza el contenido (Unicode, espacios, etc.)
52
+ 3. **Clasificación de Origen** - Determina el origen y asigna Trust Level
53
+ 4. **Detección de Prompt Injection** - Detecta intentos de inyección de prompts
54
+ 5. **Generación de Hash** - Genera hash criptográfico del contenido
55
+ 6. **Cálculo de Anomalía** - Calcula score de riesgo/anomalía
56
+ 7. **Validación de Políticas** - Valida contra políticas de seguridad (opcional)
57
+ 8. **Tracking de Linaje** - Registra todas las operaciones para auditoría
58
+ 9. **Agregación de Resultados** - Genera `CSLResult` con todos los segmentos
59
+
60
+ ### Conceptos Clave
61
+
62
+ - **Segment**: Unidad básica de contenido procesado
63
+ - **Origin**: Origen del contenido (USER, DOM_VISIBLE, DOM_HIDDEN, etc.)
64
+ - **Trust Level**: Nivel de confianza (TC: Totalmente Confiable, STC: Semi-Confiable, UC: No Confiable)
65
+ - **Anomaly Score**: Score de riesgo calculado (0-1)
66
+ - **PI Detection**: Detección de prompt injection con múltiples patrones
67
+ - **Lineage**: Trazabilidad completa de todas las operaciones
68
+
69
+ <a id="guía-de-uso"></a>
70
+ ## 🚀 Guía de Uso
26
71
 
27
- ### Ejemplo Simple
72
+ ### Uso Básico
28
73
 
29
74
  ```typescript
30
75
  import { createCSLService } from '@ai-pip/csl'
@@ -42,6 +87,7 @@ console.log(`Segmentos bloqueados: ${result.getBlockedCount()}`)
42
87
  // Iterar sobre segmentos
43
88
  result.segments.forEach(segment => {
44
89
  console.log(`Segmento ${segment.id}:`)
90
+ console.log(` - Origen: ${segment.origin.type}`)
45
91
  console.log(` - Nivel de confianza: ${segment.trustLevel?.value}`)
46
92
  console.log(` - Contenido: ${segment.content}`)
47
93
  console.log(` - Score de anomalía: ${segment.anomalyScore?.score}`)
@@ -52,9 +98,7 @@ result.segments.forEach(segment => {
52
98
  })
53
99
  ```
54
100
 
55
- ## ⚙️ Configuración Avanzada
56
-
57
- ### Con Opciones Personalizadas
101
+ ### Configuración Avanzada
58
102
 
59
103
  ```typescript
60
104
  import { createCSLService } from '@ai-pip/csl'
@@ -73,7 +117,7 @@ const cslService = createCSLService({
73
117
  const result = await cslService.segment(document.body)
74
118
  ```
75
119
 
76
- ### Con Dependencias Personalizadas
120
+ ### Personalización de Dependencias
77
121
 
78
122
  ```typescript
79
123
  import {
@@ -112,23 +156,38 @@ const cslService = createCSLService({
112
156
  const result = await cslService.segment(document.body)
113
157
  ```
114
158
 
115
- ## 📚 API Reference
159
+ <a id="api-reference-completa"></a>
160
+ ## 📚 API Reference Completa
116
161
 
117
162
  ### `createCSLService(options?)`
118
163
 
119
164
  Función factory que crea una instancia de `CSLService` con todas sus dependencias configuradas.
120
165
 
121
166
  **Parámetros:**
122
- - `options` (opcional): Objeto de configuración
167
+ - `options` (opcional): Objeto de configuración de tipo `CreateCSLServiceOptions`
123
168
  - `enablePolicyValidation?: boolean` - Habilita validación de políticas (default: `true`)
124
169
  - `enableLineageTracking?: boolean` - Habilita tracking de linaje (default: `true`)
125
170
  - `hashAlgorithm?: 'sha256' | 'sha512'` - Algoritmo de hash (default: `'sha256'`)
126
- - `policyRepository?: PolicyRepositoryPort` - Repositorio de políticas personalizado
127
- - `logger?: LoggerPort` - Logger personalizado
128
- - `hashGenerator?: HashGeneratorPort` - Generador de hash personalizado
129
- - `timestampProvider?: TimeStampProviderPort` - Proveedor de timestamps personalizado
171
+ - `policyRepository?: PolicyRepositoryPort` - Repositorio de políticas personalizado (default: `InMemoryPolicyRepository`)
172
+ - `logger?: LoggerPort` - Logger personalizado (default: `ConsoleLogger`)
173
+ - `hashGenerator?: HashGeneratorPort` - Generador de hash personalizado (default: `CryptoHashGenerator`)
174
+ - `timestampProvider?: TimeStampProviderPort` - Proveedor de timestamps personalizado (default: `SystemTimestampProvider`)
175
+
176
+ **Retorna:** `CSLService` - Instancia configurada del servicio CSL
177
+
178
+ **Ejemplo completo:**
179
+ ```typescript
180
+ import { createCSLService, type CreateCSLServiceOptions } from '@ai-pip/csl'
181
+
182
+ // Todas las opciones son opcionales
183
+ const options: CreateCSLServiceOptions = {
184
+ enablePolicyValidation: true,
185
+ enableLineageTracking: true,
186
+ hashAlgorithm: 'sha512'
187
+ }
130
188
 
131
- **Retorna:** `CSLService`
189
+ const cslService = createCSLService(options)
190
+ ```
132
191
 
133
192
  ### `CSLService.segment(element)`
134
193
 
@@ -141,58 +200,103 @@ Procesa un elemento DOM o documento a través del pipeline completo de CSL.
141
200
 
142
201
  **Lanza:** `SegmentationError` si el procesamiento falla
143
202
 
203
+ **Ejemplo:**
204
+ ```typescript
205
+ const result = await cslService.segment(document.body)
206
+ // o para un elemento específico
207
+ const form = document.getElementById('user-form')
208
+ const result = await cslService.segment(form)
209
+ ```
210
+
144
211
  ### `CSLResult`
145
212
 
146
213
  Resultado del procesamiento de segmentación.
147
214
 
148
215
  **Propiedades:**
149
- - `segments: Segment[]` - Array de segmentos procesados
216
+ - `segments: readonly Segment[]` - Array inmutable de segmentos procesados
150
217
  - `metadata: CSLResultMetadata` - Metadatos del procesamiento
151
- - `lineage: LineageEntry[]` - Entradas de linaje para trazabilidad
218
+ - `total_segments: number` - Total de segmentos procesados
219
+ - `blocked_segments: string[]` - IDs de segmentos bloqueados
220
+ - `processing_time_ms: number` - Tiempo de procesamiento en milisegundos
221
+ - `trust_distribution: { TC: number, STC: number, UC: number }` - Distribución de niveles de confianza
222
+ - `anomaly_score: number` - Score promedio de anomalía (0-1)
223
+ - `lineage: readonly LineageEntry[]` - Entradas de linaje para trazabilidad
152
224
 
153
225
  **Métodos:**
154
226
  - `getBlockedCount(): number` - Retorna el número de segmentos bloqueados
155
227
  - `getTrustDistribution(): { TC: number, STC: number, UC: number }` - Distribución de niveles de confianza
156
228
 
229
+ **Ejemplo:**
230
+ ```typescript
231
+ const result = await cslService.segment(document.body)
232
+
233
+ console.log(`Total: ${result.metadata.total_segments}`)
234
+ console.log(`Bloqueados: ${result.getBlockedCount()}`)
235
+ console.log(`TC: ${result.metadata.trust_distribution.TC}`)
236
+ console.log(`Score promedio: ${result.metadata.anomaly_score.toFixed(2)}`)
237
+ ```
238
+
157
239
  ### `Segment`
158
240
 
159
241
  Representa un segmento de contenido procesado.
160
242
 
161
243
  **Propiedades:**
162
- - `id: string` - Identificador único
163
- - `content: string` - Contenido del segmento
164
- - `origin: Origin` - Origen del contenido
165
- - `trustLevel?: TrustLevel` - Nivel de confianza (TC, STC, UC)
166
- - `anomalyScore?: AnomalyScore` - Score de anomalía
167
- - `piDetection?: PiDetection` - Detección de prompt injection
168
- - `hash?: ContentHash` - Hash del contenido
169
- - `lineage?: LineageEntry[]` - Entradas de linaje
244
+ - `id: string` - Identificador único del segmento
245
+ - `content: string` - Contenido del segmento (normalizado)
246
+ - `origin: Origin` - Origen del contenido (accesible como `segment.origin.type`)
247
+ - Tipos disponibles: `USER`, `DOM_VISIBLE`, `DOM_HIDDEN`, `DOM_ATTRIBUTE`, `SYSTEM_GENERATED`, `SCRIPT_INJECTED`, `NETWORK_FETCHED`, `UNKNOWN`
248
+ - `trustLevel?: TrustLevel` - Nivel de confianza (TC, STC, UC) (accesible como `segment.trustLevel?.value`)
249
+ - `anomalyScore?: AnomalyScore` - Score de anomalía (0-1) (accesible como `segment.anomalyScore?.score`)
250
+ - `score: number` - Score numérico (0-1)
251
+ - `action: 'ALLOW' | 'WARN' | 'BLOCK'` - Acción recomendada
252
+ - `piDetection?: PiDetectionResult` - Detección de prompt injection
253
+ - `detected: boolean` - Si se detectó PI
254
+ - `score: number` - Score agregado (0-1)
255
+ - `action: 'ALLOW' | 'WARN' | 'BLOCK'` - Acción recomendada
256
+ - `detections: PiDetection[]` - Array de detecciones individuales
257
+ - `pattern_type: string` - Tipo de patrón detectado
258
+ - `matched_pattern: string` - Texto que coincidió
259
+ - `position: { start: number, end: number }` - Posición en el contenido
260
+ - `confidence: number` - Confianza de la detección (0-1)
261
+ - `hash?: ContentHash` - Hash criptográfico del contenido (accesible como `segment.hash?.value`)
262
+ - `value: string` - Valor del hash
263
+ - `algorithm: 'sha256' | 'sha512'` - Algoritmo usado
264
+ - `lineage?: LineageEntry[]` - Entradas de linaje del segmento
265
+ - `step: string` - Paso del procesamiento
266
+ - `timestamp: number` - Timestamp Unix en milisegundos
267
+ - `notes?: string` - Notas adicionales
170
268
 
171
269
  **Métodos:**
172
- - `shouldBlock(): boolean` - Indica si el segmento debe ser bloqueado
173
-
174
- ## 🔍 Ejemplos de Uso
175
-
176
- ### Procesar un Formulario
270
+ - `shouldBlock(): boolean` - Indica si el segmento debe ser bloqueado según políticas y scores
177
271
 
272
+ **Ejemplo:**
178
273
  ```typescript
179
- import { createCSLService } from '@ai-pip/csl'
180
-
181
- const cslService = createCSLService()
182
-
183
- // Procesar un formulario específico
184
- const form = document.getElementById('user-form')
185
- const result = await cslService.segment(form)
274
+ result.segments.forEach(segment => {
275
+ console.log(`ID: ${segment.id}`)
276
+ console.log(`Origen: ${segment.origin.type}`)
277
+ console.log(`Trust Level: ${segment.trustLevel?.value}`)
278
+ console.log(`Anomaly Score: ${segment.anomalyScore?.score}`)
279
+ console.log(`Hash: ${segment.hash?.value}`)
280
+
281
+ if (segment.piDetection?.detected) {
282
+ console.log(`PI Detectado: ${segment.piDetection.score}`)
283
+ segment.piDetection.detections.forEach(det => {
284
+ console.log(` - ${det.pattern_type}: ${det.matched_pattern}`)
285
+ })
286
+ }
287
+
288
+ if (segment.shouldBlock()) {
289
+ console.log('⚠️ BLOQUEADO')
290
+ }
291
+ })
292
+ ```
186
293
 
187
- // Filtrar solo segmentos confiables
188
- const trustedSegments = result.segments.filter(
189
- segment => segment.trustLevel?.value === 'TC'
190
- )
294
+ <a id="features-avanzadas"></a>
295
+ ## 🔍 Features Avanzadas
191
296
 
192
- console.log(`Segmentos confiables: ${trustedSegments.length}`)
193
- ```
297
+ ### 1. Detección de Prompt Injection
194
298
 
195
- ### Detectar Prompt Injection
299
+ El SDK incluye detección heurística de prompt injection con múltiples patrones:
196
300
 
197
301
  ```typescript
198
302
  import { createCSLService } from '@ai-pip/csl'
@@ -207,12 +311,31 @@ const suspiciousSegments = result.segments.filter(
207
311
 
208
312
  suspiciousSegments.forEach(segment => {
209
313
  console.warn(`⚠️ Prompt injection detectado en segmento ${segment.id}`)
210
- console.warn(` Tipo: ${segment.piDetection?.patternType}`)
211
- console.warn(` Confianza: ${segment.piDetection?.confidence}`)
314
+ console.warn(` Score agregado: ${segment.piDetection?.score}`)
315
+ console.warn(` Acción: ${segment.piDetection?.action}`)
316
+ console.warn(` Total de detecciones: ${segment.piDetection?.detections.length}`)
317
+
318
+ // Acceder a detalles de cada detección
319
+ segment.piDetection?.detections.forEach((detection, idx) => {
320
+ console.warn(` Detección ${idx + 1}:`)
321
+ console.warn(` - Tipo: ${detection.pattern_type}`)
322
+ console.warn(` - Confianza: ${detection.confidence}`)
323
+ console.warn(` - Texto detectado: "${detection.matched_pattern}"`)
324
+ console.warn(` - Posición: ${detection.position.start}-${detection.position.end}`)
325
+ })
212
326
  })
213
327
  ```
214
328
 
215
- ### Trabajar con Políticas
329
+ **Tipos de patrones detectados:**
330
+ - `instruction_override` - Intentos de sobrescribir instrucciones
331
+ - `role_swapping` - Cambios de rol del asistente
332
+ - `privilege_escalation` - Escalación de privilegios
333
+ - `jailbreak` - Intentos de jailbreak
334
+ - `invisible_chars` - Caracteres invisibles
335
+
336
+ ### 2. Sistema de Políticas
337
+
338
+ Configura políticas de seguridad personalizadas:
216
339
 
217
340
  ```typescript
218
341
  import {
@@ -262,7 +385,9 @@ result.segments.forEach(segment => {
262
385
  })
263
386
  ```
264
387
 
265
- ### Acceder al Linaje
388
+ ### 3. Tracking de Linaje Completo
389
+
390
+ Habilita trazabilidad completa de todas las operaciones:
266
391
 
267
392
  ```typescript
268
393
  import { createCSLService } from '@ai-pip/csl'
@@ -275,18 +400,292 @@ const result = await cslService.segment(document.body)
275
400
 
276
401
  // Acceder al linaje completo
277
402
  result.lineage.forEach(entry => {
278
- console.log(`[${entry.timestamp}] ${entry.stage}: ${entry.description}`)
403
+ const date = new Date(entry.timestamp)
404
+ console.log(`[${date.toISOString()}] ${entry.step}: ${entry.notes || '(sin notas)'}`)
279
405
  })
280
406
 
281
407
  // Acceder al linaje de un segmento específico
282
408
  const segment = result.segments[0]
283
409
  if (segment.lineage) {
284
410
  segment.lineage.forEach(entry => {
285
- console.log(` - ${entry.stage}: ${entry.description}`)
411
+ console.log(` - ${entry.step}: ${entry.notes || '(sin notas)'}`)
412
+ })
413
+ }
414
+ ```
415
+
416
+ ### 4. Análisis de Anomalías
417
+
418
+ El SDK calcula automáticamente scores de anomalía basados en múltiples factores:
419
+
420
+ ```typescript
421
+ const result = await cslService.segment(document.body)
422
+
423
+ result.segments.forEach(segment => {
424
+ if (segment.anomalyScore) {
425
+ const { score, action } = segment.anomalyScore
426
+
427
+ console.log(`Segmento ${segment.id}:`)
428
+ console.log(` Score: ${score.toFixed(2)}`)
429
+ console.log(` Acción: ${action}`)
430
+
431
+ // Los scores consideran:
432
+ // - Trust Level del origen
433
+ // - Detección de PI
434
+ // - Longitud del contenido
435
+ // - Origen del contenido
436
+ }
437
+ })
438
+ ```
439
+
440
+ ### 5. Procesamiento Selectivo
441
+
442
+ Procesa elementos específicos del DOM:
443
+
444
+ ```typescript
445
+ // Procesar un formulario específico
446
+ const form = document.getElementById('user-form')
447
+ const result = await cslService.segment(form)
448
+
449
+ // Procesar solo inputs visibles
450
+ const inputs = document.querySelectorAll('input[type="text"]')
451
+ inputs.forEach(async input => {
452
+ const result = await cslService.segment(input)
453
+ // Procesar cada input individualmente
454
+ })
455
+
456
+ // Procesar un contenedor específico
457
+ const container = document.querySelector('.user-content')
458
+ const result = await cslService.segment(container)
459
+ ```
460
+
461
+ ### 6. Filtrado y Análisis de Segmentos
462
+
463
+ ```typescript
464
+ const result = await cslService.segment(document.body)
465
+
466
+ // Filtrar solo segmentos confiables
467
+ const trustedSegments = result.segments.filter(
468
+ segment => segment.trustLevel?.value === 'TC'
469
+ )
470
+
471
+ // Filtrar segmentos con alto riesgo
472
+ const highRiskSegments = result.segments.filter(
473
+ segment => (segment.anomalyScore?.score ?? 0) > 0.7
474
+ )
475
+
476
+ // Filtrar segmentos bloqueados
477
+ const blockedSegments = result.segments.filter(
478
+ segment => segment.shouldBlock()
479
+ )
480
+
481
+ // Análisis estadístico
482
+ const stats = {
483
+ total: result.metadata.total_segments,
484
+ blocked: result.getBlockedCount(),
485
+ trusted: result.metadata.trust_distribution.TC,
486
+ suspicious: result.segments.filter(s => s.piDetection?.detected).length,
487
+ avgAnomalyScore: result.metadata.anomaly_score
488
+ }
489
+ ```
490
+
491
+ <a id="servicios-de-dominio"></a>
492
+ ## 🛠️ Servicios de Dominio
493
+
494
+ El SDK expone servicios de dominio que puedes usar directamente:
495
+
496
+ ### `PiDetectionService`
497
+
498
+ Servicio para detectar prompt injection con patrones personalizados:
499
+
500
+ ```typescript
501
+ import { PiDetectionService, Pattern, OriginType } from '@ai-pip/csl'
502
+
503
+ const piService = new PiDetectionService({
504
+ highConfidenceThreshold: 0.8,
505
+ enableJailbreak: true,
506
+ customPatterns: [
507
+ new Pattern('custom_attack', /malicious\s+pattern/i, 0.9)
508
+ ]
509
+ })
510
+
511
+ const result = piService.detect('Ignore all previous instructions')
512
+ console.log(`Detectado: ${result.detected}`)
513
+ console.log(`Score: ${result.score}`)
514
+ console.log(`Acción: ${result.action}`)
515
+ ```
516
+
517
+ ### `OriginClassificationService`
518
+
519
+ Clasifica el origen del contenido y asigna Trust Level:
520
+
521
+ ```typescript
522
+ import { OriginClassificationService, Origin, OriginType } from '@ai-pip/csl'
523
+
524
+ const originService = new OriginClassificationService()
525
+ const origin = new Origin(OriginType.USER)
526
+ const trustLevel = originService.classify(origin)
527
+
528
+ console.log(`Trust Level: ${trustLevel.value}`)
529
+ // TC para SYSTEM_GENERATED
530
+ // STC para DOM_VISIBLE
531
+ // UC para USER, DOM_HIDDEN, etc.
532
+ ```
533
+
534
+ ### `AnomalyService`
535
+
536
+ Calcula scores de anomalía:
537
+
538
+ ```typescript
539
+ import { AnomalyService, Segment, Origin, OriginType } from '@ai-pip/csl'
540
+
541
+ const anomalyService = new AnomalyService({
542
+ highRiskThreshold: 0.7,
543
+ mediumRiskThreshold: 0.3
544
+ })
545
+
546
+ const segment = new Segment({
547
+ id: 'test-1',
548
+ content: 'Test content',
549
+ origin: new Origin(OriginType.USER),
550
+ mime: 'text/plain',
551
+ timestamp: Date.now(),
552
+ source: 'test'
553
+ })
554
+
555
+ // Asignar trust level y PI detection primero
556
+ // ... luego calcular anomaly score
557
+
558
+ const score = anomalyService.calculateScore(segment)
559
+ console.log(`Score: ${score.score}, Acción: ${score.action}`)
560
+ ```
561
+
562
+ ### `NormalizationService`
563
+
564
+ Normaliza contenido para procesamiento consistente:
565
+
566
+ ```typescript
567
+ import { NormalizationService } from '@ai-pip/csl'
568
+
569
+ const normalized = NormalizationService.normalize(' Hello World ')
570
+ console.log(normalized) // "hello world"
571
+ ```
572
+
573
+ ### `LineageService`
574
+
575
+ Gestiona el tracking de linaje:
576
+
577
+ ```typescript
578
+ import { LineageService, LineageEntry } from '@ai-pip/csl'
579
+
580
+ const lineageService = new LineageService()
581
+
582
+ lineageService.addEntry('seg-1', new LineageEntry(
583
+ 'normalization',
584
+ Date.now(),
585
+ 'Content normalized'
586
+ ))
587
+
588
+ const lineage = lineageService.getLineage('seg-1')
589
+ lineage.forEach(entry => {
590
+ console.log(`${entry.step}: ${entry.notes}`)
591
+ })
592
+ ```
593
+
594
+ <a id="patrones-de-uso"></a>
595
+ ## 🎯 Patrones de Uso
596
+
597
+ ### Patrón 1: Validación en Tiempo Real
598
+
599
+ ```typescript
600
+ // Validar contenido mientras el usuario escribe
601
+ const input = document.getElementById('user-input')
602
+ input.addEventListener('input', async (e) => {
603
+ const result = await cslService.segment(e.target)
604
+ const segment = result.segments[0]
605
+
606
+ if (segment?.shouldBlock()) {
607
+ e.target.classList.add('blocked')
608
+ showWarning('Contenido no permitido detectado')
609
+ }
610
+ })
611
+ ```
612
+
613
+ ### Patrón 2: Auditoría y Logging
614
+
615
+ ```typescript
616
+ class AuditLogger implements LoggerPort {
617
+ async logSegment(segment: Segment) {
618
+ await fetch('/api/audit', {
619
+ method: 'POST',
620
+ body: JSON.stringify({
621
+ id: segment.id,
622
+ origin: segment.origin.type,
623
+ trustLevel: segment.trustLevel?.value,
624
+ anomalyScore: segment.anomalyScore?.score,
625
+ blocked: segment.shouldBlock(),
626
+ timestamp: Date.now()
627
+ })
628
+ })
629
+ }
630
+
631
+ debug(message: string) { /* ... */ }
632
+ info(message: string) { /* ... */ }
633
+ warn(message: string) { /* ... */ }
634
+ error(message: string) { /* ... */ }
635
+ }
636
+
637
+ const cslService = createCSLService({
638
+ logger: new AuditLogger()
639
+ })
640
+ ```
641
+
642
+ ### Patrón 3: Integración con Backend
643
+
644
+ ```typescript
645
+ // Enviar resultados al backend para procesamiento adicional
646
+ const result = await cslService.segment(document.body)
647
+
648
+ await fetch('/api/process-csl', {
649
+ method: 'POST',
650
+ headers: { 'Content-Type': 'application/json' },
651
+ body: JSON.stringify({
652
+ segments: result.segments.map(s => ({
653
+ id: s.id,
654
+ content: s.content,
655
+ origin: s.origin.type,
656
+ trustLevel: s.trustLevel?.value,
657
+ anomalyScore: s.anomalyScore?.score,
658
+ piDetected: s.piDetection?.detected,
659
+ hash: s.hash?.value
660
+ })),
661
+ metadata: result.metadata
286
662
  })
663
+ })
664
+ ```
665
+
666
+ ### Patrón 4: Cache de Resultados
667
+
668
+ ```typescript
669
+ const cache = new Map<string, CSLResult>()
670
+
671
+ async function getCachedResult(element: HTMLElement): Promise<CSLResult> {
672
+ const elementId = element.id || element.tagName
673
+ const contentHash = await hashContent(element.textContent || '')
674
+
675
+ const cacheKey = `${elementId}-${contentHash}`
676
+
677
+ if (cache.has(cacheKey)) {
678
+ return cache.get(cacheKey)!
679
+ }
680
+
681
+ const result = await cslService.segment(element)
682
+ cache.set(cacheKey, result)
683
+
684
+ return result
287
685
  }
288
686
  ```
289
687
 
688
+ <a id="componentes-personalizados"></a>
290
689
  ## 🛠️ Componentes Personalizados
291
690
 
292
691
  ### Crear un Logger Personalizado
@@ -296,19 +695,23 @@ import type { LoggerPort } from '@ai-pip/csl'
296
695
 
297
696
  class CustomLogger implements LoggerPort {
298
697
  debug(message: string): void {
299
- // Implementación personalizada
698
+ // Enviar a servicio de logging externo
699
+ console.debug(`[DEBUG] ${message}`)
300
700
  }
301
701
 
302
702
  info(message: string): void {
303
- // Implementación personalizada
703
+ // Enviar a servicio de logging externo
704
+ console.info(`[INFO] ${message}`)
304
705
  }
305
706
 
306
707
  warn(message: string): void {
307
- // Implementación personalizada
708
+ // Enviar a servicio de logging externo
709
+ console.warn(`[WARN] ${message}`)
308
710
  }
309
711
 
310
712
  error(message: string): void {
311
- // Implementación personalizada
713
+ // Enviar a servicio de logging externo
714
+ console.error(`[ERROR] ${message}`)
312
715
  }
313
716
  }
314
717
 
@@ -326,13 +729,23 @@ import { PolicyRule } from '@ai-pip/csl'
326
729
  class DatabasePolicyRepository implements PolicyRepositoryPort {
327
730
  async savePolicy(policy: PolicyRule): Promise<void> {
328
731
  // Guardar en base de datos
732
+ await db.policies.insert(policy)
329
733
  }
330
734
 
331
- async getActivePolicy(): Promise<PolicyRule> {
735
+ async getActivePolicy(): Promise<PolicyRule | null> {
332
736
  // Obtener de base de datos
737
+ const policy = await db.policies.findOne({ active: true })
738
+ return policy ? new PolicyRule(policy) : null
333
739
  }
334
740
 
335
- // ... implementar otros métodos
741
+ async getAllPolicies(): Promise<PolicyRule[]> {
742
+ const policies = await db.policies.find({})
743
+ return policies.map(p => new PolicyRule(p))
744
+ }
745
+
746
+ async deletePolicy(version: string): Promise<void> {
747
+ await db.policies.deleteOne({ version })
748
+ }
336
749
  }
337
750
 
338
751
  const cslService = createCSLService({
@@ -340,10 +753,148 @@ const cslService = createCSLService({
340
753
  })
341
754
  ```
342
755
 
756
+ ### Crear un Hash Generator Personalizado
757
+
758
+ ```typescript
759
+ import type { HashGeneratorPort } from '@ai-pip/csl'
760
+
761
+ class CustomHashGenerator implements HashGeneratorPort {
762
+ async generate(content: string, algorithm: 'sha256' | 'sha512'): Promise<string> {
763
+ // Usar tu propia implementación de hash
764
+ return customHashFunction(content, algorithm)
765
+ }
766
+ }
767
+
768
+ const cslService = createCSLService({
769
+ hashGenerator: new CustomHashGenerator()
770
+ })
771
+ ```
772
+
773
+ <a id="roadmap"></a>
774
+ ## 🗺️ Roadmap
775
+
776
+ ### Versión 0.2.0 - Machine Learning para Detección de PI
777
+
778
+ **Objetivo:** Mejorar la detección de prompt injection usando modelos de machine learning.
779
+
780
+ **Features planificadas:**
781
+ - ✅ Integración con modelos de ML para detección de PI
782
+ - ✅ Soporte para múltiples idiomas (español, francés, alemán, chino, japonés, etc.)
783
+ - ✅ Modelos pre-entrenados para diferentes contextos
784
+ - ✅ Fine-tuning de modelos con datos específicos del dominio
785
+ - ✅ API para entrenar modelos personalizados
786
+ - ✅ Detección híbrida (heurística + ML) para mejor precisión
787
+
788
+ **Beneficios:**
789
+ - Mayor precisión en la detección de PI en diferentes idiomas
790
+ - Reducción de falsos positivos
791
+ - Adaptación a nuevos patrones de ataque automáticamente
792
+
793
+ ### Versión 0.3.0 - Mejoras en Heurística
794
+
795
+ **Objetivo:** Mejorar los algoritmos heurísticos existentes.
796
+
797
+ **Features planificadas:**
798
+ - ✅ Análisis semántico del contenido
799
+ - ✅ Detección de patrones contextuales
800
+ - ✅ Análisis de intención del usuario
801
+ - ✅ Detección de evasion techniques (obfuscación, encoding, etc.)
802
+ - ✅ Scoring más granular y preciso
803
+ - ✅ Patrones personalizables por dominio
804
+
805
+ **Beneficios:**
806
+ - Mejor detección de ataques sofisticados
807
+ - Menos falsos positivos
808
+ - Mayor flexibilidad para diferentes casos de uso
809
+
810
+ ### Versión 0.4.0 - Performance y Escalabilidad
811
+
812
+ **Objetivo:** Optimizar el rendimiento para grandes volúmenes de contenido.
813
+
814
+ **Features planificadas:**
815
+ - ✅ Procesamiento paralelo de segmentos
816
+ - ✅ Cache inteligente de resultados
817
+ - ✅ Streaming de resultados para contenido grande
818
+ - ✅ Web Workers para procesamiento en background
819
+ - ✅ Optimización de memoria
820
+ - ✅ Métricas de performance integradas
821
+
822
+ ### Versión 0.5.0 - Integraciones y Extensiones
823
+
824
+ **Objetivo:** Facilitar la integración con otros sistemas.
825
+
826
+ **Features planificadas:**
827
+ - ✅ Plugins para frameworks populares (React, Vue, Angular)
828
+ - ✅ Middleware para Express.js, Fastify, etc.
829
+ - ✅ Integración con servicios de logging (Sentry, Datadog, etc.)
830
+ - ✅ Webhooks para notificaciones
831
+ - ✅ API REST para procesamiento remoto
832
+ - ✅ SDK para otros lenguajes (Python, Go, Rust)
833
+
834
+ ### Versión 0.6.0 - Analytics y Observabilidad
835
+
836
+ **Objetivo:** Proporcionar insights sobre el uso y efectividad.
837
+
838
+ **Features planificadas:**
839
+ - ✅ Dashboard de analytics integrado
840
+ - ✅ Métricas de detección en tiempo real
841
+ - ✅ Reportes de seguridad automáticos
842
+ - ✅ Alertas configurables
843
+ - ✅ Integración con sistemas de monitoreo
844
+ - ✅ Exportación de datos para análisis
845
+
846
+ ### Versión 0.7.0 - Políticas Avanzadas
847
+
848
+ **Objetivo:** Sistema de políticas más robusto y flexible.
849
+
850
+ **Features planificadas:**
851
+ - ✅ Editor visual de políticas
852
+ - ✅ Políticas basadas en reglas complejas
853
+ - ✅ Políticas dinámicas (cambios en tiempo real)
854
+ - ✅ Versionado de políticas
855
+ - ✅ Testing de políticas
856
+ - ✅ Rollback de políticas
857
+
858
+ **Nota:** Este roadmap está sujeto a cambios basados en feedback de la comunidad y necesidades del mercado.
859
+
860
+ <a id="feedback"></a>
861
+ ## 💬 Feedback
862
+
863
+ Tu feedback es invaluable para mejorar el SDK. Si encuentras bugs, tienes sugerencias de mejoras, o quieres proponer nuevas features, por favor contáctanos:
864
+
865
+ **Email:** d3vTek-mv@outlook.es
866
+
867
+ **Qué incluir en tu mensaje:**
868
+ - Descripción detallada del issue o sugerencia
869
+ - Pasos para reproducir (si aplica)
870
+ - Ejemplos de código (si aplica)
871
+ - Contexto de uso
872
+ - Cualquier información adicional relevante
873
+
874
+ **Tipos de feedback que buscamos:**
875
+ - 🐛 Reportes de bugs
876
+ - 💡 Sugerencias de features
877
+ - 📚 Mejoras en documentación
878
+ - 🎯 Casos de uso específicos
879
+ - ⚡ Optimizaciones de performance
880
+ - 🔒 Mejoras de seguridad
881
+
882
+ <a id="más-información"></a>
343
883
  ## 📖 Más Información
344
884
 
345
885
  Para más detalles sobre la arquitectura y el funcionamiento de CSL, consulta la [documentación completa](../../docs/layer/csl.md).
346
886
 
887
+ ### Recursos Adicionales
888
+
889
+ - [Arquitectura del Protocolo AI-PIP](../../docs/architecture.md)
890
+ - [Especificación Técnica](../../docs/spec.md)
891
+ - [Whitepaper](../../docs/whitepaper.md)
892
+
893
+ <a id="licencia"></a>
347
894
  ## 📄 Licencia
348
895
 
349
896
  MIT
897
+
898
+ ---
899
+
900
+ **Desarrollado con ❤️ para proteger aplicaciones LLM contra prompt injection y otros ataques de seguridad.**