@hostwebhook/node-types 1.10.9 → 1.10.11

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.
package/dist/registry.js CHANGED
@@ -138,7 +138,7 @@ exports.NODE_REGISTRY = {
138
138
  type: 'notificationAction', prefix: 'na', label: 'Notification',
139
139
  group: 'Actions', detailPath: '/dashboard/notification-actions', apiPath: '/notification-actions',
140
140
  stateKey: 'notificationActions', allStateKey: 'allNotificationActions',
141
- color: '#f472b6', testable: false,
141
+ color: '#f472b6', testable: true,
142
142
  },
143
143
  sheetsAction: {
144
144
  type: 'sheetsAction', prefix: 'sheet', label: 'Google Sheets Action',
package/dist/types.d.ts CHANGED
@@ -59,6 +59,8 @@ export interface NodeUIConfig {
59
59
  * Example: { doneOutputNodes: 'lastDonePayload' } for loop nodes.
60
60
  */
61
61
  alternatePayloads?: Record<string, string>;
62
+ /** Whether this node can be connected as a loop-back target. Only nodes that go through the unified node-lifecycle support loop-back detection. */
63
+ loopBackAllowed?: boolean;
62
64
  };
63
65
  }
64
66
  /** API dispatch config — how the event pipeline processes each node */
package/dist/ui.js CHANGED
@@ -11,15 +11,15 @@ exports.NODE_UI = {
11
11
  endpoint: { fromNodes: true, toNodes: true, isSource: true },
12
12
  scheduledWebhook: { fromNodes: false, toNodes: true, isSource: true, outputHandles: ['right', 'bottom'], dotHandles: { output: ['right-out', 'bottom-out'] } },
13
13
  // ── Pipeline processing nodes ──
14
- filter: { fromNodes: true, toNodes: true },
15
- transform: { fromNodes: true, toNodes: true },
16
- schemaValidator: { fromNodes: true, toNodes: true },
17
- conditional: { fromNodes: true, toNodes: true, outputHandles: ['right', 'bottom'], special: { connectModal: 'output-group', outputGroups: { field: 'branches', nameField: 'name', summaryField: 'filterMode', label: 'branch', elseField: 'elseOutputNodes' } } },
14
+ filter: { fromNodes: true, toNodes: true, special: { loopBackAllowed: true } },
15
+ transform: { fromNodes: true, toNodes: true, special: { loopBackAllowed: true } },
16
+ schemaValidator: { fromNodes: true, toNodes: true, special: { loopBackAllowed: true } },
17
+ conditional: { fromNodes: true, toNodes: true, outputHandles: ['right', 'bottom'], special: { loopBackAllowed: true, connectModal: 'output-group', outputGroups: { field: 'branches', nameField: 'name', summaryField: 'filterMode', label: 'branch', elseField: 'elseOutputNodes' } } },
18
18
  delay: { fromNodes: true, toNodes: true },
19
19
  rateLimiter: { fromNodes: true, toNodes: true },
20
- aggregator: { fromNodes: true, toNodes: true },
20
+ aggregator: { fromNodes: true, toNodes: true, special: { loopBackAllowed: true } },
21
21
  cache: { fromNodes: true, toNodes: true },
22
- code: { fromNodes: true, toNodes: true },
22
+ code: { fromNodes: true, toNodes: true, special: { loopBackAllowed: true } },
23
23
  ai: { fromNodes: true, toNodes: true },
24
24
  // ── Flow control nodes ──
25
25
  split: { fromNodes: true, toNodes: true, outputHandles: ['right', 'bottom'], special: { connectModal: 'output-group', outputGroups: { field: 'outputs', nameField: 'name', summaryField: 'field', label: 'output', elseField: 'remainderOutputNodes' } } },
@@ -29,11 +29,11 @@ exports.NODE_UI = {
29
29
  // ── Routing nodes ──
30
30
  router: { fromNodes: true, toNodes: true, outputHandles: ['right', 'bottom'], dotHandles: { output: ['right-out', 'bottom-out'] }, special: { connectModal: 'rule' } },
31
31
  // ── Action nodes ──
32
- emailAction: { fromNodes: true, toNodes: false, inputHandles: ['left', 'top'], dotHandles: { input: ['left-in', 'top-in'] }, special: { isTerminal: true, routerTargetLabel: 'email' } },
33
- httpAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] } },
34
- mongoAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] } },
32
+ emailAction: { fromNodes: true, toNodes: false, inputHandles: ['left', 'top'], dotHandles: { input: ['left-in', 'top-in'] }, special: { isTerminal: true, loopBackAllowed: true, routerTargetLabel: 'email' } },
33
+ httpAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
34
+ mongoAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
35
35
  notificationAction: { fromNodes: true, toNodes: false, inputHandles: ['left', 'top'], dotHandles: { input: ['left-in', 'top-in'] }, special: { isTerminal: true, routerTargetLabel: 'notification' } },
36
- sheetsAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] } },
36
+ sheetsAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
37
37
  // ── Monitoring ──
38
38
  alert: { fromNodes: true, toNodes: false, inputHandles: ['bottom'], special: { isTerminal: true } },
39
39
  // ── Annotations ──
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hostwebhook/node-types",
3
- "version": "1.10.9",
3
+ "version": "1.10.11",
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",