@hostwebhook/node-types 1.53.0 → 1.54.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.
@@ -18,7 +18,7 @@ exports.isNodeType = isNodeType;
18
18
  const PROCESSING_OUTPUTS = [
19
19
  'webhook', 'router', 'filter', 'transform', 'cache', 'code', 'rateLimiter',
20
20
  'aggregator', 'conditional', 'delay', 'schemaValidator', 'split', 'markdown', 'fileTransform', 'limit',
21
- 'emailAction', 'httpAction', 'mongoAction', 'postgresAction', 'notificationAction', 'sheetsAction', 'calendarAction', 'docsAction', 'driveAction', 'firecrawlAction', 'telegramAction', 'whatsappAction', 'discordAction', 'slackAction', 'googleContactsAction', 'vectorStore', 'rssAction', 'socialMediaAction', 'loop',
21
+ 'emailAction', 'gmailAction', 'httpAction', 'mongoAction', 'postgresAction', 'notificationAction', 'sheetsAction', 'calendarAction', 'docsAction', 'driveAction', 'firecrawlAction', 'telegramAction', 'whatsappAction', 'discordAction', 'slackAction', 'googleContactsAction', 'vectorStore', 'rssAction', 'socialMediaAction', 'loop',
22
22
  ];
23
23
  /** Standard processing input sources */
24
24
  const STANDARD_INPUTS = [
@@ -63,6 +63,7 @@ exports.NODE_CONNECTIONS = {
63
63
  router: { acceptsInputFrom: ['webhook', 'scheduledWorkflow', 'filter', 'transform'], canOutputTo: PROCESSING_OUTPUTS.filter(t => t !== 'webhook') },
64
64
  // ── Action nodes ──
65
65
  emailAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
66
+ gmailAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
66
67
  httpAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
67
68
  mongoAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
68
69
  postgresAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
package/dist/dispatch.js CHANGED
@@ -39,6 +39,7 @@ exports.NODE_DISPATCH = {
39
39
  router: { service: 'routersService', collection: 'routers', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'custom' },
40
40
  // ── Action nodes — fired in onDeliveryResult, excluded from webhook dispatch ──
41
41
  emailAction: { service: 'emailActionsService', collection: 'emailactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
42
+ gmailAction: { service: 'gmailActionsService', collection: 'gmailactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
42
43
  httpAction: { service: 'httpActionsService', collection: 'httpactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
43
44
  mongoAction: { service: 'mongoActionsService', collection: 'mongoactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
44
45
  postgresAction: { service: 'postgresActionsService', collection: 'postgresactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
package/dist/registry.js CHANGED
@@ -154,14 +154,35 @@ exports.NODE_REGISTRY = {
154
154
  color: '#38bdf8', testable: true,
155
155
  },
156
156
  // ── Actions ──
157
+ /**
158
+ * Manda correo por Resend, y sólo por Resend.
159
+ *
160
+ * Tuvo un campo `provider` con Gmail y un Outlook que nunca llegó. Gmail se
161
+ * fue a su propio nodo —ver `gmailAction`— y con él su OAuth, sus dieciséis
162
+ * operaciones y el toolkit de IA, que era suyo: aquí sólo quedan enviar y
163
+ * el modo de IA no tiene dieciséis herramientas que ofrecer.
164
+ */
157
165
  emailAction: {
158
166
  type: 'emailAction', prefix: 'ea', label: 'Email Action',
159
167
  group: 'Actions', detailPath: '/dashboard/email-actions', apiPath: '/email-actions',
160
168
  stateKey: 'emailActions', allStateKey: 'allEmailActions',
161
169
  color: '#f472b6', testable: true,
162
- // AI Toolkit mode wires the node through the upstream AI Node's
163
- // tools[] list, not via canvas edges — hide handles to prevent
164
- // accidental misrouting that would silently fire with empty fields.
170
+ },
171
+ /**
172
+ * Gmail salio del nodo Email, que ahora manda SOLO por Resend.
173
+ *
174
+ * Estaban juntos bajo un campo `provider`, y eso obligaba a que un nodo de
175
+ * dos operaciones —enviar por Resend— cargara con las dieciseis de Gmail, su
176
+ * OAuth, su toolkit de IA y su send-and-wait. Partidos, cada uno se explica
177
+ * solo y el de Email vuelve a caber en una pantalla.
178
+ */
179
+ gmailAction: {
180
+ type: 'gmailAction', prefix: 'gm', label: 'Gmail',
181
+ group: 'Actions', detailPath: '/dashboard/gmail-actions', apiPath: '/gmail-actions',
182
+ stateKey: 'gmailActions', allStateKey: 'allGmailActions',
183
+ color: '#ea4335', testable: true,
184
+ // El toolkit de IA se vino con Gmail: son sus dieciseis operaciones las
185
+ // que el LLM llama, no las dos de Resend. Ver el comentario de arriba.
165
186
  isToolOnly: (e) => e.aiEnabled === true,
166
187
  },
167
188
  httpAction: {
package/dist/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** All valid node type identifiers */
2
- export type NodeType = 'webhook' | 'scheduledWorkflow' | 'chatTrigger' | 'trigger' | 'voiceAgent' | 'filter' | 'transform' | 'schemaValidator' | 'conditional' | 'delay' | 'rateLimiter' | 'aggregator' | 'cache' | 'code' | 'ai' | 'merge' | 'approval' | 'split' | 'loop' | 'markdown' | 'fileTransform' | 'limit' | 'router' | 'emailAction' | 'httpAction' | 'mongoAction' | 'postgresAction' | 'notificationAction' | 'sheetsAction' | 'calendarAction' | 'docsAction' | 'driveAction' | 'firecrawlAction' | 'telegramAction' | 'whatsappAction' | 'discordAction' | 'slackAction' | 'googleContactsAction' | 'vectorStore' | 'rssAction' | 'socialMediaAction' | 'stickyNote';
2
+ export type NodeType = 'webhook' | 'scheduledWorkflow' | 'chatTrigger' | 'trigger' | 'voiceAgent' | 'filter' | 'transform' | 'schemaValidator' | 'conditional' | 'delay' | 'rateLimiter' | 'aggregator' | 'cache' | 'code' | 'ai' | 'merge' | 'approval' | 'split' | 'loop' | 'markdown' | 'fileTransform' | 'limit' | 'router' | 'emailAction' | 'gmailAction' | 'httpAction' | 'mongoAction' | 'postgresAction' | 'notificationAction' | 'sheetsAction' | 'calendarAction' | 'docsAction' | 'driveAction' | 'firecrawlAction' | 'telegramAction' | 'whatsappAction' | 'discordAction' | 'slackAction' | 'googleContactsAction' | 'vectorStore' | 'rssAction' | 'socialMediaAction' | 'stickyNote';
3
3
  /** Node role in the pipeline */
4
4
  export type NodeRole = 'source' | 'processing' | 'flowControl' | 'routing' | 'action' | 'monitoring';
5
5
  /** Handle positions on the canvas node */
package/dist/ui.js CHANGED
@@ -50,6 +50,7 @@ exports.NODE_UI = {
50
50
  router: { fromNodes: true, toNodes: true, outputHandles: ['right', 'bottom'], dotHandles: { output: ['right-out', 'bottom-out'] }, special: { connectModal: 'rule' } },
51
51
  // ── Action nodes ──
52
52
  emailAction: { fromNodes: true, toNodes: true, inputHandles: ['left', 'top'], outputHandles: ['right'], dotHandles: { input: ['left-in', 'top-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'email' } },
53
+ gmailAction: { fromNodes: true, toNodes: true, inputHandles: ['left', 'top'], outputHandles: ['right'], dotHandles: { input: ['left-in', 'top-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'gmail' } },
53
54
  httpAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
54
55
  mongoAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
55
56
  postgresAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
@@ -78,6 +79,7 @@ exports.PREFIX_TO_TYPE = [
78
79
  { prefix: 'trg-', type: 'trigger', canvasType: 'trigger' },
79
80
  { prefix: 'va-', type: 'voiceAgent', canvasType: 'voiceAgent' },
80
81
  { prefix: 'ea-', type: 'emailAction', canvasType: 'emailAction' },
82
+ { prefix: 'gm-', type: 'gmailAction', canvasType: 'gmailAction' },
81
83
  { prefix: 'tg-', type: 'telegramAction', canvasType: 'telegramAction' },
82
84
  { prefix: 'wa-', type: 'whatsappAction', canvasType: 'whatsappAction' },
83
85
  { prefix: 'dc-', type: 'discordAction', canvasType: 'discordAction' },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hostwebhook/node-types",
3
- "version": "1.53.0",
3
+ "version": "1.54.0",
4
4
  "description": "Shared node type definitions, connection rules, and dispatch config for HostWebhook",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",