@ai-pip/core 0.1.2 → 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 (160) hide show
  1. package/README.md +102 -9
  2. package/dist/cpe/envelope.d.ts +34 -0
  3. package/dist/cpe/envelope.d.ts.map +1 -0
  4. package/dist/cpe/envelope.js +70 -0
  5. package/dist/cpe/envelope.js.map +1 -0
  6. package/dist/cpe/exceptions/EnvelopeError.d.ts +8 -0
  7. package/dist/cpe/exceptions/EnvelopeError.d.ts.map +1 -0
  8. package/dist/cpe/exceptions/EnvelopeError.js +13 -0
  9. package/dist/cpe/exceptions/EnvelopeError.js.map +1 -0
  10. package/dist/cpe/exceptions/index.d.ts +5 -0
  11. package/dist/cpe/exceptions/index.d.ts.map +1 -0
  12. package/dist/cpe/exceptions/index.js +5 -0
  13. package/dist/cpe/exceptions/index.js.map +1 -0
  14. package/dist/cpe/index.d.ts +24 -0
  15. package/dist/cpe/index.d.ts.map +1 -0
  16. package/dist/cpe/index.js +28 -0
  17. package/dist/cpe/index.js.map +1 -0
  18. package/dist/cpe/types.d.ts +58 -0
  19. package/dist/cpe/types.d.ts.map +1 -0
  20. package/dist/cpe/types.js +5 -0
  21. package/dist/cpe/types.js.map +1 -0
  22. package/dist/cpe/utils.d.ts +38 -0
  23. package/dist/cpe/utils.d.ts.map +1 -0
  24. package/dist/cpe/utils.js +47 -0
  25. package/dist/cpe/utils.js.map +1 -0
  26. package/dist/cpe/value-objects/Metadata.d.ts +32 -0
  27. package/dist/cpe/value-objects/Metadata.d.ts.map +1 -0
  28. package/dist/cpe/value-objects/Metadata.js +65 -0
  29. package/dist/cpe/value-objects/Metadata.js.map +1 -0
  30. package/dist/cpe/value-objects/Nonce.d.ts +33 -0
  31. package/dist/cpe/value-objects/Nonce.d.ts.map +1 -0
  32. package/dist/cpe/value-objects/Nonce.js +44 -0
  33. package/dist/cpe/value-objects/Nonce.js.map +1 -0
  34. package/dist/cpe/value-objects/Signature.d.ts +39 -0
  35. package/dist/cpe/value-objects/Signature.d.ts.map +1 -0
  36. package/dist/cpe/value-objects/Signature.js +60 -0
  37. package/dist/cpe/value-objects/Signature.js.map +1 -0
  38. package/dist/cpe/value-objects/index.d.ts +7 -0
  39. package/dist/cpe/value-objects/index.d.ts.map +1 -0
  40. package/dist/cpe/value-objects/index.js +7 -0
  41. package/dist/cpe/value-objects/index.js.map +1 -0
  42. package/dist/csl/classify.d.ts +35 -0
  43. package/dist/csl/classify.d.ts.map +1 -0
  44. package/dist/csl/classify.js +62 -0
  45. package/dist/csl/classify.js.map +1 -0
  46. package/dist/csl/exceptions/ClassificationError.d.ts +12 -0
  47. package/dist/csl/exceptions/ClassificationError.d.ts.map +1 -0
  48. package/dist/csl/exceptions/ClassificationError.js +16 -0
  49. package/dist/csl/exceptions/ClassificationError.js.map +1 -0
  50. package/dist/csl/exceptions/SegmentationError.d.ts +13 -0
  51. package/dist/csl/exceptions/SegmentationError.d.ts.map +1 -0
  52. package/dist/csl/exceptions/SegmentationError.js +18 -0
  53. package/dist/csl/exceptions/SegmentationError.js.map +1 -0
  54. package/dist/csl/exceptions/index.d.ts +3 -0
  55. package/dist/csl/exceptions/index.d.ts.map +1 -0
  56. package/dist/csl/exceptions/index.js +3 -0
  57. package/dist/csl/exceptions/index.js.map +1 -0
  58. package/dist/csl/index.d.ts +24 -0
  59. package/dist/csl/index.d.ts.map +1 -0
  60. package/dist/csl/index.js +29 -0
  61. package/dist/csl/index.js.map +1 -0
  62. package/dist/csl/lineage.d.ts +31 -0
  63. package/dist/csl/lineage.d.ts.map +1 -0
  64. package/dist/csl/lineage.js +36 -0
  65. package/dist/csl/lineage.js.map +1 -0
  66. package/dist/csl/segment.d.ts +35 -0
  67. package/dist/csl/segment.d.ts.map +1 -0
  68. package/dist/csl/segment.js +90 -0
  69. package/dist/csl/segment.js.map +1 -0
  70. package/dist/csl/types.d.ts +97 -0
  71. package/dist/csl/types.d.ts.map +1 -0
  72. package/dist/csl/types.js +62 -0
  73. package/dist/csl/types.js.map +1 -0
  74. package/dist/csl/utils.d.ts +16 -0
  75. package/dist/csl/utils.d.ts.map +1 -0
  76. package/dist/csl/utils.js +27 -0
  77. package/dist/csl/utils.js.map +1 -0
  78. package/dist/csl/value-objects/ContentHash.d.ts +18 -0
  79. package/dist/csl/value-objects/ContentHash.d.ts.map +1 -0
  80. package/dist/csl/value-objects/ContentHash.js +33 -0
  81. package/dist/csl/value-objects/ContentHash.js.map +1 -0
  82. package/dist/csl/value-objects/LineageEntry.d.ts +20 -0
  83. package/dist/csl/value-objects/LineageEntry.d.ts.map +1 -0
  84. package/dist/csl/value-objects/LineageEntry.js +20 -0
  85. package/dist/csl/value-objects/LineageEntry.js.map +1 -0
  86. package/dist/csl/value-objects/Origin-map.d.ts +21 -0
  87. package/dist/csl/value-objects/Origin-map.d.ts.map +1 -0
  88. package/dist/csl/value-objects/Origin-map.js +42 -0
  89. package/dist/csl/value-objects/Origin-map.js.map +1 -0
  90. package/dist/csl/value-objects/Origin.d.ts +22 -0
  91. package/dist/csl/value-objects/Origin.d.ts.map +1 -0
  92. package/dist/csl/value-objects/Origin.js +38 -0
  93. package/dist/csl/value-objects/Origin.js.map +1 -0
  94. package/dist/csl/value-objects/TrustLevel.d.ts +18 -0
  95. package/dist/csl/value-objects/TrustLevel.d.ts.map +1 -0
  96. package/dist/csl/value-objects/TrustLevel.js +23 -0
  97. package/dist/csl/value-objects/TrustLevel.js.map +1 -0
  98. package/dist/csl/value-objects/index.d.ts +10 -0
  99. package/dist/csl/value-objects/index.d.ts.map +1 -0
  100. package/dist/csl/value-objects/index.js +8 -0
  101. package/dist/csl/value-objects/index.js.map +1 -0
  102. package/dist/index.d.ts +17 -0
  103. package/dist/index.d.ts.map +1 -0
  104. package/dist/index.js +18 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/isl/exceptions/SanitizationError.d.ts +8 -0
  107. package/dist/isl/exceptions/SanitizationError.d.ts.map +1 -0
  108. package/dist/isl/exceptions/SanitizationError.js +13 -0
  109. package/dist/isl/exceptions/SanitizationError.js.map +1 -0
  110. package/dist/isl/exceptions/index.d.ts +2 -0
  111. package/dist/isl/exceptions/index.d.ts.map +1 -0
  112. package/dist/isl/exceptions/index.js +2 -0
  113. package/dist/isl/exceptions/index.js.map +1 -0
  114. package/dist/isl/index.d.ts +12 -0
  115. package/dist/isl/index.d.ts.map +1 -0
  116. package/dist/isl/index.js +16 -0
  117. package/dist/isl/index.js.map +1 -0
  118. package/dist/isl/sanitize.d.ts +13 -0
  119. package/dist/isl/sanitize.d.ts.map +1 -0
  120. package/dist/isl/sanitize.js +74 -0
  121. package/dist/isl/sanitize.js.map +1 -0
  122. package/dist/isl/types.d.ts +75 -0
  123. package/dist/isl/types.d.ts.map +1 -0
  124. package/dist/isl/types.js +5 -0
  125. package/dist/isl/types.js.map +1 -0
  126. package/dist/isl/value-objects/AnomalyScore.d.ts +19 -0
  127. package/dist/isl/value-objects/AnomalyScore.d.ts.map +1 -0
  128. package/dist/isl/value-objects/AnomalyScore.js +25 -0
  129. package/dist/isl/value-objects/AnomalyScore.js.map +1 -0
  130. package/dist/isl/value-objects/Pattern.d.ts +32 -0
  131. package/dist/isl/value-objects/Pattern.d.ts.map +1 -0
  132. package/dist/isl/value-objects/Pattern.js +116 -0
  133. package/dist/isl/value-objects/Pattern.js.map +1 -0
  134. package/dist/isl/value-objects/PiDetection.d.ts +22 -0
  135. package/dist/isl/value-objects/PiDetection.d.ts.map +1 -0
  136. package/dist/isl/value-objects/PiDetection.js +60 -0
  137. package/dist/isl/value-objects/PiDetection.js.map +1 -0
  138. package/dist/isl/value-objects/PiDetectionResult.d.ts +24 -0
  139. package/dist/isl/value-objects/PiDetectionResult.d.ts.map +1 -0
  140. package/dist/isl/value-objects/PiDetectionResult.js +90 -0
  141. package/dist/isl/value-objects/PiDetectionResult.js.map +1 -0
  142. package/dist/isl/value-objects/PolicyRule.d.ts +39 -0
  143. package/dist/isl/value-objects/PolicyRule.d.ts.map +1 -0
  144. package/dist/isl/value-objects/PolicyRule.js +65 -0
  145. package/dist/isl/value-objects/PolicyRule.js.map +1 -0
  146. package/dist/isl/value-objects/index.d.ts +9 -0
  147. package/dist/isl/value-objects/index.d.ts.map +1 -0
  148. package/dist/isl/value-objects/index.js +8 -0
  149. package/dist/isl/value-objects/index.js.map +1 -0
  150. package/dist/shared/index.d.ts +9 -0
  151. package/dist/shared/index.d.ts.map +1 -0
  152. package/dist/shared/index.js +12 -0
  153. package/dist/shared/index.js.map +1 -0
  154. package/dist/shared/lineage.d.ts +29 -0
  155. package/dist/shared/lineage.d.ts.map +1 -0
  156. package/dist/shared/lineage.js +36 -0
  157. package/dist/shared/lineage.js.map +1 -0
  158. package/package.json +19 -18
  159. package/src/index.ts +2 -0
  160. package/tsconfig.json +6 -3
package/README.md CHANGED
@@ -139,24 +139,28 @@ pnpm dev
139
139
  - **Node.js**: >= 18.0.0
140
140
  - **pnpm**: >= 8.0.0 (recomendado) o npm/yarn
141
141
 
142
- ### TypeScript
142
+ ### TypeScript ⚠️ **REQUERIDO**
143
143
 
144
- Este paquete utiliza ESM (`"type": "module"`) y exports con subpaths. Para que TypeScript resuelva correctamente los imports, tu proyecto **debe** tener la siguiente configuración en `tsconfig.json`:
144
+ Este paquete utiliza ESM (`"type": "module"`) y exports con subpaths. Para que TypeScript resuelva correctamente los imports y tipos, tu proyecto **DEBE** tener la siguiente configuración en `tsconfig.json`:
145
+
146
+ **Configuración mínima requerida:**
145
147
 
146
148
  ```json
147
149
  {
148
150
  "compilerOptions": {
149
151
  "module": "NodeNext",
150
152
  "moduleResolution": "nodenext",
151
- "target": "ES2022",
152
- // ... otras opciones
153
+ "target": "ES2022"
153
154
  }
154
155
  }
155
156
  ```
156
157
 
157
- **⚠️ Importante**: Sin esta configuración, TypeScript no podrá resolver los subpaths como `@ai-pip/core/csl`, `@ai-pip/core/isl`, etc., y obtendrás errores como `ERR_PACKAGE_PATH_NOT_EXPORTED`.
158
+ **⚠️ CRÍTICO**: Sin esta configuración, obtendrás errores como:
159
+ - `Module '"@ai-pip/core/csl"' has no exported member 'CSLResult'`
160
+ - `ERR_PACKAGE_PATH_NOT_EXPORTED`
161
+ - Los tipos no se resolverán correctamente
158
162
 
159
- #### Ejemplo de `tsconfig.json` completo
163
+ #### Ejemplo de `tsconfig.json` completo recomendado
160
164
 
161
165
  ```json
162
166
  {
@@ -173,9 +177,11 @@ Este paquete utiliza ESM (`"type": "module"`) y exports con subpaths. Para que T
173
177
  }
174
178
  ```
175
179
 
176
- #### Si usas un runtime como `tsx` o `ts-node`
180
+ #### Notas importantes
177
181
 
178
- Aunque uses `tsx` o `ts-node` para ejecutar TypeScript directamente, **aún necesitas** la configuración correcta en `tsconfig.json` para que TypeScript resuelva los tipos y los imports correctamente.
182
+ - **Desde la versión 0.1.2+**: Esta configuración es obligatoria. Las versiones anteriores (0.1.0, 0.1.1) están deprecadas.
183
+ - **Si usas `tsx` o `ts-node`**: Aunque ejecutes TypeScript directamente, **aún necesitas** esta configuración en `tsconfig.json` para que TypeScript resuelva los tipos correctamente.
184
+ - **JavaScript puro**: Si usas JavaScript sin TypeScript, no necesitas esta configuración, pero perderás el soporte de tipos.
179
185
 
180
186
  ## 📄 Licencia
181
187
 
@@ -200,5 +206,92 @@ Las contribuciones son bienvenidas. Por favor:
200
206
 
201
207
  ---
202
208
 
203
- **Versión**: 0.1.0
209
+ ## 📝 CHANGELOG
210
+
211
+ ### [0.1.3] - 2025-12-28
212
+
213
+ #### ✨ Nuevas características
214
+ - **Compilación a JavaScript**: El paquete ahora se compila a JavaScript (`dist/`) para mayor compatibilidad
215
+ - **Archivos de declaración de tipos**: Se generan archivos `.d.ts` para soporte completo de TypeScript
216
+ - **Source maps**: Incluidos para mejor debugging
217
+
218
+ #### 🔧 Cambios técnicos
219
+ - **Estructura de publicación**: Cambio de publicar archivos `.ts` directamente a compilar a `dist/`
220
+ - **Exports mejorados**: Los exports ahora apuntan a archivos compilados (`.js` y `.d.ts`)
221
+ - **Rutas relativas**: Reemplazo de path aliases (`@/`) por rutas relativas para compatibilidad
222
+ - **Configuración de build**: Corregida la generación de archivos `.d.ts` en `dist/` en lugar de `src/`
223
+ - **ESLint**: Configurado para ignorar archivos `.d.ts` generados
224
+
225
+ #### 🐛 Correcciones
226
+ - **Resolución de tipos**: Los tipos TypeScript ahora se resuelven correctamente desde `node_modules`
227
+ - **Imports desde subpaths**: Corregidos los imports desde `@ai-pip/core/csl`, `@ai-pip/core/isl`, etc.
228
+ - **Exports completos**: Agregado campo `default` a todos los exports para Node.js ESM
229
+ - **Generación de archivos**: Archivos `.d.ts` ahora se generan correctamente en `dist/`
230
+
231
+ #### 📚 Documentación
232
+ - **Requisitos de TypeScript**: Documentación mejorada sobre configuración requerida
233
+ - **Ejemplos actualizados**: Ejemplos de uso actualizados para la nueva estructura
234
+ - **CHANGELOG completo**: Documentación de todas las versiones y deprecaciones
235
+
236
+ #### 🛠️ Mejoras de desarrollo
237
+ - **Script test:install**: Script para verificar instalación antes de publicar
238
+ - **Script prepublishOnly**: Ejecuta automáticamente build, lint, tests y test:install antes de publicar
239
+
240
+ #### ⚠️ Breaking Changes
241
+ - **Configuración TypeScript requerida**: Ahora es **obligatorio** usar `module: "NodeNext"` y `moduleResolution: "nodenext"` en `tsconfig.json`
242
+
243
+ ---
244
+
245
+ ### [0.1.2] - 2025-12-28
246
+
247
+ #### ⚠️ DEPRECADA
248
+
249
+ **Motivo de deprecación**: Esta versión tenía problemas con la compilación y generación de archivos `.d.ts`. Los archivos se generaban en ubicaciones incorrectas (`src/` en lugar de `dist/`), causando errores de linting y problemas de resolución de tipos.
250
+
251
+ **Problemas conocidos**:
252
+ - Archivos `.d.ts` se generaban en `src/` en lugar de `dist/`
253
+ - ESLint intentaba lintear archivos `.d.ts` generados, causando errores
254
+ - Configuración de build incompleta (`declarationDir` mal configurado)
255
+ - Los tipos no se resolvían correctamente en algunos casos
256
+
257
+ **Recomendación**: Actualizar a `0.1.3` o superior.
258
+
259
+ ---
260
+
261
+ ### [0.1.1] - 2025-12-28
262
+
263
+ #### ⚠️ DEPRECADA
264
+
265
+ **Motivo de deprecación**: Esta versión tenía problemas con la resolución de path aliases (`@/`) que causaban errores al importar desde otros proyectos. Los tipos no se resolvían correctamente cuando el paquete se instalaba desde npm.
266
+
267
+ **Problemas conocidos**:
268
+ - Errores: `Module '"@ai-pip/core/csl"' has no exported member 'CSLResult'`
269
+ - Path aliases no funcionaban en proyectos consumidores
270
+ - Tipos no se resolvían correctamente desde `node_modules`
271
+
272
+ **Recomendación**: Actualizar a `0.1.3` o superior.
273
+
274
+ ---
275
+
276
+ ### [0.1.0] - 2025-12-28
277
+
278
+ #### ⚠️ DEPRECADA
279
+
280
+ **Motivo de deprecación**: Versión inicial con problemas fundamentales de compatibilidad. Los exports no incluían el campo `default` requerido por Node.js ESM, causando errores `ERR_PACKAGE_PATH_NOT_EXPORTED`.
281
+
282
+ **Problemas conocidos**:
283
+ - Errores: `ERR_PACKAGE_PATH_NOT_EXPORTED` al importar subpaths
284
+ - Exports incompletos: Faltaba el campo `default` en los exports
285
+ - Path aliases no funcionaban correctamente
286
+
287
+ **Recomendación**: Actualizar a `0.1.3` o superior.
288
+
289
+ #### 📦 Contenido inicial
290
+ - **CSL (Context Segmentation Layer)**: Segmentación y clasificación de contenido
291
+ - **ISL (Instruction Sanitization Layer)**: Sanitización de instrucciones
292
+ - **CPE (Cryptographic Prompt Envelope)**: Envoltorio criptográfico con HMAC-SHA256
293
+
294
+ ---
295
+
296
+ **Versión actual**: 0.1.3
204
297
  **Estado**: Fase 1 - Capas Core (60% completado)
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Genera el envoltorio criptográfico (CPEEvelope) - función pura principal de CPE
3
+ *
4
+ * @remarks
5
+ * Esta es la función principal de CPE. Genera un envoltorio criptográfico
6
+ * que garantiza la integridad y autenticidad del prompt procesado.
7
+ *
8
+ * **Funciones:**
9
+ * - Genera metadata de seguridad (timestamp, nonce, versión)
10
+ * - Firma criptográficamente el contenido con HMAC-SHA256
11
+ * - Encapsula el contenido sanitizado con metadata
12
+ * - Preserva el linaje completo para auditoría
13
+ *
14
+ * @param islResult - Resultado de ISL con contenido sanitizado
15
+ * @param secretKey - Clave secreta para HMAC (debe ser proporcionada por el SDK)
16
+ * @returns CPEResult con el envelope criptográfico
17
+ *
18
+ * @throws {EnvelopeError} Si la generación del envelope falla
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const cpeResult = envelope(islResult, secretKey)
23
+ *
24
+ * // cpeResult.envelope contiene:
25
+ * // - content: contenido sanitizado serializado
26
+ * // - signature: firma HMAC-SHA256
27
+ * // - metadata: timestamp, nonce, versión
28
+ * // - lineage: linaje completo
29
+ * ```
30
+ */
31
+ import type { ISLResult } from '../isl/types';
32
+ import type { CPEResult } from './types';
33
+ export declare function envelope(islResult: ISLResult, secretKey: string): CPEResult;
34
+ //# sourceMappingURL=envelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.d.ts","sourceRoot":"","sources":["../../src/cpe/envelope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAc,SAAS,EAAE,MAAM,SAAS,CAAA;AAUpD,wBAAgB,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,CAwE3E"}
@@ -0,0 +1,70 @@
1
+ import { createNonce } from './value-objects/Nonce';
2
+ import { createMetadata } from './value-objects/Metadata';
3
+ import { createSignature } from './value-objects/Signature';
4
+ import { EnvelopeError } from './exceptions';
5
+ // Serialización NO es core - va al SDK
6
+ // El core solo define la estructura del envelope
7
+ import { addLineageEntries } from '../shared/lineage';
8
+ import { createLineageEntry } from '../csl/value-objects/LineageEntry';
9
+ export function envelope(islResult, secretKey) {
10
+ const startTime = Date.now();
11
+ try {
12
+ // 1. Validar input
13
+ if (!islResult?.segments?.length) {
14
+ throw new EnvelopeError('ISLResult must contain at least one segment');
15
+ }
16
+ if (!secretKey || secretKey.length === 0) {
17
+ throw new EnvelopeError('Secret key is required for envelope generation');
18
+ }
19
+ // 2. Generar metadata de seguridad
20
+ const timestamp = Date.now();
21
+ const nonce = createNonce();
22
+ const metadata = createMetadata(timestamp, nonce);
23
+ // 3. Preparar payload semántico (contenido procesado por ISL)
24
+ // El payload puede ser cualquier estructura que represente el contenido procesado
25
+ const payload = {
26
+ segments: islResult.segments.map((segment) => ({
27
+ id: segment.id,
28
+ content: segment.sanitizedContent,
29
+ trust: segment.trust.value,
30
+ sanitizationLevel: segment.sanitizationLevel,
31
+ })),
32
+ };
33
+ // 4. Generar firma criptográfica HMAC-SHA256
34
+ // Nota: La serialización del contenido para firma debe hacerse en el SDK
35
+ // El core solo define que se debe firmar el payload + metadata
36
+ // Por ahora, serializamos de forma básica para mantener funcionalidad
37
+ const algorithm = 'HMAC-SHA256';
38
+ const signableContent = JSON.stringify({
39
+ payload,
40
+ metadata,
41
+ algorithm
42
+ });
43
+ const signatureVO = createSignature(signableContent, secretKey);
44
+ // 5. Actualizar linaje con entrada CPE
45
+ const cpeLineageEntry = createLineageEntry('CPE', timestamp);
46
+ const updatedLineage = addLineageEntries(islResult.lineage, [cpeLineageEntry]);
47
+ // 9. Construir envelope según especificación
48
+ const envelope = {
49
+ payload,
50
+ metadata,
51
+ signature: {
52
+ value: signatureVO.value,
53
+ algorithm: signatureVO.algorithm,
54
+ },
55
+ lineage: updatedLineage,
56
+ };
57
+ const processingTime = Date.now() - startTime;
58
+ return {
59
+ envelope,
60
+ processingTimeMs: processingTime,
61
+ };
62
+ }
63
+ catch (error) {
64
+ if (error instanceof EnvelopeError) {
65
+ throw error;
66
+ }
67
+ throw new EnvelopeError(`Failed to generate envelope: ${error instanceof Error ? error.message : 'Unknown error'}`, error instanceof Error ? error : undefined);
68
+ }
69
+ }
70
+ //# sourceMappingURL=envelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope.js","sourceRoot":"","sources":["../../src/cpe/envelope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * EnvelopeError - Error al generar el envelope criptográfico
3
+ */
4
+ export declare class EnvelopeError extends Error {
5
+ readonly cause?: Error | undefined;
6
+ constructor(message: string, cause?: Error | undefined);
7
+ }
8
+ //# sourceMappingURL=EnvelopeError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvelopeError.d.ts","sourceRoot":"","sources":["../../../src/cpe/exceptions/EnvelopeError.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aACO,KAAK,CAAC,EAAE,KAAK;gBAA9C,OAAO,EAAE,MAAM,EAAkB,KAAK,CAAC,EAAE,KAAK,YAAA;CAK3D"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * EnvelopeError - Error al generar el envelope criptográfico
3
+ */
4
+ export class EnvelopeError extends Error {
5
+ cause;
6
+ constructor(message, cause) {
7
+ super(message);
8
+ this.cause = cause;
9
+ this.name = 'EnvelopeError';
10
+ Object.setPrototypeOf(this, EnvelopeError.prototype);
11
+ }
12
+ }
13
+ //# sourceMappingURL=EnvelopeError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnvelopeError.js","sourceRoot":"","sources":["../../../src/cpe/exceptions/EnvelopeError.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IACO;IAA7C,YAAY,OAAe,EAAkB,KAAa;QACxD,KAAK,CAAC,OAAO,CAAC,CAAA;QAD6B,UAAK,GAAL,KAAK,CAAQ;QAExD,IAAI,CAAC,IAAI,GAAG,eAAe,CAAA;QAC3B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAA;IACtD,CAAC;CACF"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * CPE Exceptions - Exports
3
+ */
4
+ export { EnvelopeError } from './EnvelopeError';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cpe/exceptions/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * CPE Exceptions - Exports
3
+ */
4
+ export { EnvelopeError } from './EnvelopeError';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cpe/exceptions/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * CPE (Cryptographic Prompt Envelope) - Core Semántico
3
+ *
4
+ * @remarks
5
+ * Este es el core semántico de CPE. Solo contiene:
6
+ * - Funciones puras (sin estado)
7
+ * - Value objects inmutables
8
+ * - Tipos y excepciones
9
+ *
10
+ * **Funciones principales:**
11
+ * - Generación de metadata de seguridad (timestamp, nonce, versión)
12
+ * - Firma criptográfica HMAC-SHA256
13
+ * - Construcción del envelope criptográfico
14
+ * - Preservación del linaje completo
15
+ */
16
+ export { envelope } from './envelope';
17
+ export { createNonce, isValidNonce, equalsNonce } from './value-objects/Nonce';
18
+ export type { Nonce } from './value-objects/Nonce';
19
+ export { createMetadata, isValidMetadata, CURRENT_PROTOCOL_VERSION } from './value-objects/Metadata';
20
+ export { createSignature } from './value-objects/Signature';
21
+ export type { SignatureVO } from './value-objects/Signature';
22
+ export * from './exceptions';
23
+ export * from './types';
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cpe/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAC9E,YAAY,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AACpG,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,YAAY,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAG5D,cAAc,cAAc,CAAA;AAG5B,cAAc,SAAS,CAAA"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * CPE (Cryptographic Prompt Envelope) - Core Semántico
3
+ *
4
+ * @remarks
5
+ * Este es el core semántico de CPE. Solo contiene:
6
+ * - Funciones puras (sin estado)
7
+ * - Value objects inmutables
8
+ * - Tipos y excepciones
9
+ *
10
+ * **Funciones principales:**
11
+ * - Generación de metadata de seguridad (timestamp, nonce, versión)
12
+ * - Firma criptográfica HMAC-SHA256
13
+ * - Construcción del envelope criptográfico
14
+ * - Preservación del linaje completo
15
+ */
16
+ // Funciones puras principales
17
+ export { envelope } from './envelope';
18
+ // Value objects
19
+ export { createNonce, isValidNonce, equalsNonce } from './value-objects/Nonce';
20
+ export { createMetadata, isValidMetadata, CURRENT_PROTOCOL_VERSION } from './value-objects/Metadata';
21
+ export { createSignature } from './value-objects/Signature';
22
+ // Exceptions
23
+ export * from './exceptions';
24
+ // Types
25
+ export * from './types';
26
+ // Serialización y verificación NO son core - van al SDK
27
+ // El core solo define la estructura del envelope, no implementa serialización
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cpe/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,8BAA8B;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,gBAAgB;AAChB,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAE9E,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAA;AACpG,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAG3D,aAAa;AACb,cAAc,cAAc,CAAA;AAE5B,QAAQ;AACR,cAAc,SAAS,CAAA;AAEvB,wDAAwD;AACxD,8EAA8E"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Types for CPE (Cryptographic Prompt Envelope) - Core Semántico
3
+ */
4
+ import type { LineageEntry } from '../csl/value-objects';
5
+ /**
6
+ * ProtocolVersion - Versión del protocolo AI-PIP
7
+ */
8
+ export type ProtocolVersion = string;
9
+ /**
10
+ * Timestamp - Timestamp Unix en milisegundos
11
+ */
12
+ export type Timestamp = number;
13
+ /**
14
+ * NonceValue - Valor único para prevenir ataques de replay (string)
15
+ */
16
+ export type NonceValue = string;
17
+ /**
18
+ * SignatureAlgorithm - Algoritmo de firma criptográfica
19
+ */
20
+ export type SignatureAlgorithm = 'HMAC-SHA256';
21
+ /**
22
+ * Signature - Firma criptográfica del envelope
23
+ */
24
+ export type Signature = string;
25
+ /**
26
+ * CPEMetadata - Metadata de seguridad del envelope
27
+ * Según especificación: timestamp, nonce, protocolVersion, previousSignatures opcionales
28
+ */
29
+ export interface CPEMetadata {
30
+ readonly timestamp: Timestamp;
31
+ readonly nonce: NonceValue;
32
+ readonly protocolVersion: ProtocolVersion;
33
+ readonly previousSignatures?: {
34
+ readonly csl?: string | undefined;
35
+ readonly isl?: string | undefined;
36
+ } | undefined;
37
+ }
38
+ /**
39
+ * CPEEvelope - Envoltorio criptográfico completo
40
+ * Según especificación: payload, metadata, signature (value + algorithm), lineage
41
+ */
42
+ export interface CPEEvelope {
43
+ readonly payload: unknown;
44
+ readonly metadata: CPEMetadata;
45
+ readonly signature: {
46
+ readonly value: string;
47
+ readonly algorithm: string;
48
+ };
49
+ readonly lineage: readonly LineageEntry[];
50
+ }
51
+ /**
52
+ * CPEResult - Resultado de la generación del envelope
53
+ */
54
+ export interface CPEResult {
55
+ readonly envelope: CPEEvelope;
56
+ readonly processingTimeMs?: number;
57
+ }
58
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/cpe/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAExD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAA;AAEpC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAE9B;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAA;AAE/B;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAA;AAE9C;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAE9B;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAClC,GAAG,SAAS,CAAA;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;IAC9B,QAAQ,CAAC,SAAS,EAAE;QAClB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;QACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAC3B,CAAA;IACD,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAA;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAA;IAC7B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;CACnC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Types for CPE (Cryptographic Prompt Envelope) - Core Semántico
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/cpe/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Utilidades puras para CPE
3
+ */
4
+ /**
5
+ * Serializa el contenido sanitizado de ISL para firma
6
+ *
7
+ * @param segments - Segmentos sanitizados
8
+ * @returns Contenido serializado
9
+ */
10
+ export declare function serializeContent(segments: readonly {
11
+ readonly sanitizedContent: string;
12
+ }[]): string;
13
+ /**
14
+ * Serializa metadata para firma
15
+ *
16
+ * @param metadata - Metadata a serializar
17
+ * @returns Metadata serializada
18
+ */
19
+ export declare function serializeMetadata(metadata: {
20
+ readonly timestamp: number;
21
+ readonly nonce: string;
22
+ readonly protocolVersion: string;
23
+ readonly previousSignatures?: {
24
+ readonly csl?: string | undefined;
25
+ readonly isl?: string | undefined;
26
+ } | undefined;
27
+ }): string;
28
+ /**
29
+ * Genera el contenido completo para firma
30
+ * Según spec: contenido procesado + metadata + identificador del algoritmo
31
+ *
32
+ * @param content - Contenido serializado (payload semántico)
33
+ * @param metadata - Metadata serializada
34
+ * @param algorithm - Identificador del algoritmo de firma
35
+ * @returns Contenido completo para firma
36
+ */
37
+ export declare function generateSignableContent(content: string, metadata: string, algorithm: string): string;
38
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/cpe/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,SAAS;IAAE,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CAInG;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE;IAC1C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAClC,GAAG,SAAS,CAAA;CACd,GAAG,MAAM,CAgBT;AAED;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,MAAM,CAER"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Utilidades puras para CPE
3
+ */
4
+ /**
5
+ * Serializa el contenido sanitizado de ISL para firma
6
+ *
7
+ * @param segments - Segmentos sanitizados
8
+ * @returns Contenido serializado
9
+ */
10
+ export function serializeContent(segments) {
11
+ return segments
12
+ .map((segment, index) => `[${index}]:${segment.sanitizedContent}`)
13
+ .join('\n');
14
+ }
15
+ /**
16
+ * Serializa metadata para firma
17
+ *
18
+ * @param metadata - Metadata a serializar
19
+ * @returns Metadata serializada
20
+ */
21
+ export function serializeMetadata(metadata) {
22
+ const parts = [
23
+ `timestamp:${metadata.timestamp}`,
24
+ `nonce:${metadata.nonce}`,
25
+ `version:${metadata.protocolVersion}`,
26
+ ];
27
+ if (metadata.previousSignatures?.csl) {
28
+ parts.push(`csl:${metadata.previousSignatures.csl}`);
29
+ }
30
+ if (metadata.previousSignatures?.isl) {
31
+ parts.push(`isl:${metadata.previousSignatures.isl}`);
32
+ }
33
+ return parts.join('|');
34
+ }
35
+ /**
36
+ * Genera el contenido completo para firma
37
+ * Según spec: contenido procesado + metadata + identificador del algoritmo
38
+ *
39
+ * @param content - Contenido serializado (payload semántico)
40
+ * @param metadata - Metadata serializada
41
+ * @param algorithm - Identificador del algoritmo de firma
42
+ * @returns Contenido completo para firma
43
+ */
44
+ export function generateSignableContent(content, metadata, algorithm) {
45
+ return `${metadata}\n---\n${content}\n---\nalgorithm:${algorithm}`;
46
+ }
47
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/cpe/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAA0D;IACzF,OAAO,QAAQ;SACZ,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC;SACjE,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAQjC;IACC,MAAM,KAAK,GAAG;QACZ,aAAa,QAAQ,CAAC,SAAS,EAAE;QACjC,SAAS,QAAQ,CAAC,KAAK,EAAE;QACzB,WAAW,QAAQ,CAAC,eAAe,EAAE;KACtC,CAAA;IAED,IAAI,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAA;IACtD,CAAC;IAED,IAAI,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAA;IACtD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAe,EACf,QAAgB,EAChB,SAAiB;IAEjB,OAAO,GAAG,QAAQ,UAAU,OAAO,oBAAoB,SAAS,EAAE,CAAA;AACpE,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * CPEMetadata - Metadata de seguridad del envelope
3
+ * Value Object puro e inmutable
4
+ */
5
+ import type { CPEMetadata, ProtocolVersion, Timestamp } from '../types';
6
+ import type { Nonce as NonceVO } from './Nonce';
7
+ /**
8
+ * Versión actual del protocolo
9
+ */
10
+ export declare const CURRENT_PROTOCOL_VERSION: ProtocolVersion;
11
+ /**
12
+ * Crea metadata de seguridad para el envelope
13
+ * Según especificación: timestamp, nonce, protocolVersion, previousSignatures opcionales
14
+ *
15
+ * @param timestamp - Timestamp Unix en milisegundos
16
+ * @param nonce - Nonce único
17
+ * @param protocolVersion - Versión del protocolo (default: CURRENT_PROTOCOL_VERSION)
18
+ * @param previousSignatures - Firmas opcionales de capas anteriores (csl, isl)
19
+ * @returns CPEMetadata inmutable
20
+ */
21
+ export declare function createMetadata(timestamp: Timestamp, nonce: NonceVO, protocolVersion?: ProtocolVersion, previousSignatures?: {
22
+ csl?: string;
23
+ isl?: string;
24
+ }): CPEMetadata;
25
+ /**
26
+ * Valida que la metadata sea válida
27
+ *
28
+ * @param metadata - Metadata a validar
29
+ * @returns true si es válida
30
+ */
31
+ export declare function isValidMetadata(metadata: CPEMetadata): boolean;
32
+ //# sourceMappingURL=Metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Metadata.d.ts","sourceRoot":"","sources":["../../../src/cpe/value-objects/Metadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACvE,OAAO,KAAK,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,SAAS,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,eAAyB,CAAA;AAEhE;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,OAAO,EACd,eAAe,GAAE,eAA0C,EAC3D,kBAAkB,CAAC,EAAE;IACnB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,GACA,WAAW,CA4Bb;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAS9D"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * CPEMetadata - Metadata de seguridad del envelope
3
+ * Value Object puro e inmutable
4
+ */
5
+ /**
6
+ * Versión actual del protocolo
7
+ */
8
+ export const CURRENT_PROTOCOL_VERSION = '1.0.0';
9
+ /**
10
+ * Crea metadata de seguridad para el envelope
11
+ * Según especificación: timestamp, nonce, protocolVersion, previousSignatures opcionales
12
+ *
13
+ * @param timestamp - Timestamp Unix en milisegundos
14
+ * @param nonce - Nonce único
15
+ * @param protocolVersion - Versión del protocolo (default: CURRENT_PROTOCOL_VERSION)
16
+ * @param previousSignatures - Firmas opcionales de capas anteriores (csl, isl)
17
+ * @returns CPEMetadata inmutable
18
+ */
19
+ export function createMetadata(timestamp, nonce, protocolVersion = CURRENT_PROTOCOL_VERSION, previousSignatures) {
20
+ // Validar timestamp
21
+ if (timestamp <= 0) {
22
+ throw new Error('Timestamp must be a positive number');
23
+ }
24
+ // Validar que no sea del futuro (con margen de 5 minutos para sincronización)
25
+ const maxFutureTimestamp = Date.now() + 5 * 60 * 1000;
26
+ if (timestamp > maxFutureTimestamp) {
27
+ throw new Error('Timestamp cannot be in the future');
28
+ }
29
+ // Validar version del protocolo
30
+ if (!protocolVersion || typeof protocolVersion !== 'string') {
31
+ throw new Error('Protocol version must be a non-empty string');
32
+ }
33
+ return Object.freeze({
34
+ timestamp,
35
+ nonce: nonce.value,
36
+ protocolVersion,
37
+ previousSignatures: previousSignatures
38
+ ? Object.freeze({
39
+ csl: previousSignatures.csl ?? undefined,
40
+ isl: previousSignatures.isl ?? undefined,
41
+ })
42
+ : undefined,
43
+ });
44
+ }
45
+ /**
46
+ * Valida que la metadata sea válida
47
+ *
48
+ * @param metadata - Metadata a validar
49
+ * @returns true si es válida
50
+ */
51
+ export function isValidMetadata(metadata) {
52
+ try {
53
+ if (metadata.timestamp <= 0)
54
+ return false;
55
+ if (!metadata.nonce || metadata.nonce.length < 16)
56
+ return false;
57
+ if (!metadata.protocolVersion)
58
+ return false;
59
+ return true;
60
+ }
61
+ catch {
62
+ return false;
63
+ }
64
+ }
65
+ //# sourceMappingURL=Metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Metadata.js","sourceRoot":"","sources":["../../../src/cpe/value-objects/Metadata.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAoB,OAAO,CAAA;AAEhE;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,SAAoB,EACpB,KAAc,EACd,kBAAmC,wBAAwB,EAC3D,kBAGC;IAED,oBAAoB;IACpB,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAA;IACxD,CAAC;IAED,8EAA8E;IAC9E,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA;IACrD,IAAI,SAAS,GAAG,kBAAkB,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IACtD,CAAC;IAED,gCAAgC;IAChC,IAAI,CAAC,eAAe,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;QAC5D,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAA;IAChE,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,SAAS;QACT,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,eAAe;QACf,kBAAkB,EAAE,kBAAkB;YACpC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBACZ,GAAG,EAAE,kBAAkB,CAAC,GAAG,IAAI,SAAS;gBACxC,GAAG,EAAE,kBAAkB,CAAC,GAAG,IAAI,SAAS;aACzC,CAAC;YACJ,CAAC,CAAC,SAAS;KACd,CAAC,CAAA;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,QAAqB;IACnD,IAAI,CAAC;QACH,IAAI,QAAQ,CAAC,SAAS,IAAI,CAAC;YAAE,OAAO,KAAK,CAAA;QACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;YAAE,OAAO,KAAK,CAAA;QAC/D,IAAI,CAAC,QAAQ,CAAC,eAAe;YAAE,OAAO,KAAK,CAAA;QAC3C,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}