@hostwebhook/platform-contracts 0.19.0 → 0.21.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.
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
*
|
|
20
20
|
* ## Lo que ya estaba bien
|
|
21
21
|
*
|
|
22
|
-
* Los
|
|
22
|
+
* Los métodos reciben datos planos, y no por casualidad: los llamantes
|
|
23
23
|
* ya hacen `.toJSON()` o pasan por `comoObjetoPlano(...)` antes de emitir.
|
|
24
24
|
* Aquí no hay ningún documento de Mongoose que aplanar — algo que en la
|
|
25
25
|
* costura de ficheros costó un adaptador entero.
|
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
* clase que en `discord.provider` también se llama `gateway`. Medir por el
|
|
37
37
|
* TIPO inyectado y no por el nombre de la propiedad es lo que los descarta.
|
|
38
38
|
*
|
|
39
|
-
* ## ⚠️
|
|
39
|
+
* ## ⚠️ Todos avisan menos uno, que CONTESTA
|
|
40
40
|
*
|
|
41
|
-
*
|
|
41
|
+
* Todos menos uno son difusión a la sala `org:<id>`: se mandan y no se
|
|
42
42
|
* espera nada. Si se pierde uno, el panel enseña un dato viejo hasta que
|
|
43
43
|
* alguien recargue — molesto y nada más.
|
|
44
44
|
*
|
|
@@ -49,8 +49,25 @@
|
|
|
49
49
|
*
|
|
50
50
|
* Va en el mismo contrato porque hoy es la misma inyección y su único
|
|
51
51
|
* llamante es el motor, pero quien implemente esto por red tiene que tratarlo
|
|
52
|
-
* distinto: los
|
|
52
|
+
* distinto: los demás pueden ser «dispara y olvida», éste no.
|
|
53
53
|
*/
|
|
54
|
+
/**
|
|
55
|
+
* Lo que dice el aviso de una corrida: lo justo para que el panel decida si
|
|
56
|
+
* vuelve a pedir lo que enseña.
|
|
57
|
+
*/
|
|
58
|
+
export interface AvisoDeCorrida {
|
|
59
|
+
correlationId: string;
|
|
60
|
+
/** De qué nodo salió. La lista de workflows agrupa por él. */
|
|
61
|
+
sourceId?: string;
|
|
62
|
+
/**
|
|
63
|
+
* `running` mientras graba pasos; el veredicto al cerrarse. Ojo: una
|
|
64
|
+
* corrida cerrada puede volver a `running` si llega un paso tarde (ver el
|
|
65
|
+
* grabador), así que el panel no debe tratar el cierre como definitivo.
|
|
66
|
+
*/
|
|
67
|
+
status: 'running' | 'success' | 'failed' | 'partial';
|
|
68
|
+
/** `true` sólo en el aviso que manda el cierre. */
|
|
69
|
+
cerrada: boolean;
|
|
70
|
+
}
|
|
54
71
|
/** Un aviso en vivo al panel de la organización. */
|
|
55
72
|
export interface AvisosEnVivo {
|
|
56
73
|
emitNewEvent(webhookId: string, orgId: string, evento: object): void;
|
|
@@ -96,6 +113,20 @@ export interface AvisosEnVivo {
|
|
|
96
113
|
pendingApproval: object;
|
|
97
114
|
}): void;
|
|
98
115
|
emitSwRunComplete(orgId: string, swId: string, run: object): void;
|
|
116
|
+
/**
|
|
117
|
+
* Una corrida del historial cambió: grabó un paso o se cerró [2026-09-29].
|
|
118
|
+
*
|
|
119
|
+
* Es lo que hace que Run History se mueva solo. Lo emiten LOS DOS que
|
|
120
|
+
* graban —el gateway y hw-nodes escriben en las mismas colecciones—, y por
|
|
121
|
+
* eso vive aquí y no en el grabador: el que graba en hw-nodes no tiene
|
|
122
|
+
* sockets, sólo este contrato.
|
|
123
|
+
*
|
|
124
|
+
* Es una SEÑAL, no el dato: quien escucha vuelve a pedir la lista o la
|
|
125
|
+
* corrida. Mandar la fila entera obligaría a leerla después de cada `$inc`,
|
|
126
|
+
* en el camino caliente de cada paso, para un panel que quizá nadie tiene
|
|
127
|
+
* abierto.
|
|
128
|
+
*/
|
|
129
|
+
emitRunUpdate(orgId: string, corrida: AvisoDeCorrida): void;
|
|
99
130
|
/**
|
|
100
131
|
* Un contador de uso cambió. Sin payload: quien escucha vuelve a pedir
|
|
101
132
|
* `GET /auth/me/usage`.
|
|
@@ -106,7 +137,7 @@ export interface AvisosEnVivo {
|
|
|
106
137
|
*
|
|
107
138
|
* No es difusión. Al otro lado hay un cliente esperando la respuesta de un
|
|
108
139
|
* webhook en modo síncrono; perder este mensaje lo deja colgado hasta el
|
|
109
|
-
* 408 de `waitForSync`. Los
|
|
140
|
+
* 408 de `waitForSync`. Los demás pueden ser «dispara y olvida»; éste
|
|
110
141
|
* necesita entrega, y por eso está escrito aparte y no mezclado arriba.
|
|
111
142
|
*/
|
|
112
143
|
resolveSyncWaiter(eventId: string, resultado: {
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
*
|
|
21
21
|
* ## Lo que ya estaba bien
|
|
22
22
|
*
|
|
23
|
-
* Los
|
|
23
|
+
* Los métodos reciben datos planos, y no por casualidad: los llamantes
|
|
24
24
|
* ya hacen `.toJSON()` o pasan por `comoObjetoPlano(...)` antes de emitir.
|
|
25
25
|
* Aquí no hay ningún documento de Mongoose que aplanar — algo que en la
|
|
26
26
|
* costura de ficheros costó un adaptador entero.
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
* clase que en `discord.provider` también se llama `gateway`. Medir por el
|
|
38
38
|
* TIPO inyectado y no por el nombre de la propiedad es lo que los descarta.
|
|
39
39
|
*
|
|
40
|
-
* ## ⚠️
|
|
40
|
+
* ## ⚠️ Todos avisan menos uno, que CONTESTA
|
|
41
41
|
*
|
|
42
|
-
*
|
|
42
|
+
* Todos menos uno son difusión a la sala `org:<id>`: se mandan y no se
|
|
43
43
|
* espera nada. Si se pierde uno, el panel enseña un dato viejo hasta que
|
|
44
44
|
* alguien recargue — molesto y nada más.
|
|
45
45
|
*
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
*
|
|
51
51
|
* Va en el mismo contrato porque hoy es la misma inyección y su único
|
|
52
52
|
* llamante es el motor, pero quien implemente esto por red tiene que tratarlo
|
|
53
|
-
* distinto: los
|
|
53
|
+
* distinto: los demás pueden ser «dispara y olvida», éste no.
|
|
54
54
|
*/
|
|
55
55
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
56
56
|
exports.AVISOS_EN_VIVO = void 0;
|
|
@@ -106,7 +106,7 @@ export interface DescripcionDeCredencial {
|
|
|
106
106
|
* registro es forense, no un índice: se prefiere que de hoy en adelante diga
|
|
107
107
|
* una sola cosa.
|
|
108
108
|
*/
|
|
109
|
-
export type TipoDeEntidad = 'trigger' | 'webhook' | 'aiNode' | 'socialMediaAction' | 'socialPost' | 'calendarAction' | 'docsAction' | 'driveAction' | 'sheetsAction' | 'emailAction' | 'gmailAction' | 'approvalNode' | 'telegramAction' | 'whatsappAction' | 'discordAction' | 'slackAction' | 'mongoAction' | 'postgresAction' | 'httpAction' | 'githubAction' | 'notionAction' | 'jiraAction' | 'bucketAction' | 'apifyAction' | 'calendlyAction' | 'airtableAction' | 'shopifyAction' | 'mailchimpAction' | 'elevenlabsAction' | 'firecrawlAction' | 'notificationAction' | 'googleAnalyticsAction' | 'googleContactsAction' | 'vectorStore' | 'voiceAgent';
|
|
109
|
+
export type TipoDeEntidad = 'trigger' | 'webhook' | 'aiNode' | 'socialMediaAction' | 'socialPost' | 'calendarAction' | 'docsAction' | 'driveAction' | 'sheetsAction' | 'emailAction' | 'gmailAction' | 'approvalNode' | 'telegramAction' | 'whatsappAction' | 'discordAction' | 'slackAction' | 'mongoAction' | 'postgresAction' | 'httpAction' | 'githubAction' | 'notionAction' | 'jiraAction' | 'bucketAction' | 'apifyAction' | 'calendlyAction' | 'airtableAction' | 'shopifyAction' | 'mailchimpAction' | 'elevenlabsAction' | 'woocommerceAction' | 'firecrawlAction' | 'notificationAction' | 'googleAnalyticsAction' | 'googleContactsAction' | 'vectorStore' | 'voiceAgent';
|
|
110
110
|
/**
|
|
111
111
|
* Por qué esta lectura NO se puede comprobar contra el documento de hoy.
|
|
112
112
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hostwebhook/platform-contracts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.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",
|