@hostwebhook/platform-contracts 0.5.0 → 0.6.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.
@@ -68,6 +68,38 @@ export interface GrabadorDeHistorial {
68
68
  * tiene que garantizarlo también.
69
69
  */
70
70
  cerrar(correlationId: string): void;
71
+ /**
72
+ * Sella la versión del flujo y devuelve su huella, o `null` si no hay flujo
73
+ * que sellar.
74
+ *
75
+ * ## 🔥 Por qué está en el contrato y no se calcula donde se graba
76
+ *
77
+ * La huella ES la forma del flujo, y la forma se lee del LIENZO, que hoy
78
+ * vive en el gateway. Sin lienzo no hay huella, y no se puede inventar.
79
+ *
80
+ * Cuando hw-nodes empezó a grabar el historial por su cuenta, esta llamada
81
+ * se quedó fuera — y el efecto no era «esta corrida pierde su foto»:
82
+ * `asegurarVersion` no CONSULTA la versión, la **CREA**. El que graba el paso
83
+ * es el único que la llama, así que sin ella **deja de haber fotos** y el
84
+ * historial de versiones del flujo se congela en la última que selló el
85
+ * gateway.
86
+ *
87
+ * ## ⚠️ Es `Promise`, a diferencia de los otros dos
88
+ *
89
+ * `registrarPaso` y `cerrar` son `void` porque corren en el camino caliente
90
+ * de cada paso. Éste no: se llama **una vez por corrida** —quien lo
91
+ * implemente debe recordar el resultado por `correlationId`— y el que graba
92
+ * necesita la huella para escribirla en la fila. Un `void` aquí obligaría a
93
+ * escribir la corrida sin huella y volver a por ella después.
94
+ *
95
+ * ⚠️ Y devuelve `null` de verdad cuando no hay nada que sellar (sin
96
+ * `workspaceId`, o si el lienzo falla). `null` NO es «reusa la última»:
97
+ * escribir una huella que no es la de esa corrida se lee peor que no tener
98
+ * ninguna, porque nadie sospecha de ella.
99
+ */
100
+ sellarVersion(orgId: string, workspaceId?: string,
101
+ /** De qué nodo salió la corrida. Decide QUÉ flujo se sella. */
102
+ sourceId?: string): Promise<string | null>;
71
103
  }
72
104
  /**
73
105
  * ⚠️ Cadena y no `Symbol`, igual que el resto de tokens de la Fase 2.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hostwebhook/platform-contracts",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Contratos compartidos entre los servicios de HostWebhook: addons del plan, identidad interna, y las formas que cruzan una frontera de red",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",