@hostwebhook/platform-contracts 0.14.0 → 0.15.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.
@@ -59,16 +59,30 @@ export interface AvisosEnVivo {
59
59
  /** Un paso de pipeline terminó. */
60
60
  emitPipelineStep(orgId: string, paso: object): void;
61
61
  /**
62
- * Un nodo FUENTE recibió algo.
62
+ * Un nodo acaba de persistir su salida.
63
63
  *
64
64
  * Evento propio y no `pipeline:step` porque un webhook recibiendo tráfico
65
65
  * no ejecuta un paso, y fabricarle uno falso ensucia a quien escucha pasos
66
66
  * de verdad.
67
+ *
68
+ * ## Las dos salidas van en campos distintos
69
+ *
70
+ * Un bucle emite DOS formas: por `loop` el elemento de la vuelta, por `done`
71
+ * lo acumulado de todas. El panel enseña cada una en su recuadro, así que
72
+ * meter la acumulación en `lastPayload` taparía una con la otra — el mismo
73
+ * fallo que ya costó separarlas en la base, donde compartían campo.
74
+ *
75
+ * Por eso `lastPayload` es opcional: el aviso del `done` no lleva ninguna, y
76
+ * quien lo recibe distingue las dos por qué campo vino relleno. Un aviso sin
77
+ * ninguno de los dos no dice nada y el receptor lo descarta.
67
78
  */
68
79
  emitNodePayload(orgId: string, data: {
69
80
  nodeType: string;
70
81
  nodeId: string;
71
- lastPayload: unknown;
82
+ lastPayload?: unknown;
83
+ /** Lo que acumuló el puerto `done` de un bucle. Sólo lo llevan los
84
+ * avisos del bucle; los demás nodos no tienen esa salida. */
85
+ donePayload?: unknown;
72
86
  /** Datos de ejemplo adoptados a mano; viaja aparte del payload. */
73
87
  example?: boolean;
74
88
  }): void;
@@ -280,7 +280,25 @@ export interface CorridaDelMotor {
280
280
  * dure el flujo entero.
281
281
  */
282
282
  ejecutar(startNodeType: string, startNodeId: string, payload: Record<string, unknown> | undefined, orgId: string, userId: string, executionId: string): Promise<unknown>;
283
- resumeFromApproval(approvalNode: NodoDeAprobacion, payload: Record<string, unknown>, action: 'approve' | 'reject', orgId: string): Promise<{
283
+ resumeFromApproval(approvalNode: NodoDeAprobacion, payload: Record<string, unknown>, action: 'approve' | 'reject', orgId: string,
284
+ /**
285
+ * 🔴 La corrida que se está REANUDANDO, con el nombre que le puso la
286
+ * pendiente (`pipeline-test-<executionId>`).
287
+ *
288
+ * Sin ella, quien reanuda sorteaba un `executionId` nuevo, y eso rompía dos
289
+ * cosas que parecían fallos distintos:
290
+ *
291
+ * · El modal de Run Pipeline filtra los pasos por el id de SU corrida, así
292
+ * que descartaba TODOS los de la reanudación: se quedaba con el approval
293
+ * en ámbar mientras el contador seguía corriendo.
294
+ * · El historial agrupa por ese mismo id, así que los pasos se iban a otra
295
+ * corrida y en la que se miraba salían en gris —«did not run»— incluida
296
+ * la rama que sí se ejecutó.
297
+ *
298
+ * Opcional para que quien todavía no la pase siga compilando: sin ella se
299
+ * sortea como antes, que es peor pero es lo de siempre.
300
+ */
301
+ corridaQueSeReanuda?: string): Promise<{
284
302
  executionId: string;
285
303
  steps: PasoDeCorrida[];
286
304
  }>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hostwebhook/platform-contracts",
3
- "version": "0.14.0",
3
+ "version": "0.15.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",