@hostwebhook/node-types 1.52.2 → 1.52.4

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.
@@ -16,13 +16,13 @@ exports.isTerminal = isTerminal;
16
16
  exports.isNodeType = isNodeType;
17
17
  /** All node types that can appear as pipeline outputs */
18
18
  const PROCESSING_OUTPUTS = [
19
- 'endpoint', 'router', 'filter', 'transform', 'cache', 'code', 'rateLimiter',
19
+ 'webhook', 'router', 'filter', 'transform', 'cache', 'code', 'rateLimiter',
20
20
  'aggregator', 'conditional', 'delay', 'schemaValidator', 'split', 'markdown', 'fileTransform', 'limit',
21
21
  'emailAction', '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 = [
25
- 'endpoint', 'scheduledWebhook', 'serviceTrigger', 'voiceAgent', 'router', 'filter', 'transform',
25
+ 'webhook', 'scheduledWorkflow', 'serviceTrigger', 'voiceAgent', 'router', 'filter', 'transform',
26
26
  'cache', 'code', 'rateLimiter', 'aggregator', 'conditional', 'delay', 'schemaValidator', 'split', 'loop', 'markdown', 'fileTransform', 'limit',
27
27
  ];
28
28
  /** Action nodes that can chain (non-terminal) */
@@ -31,8 +31,8 @@ const CHAINABLE_ACTIONS = ['httpAction', 'mongoAction', 'postgresAction', 'sheet
31
31
  const ACTION_INPUTS = [...STANDARD_INPUTS, ...CHAINABLE_ACTIONS];
32
32
  exports.NODE_CONNECTIONS = {
33
33
  // ── Source nodes ──
34
- endpoint: { acceptsInputFrom: [], canOutputTo: PROCESSING_OUTPUTS },
35
- scheduledWebhook: { acceptsInputFrom: [], canOutputTo: PROCESSING_OUTPUTS },
34
+ webhook: { acceptsInputFrom: [], canOutputTo: PROCESSING_OUTPUTS },
35
+ scheduledWorkflow: { acceptsInputFrom: [], canOutputTo: PROCESSING_OUTPUTS },
36
36
  chatTrigger: { acceptsInputFrom: [], canOutputTo: PROCESSING_OUTPUTS },
37
37
  serviceTrigger: { acceptsInputFrom: [], canOutputTo: PROCESSING_OUTPUTS },
38
38
  voiceAgent: { acceptsInputFrom: [], canOutputTo: PROCESSING_OUTPUTS },
@@ -57,10 +57,10 @@ exports.NODE_CONNECTIONS = {
57
57
  // approval is the generic "human-in-the-loop gate" — it should be
58
58
  // able to gate ANY action, not the hand-picked subset that existed
59
59
  // when this entry was last touched. Same staleness pattern as merge.
60
- approval: { acceptsInputFrom: ['endpoint', 'filter', 'transform'], canOutputTo: ['endpoint', 'filter', 'transform', 'emailAction', 'httpAction', 'mongoAction', 'postgresAction', 'notificationAction', 'sheetsAction', 'calendarAction', 'docsAction', 'driveAction', 'firecrawlAction', 'telegramAction', 'whatsappAction', 'discordAction', 'slackAction', 'googleContactsAction', 'vectorStore'], special: { hasRejectionOutputNodes: true } },
60
+ approval: { acceptsInputFrom: ['webhook', 'filter', 'transform'], canOutputTo: ['webhook', 'filter', 'transform', 'emailAction', 'httpAction', 'mongoAction', 'postgresAction', 'notificationAction', 'sheetsAction', 'calendarAction', 'docsAction', 'driveAction', 'firecrawlAction', 'telegramAction', 'whatsappAction', 'discordAction', 'slackAction', 'googleContactsAction', 'vectorStore'], special: { hasRejectionOutputNodes: true } },
61
61
  loop: { acceptsInputFrom: STANDARD_INPUTS, canOutputTo: PROCESSING_OUTPUTS, special: { hasLoopBack: true } },
62
62
  // ── Routing nodes ──
63
- router: { acceptsInputFrom: ['endpoint', 'scheduledWebhook', 'filter', 'transform'], canOutputTo: PROCESSING_OUTPUTS.filter(t => t !== 'endpoint') },
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
66
  httpAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
package/dist/dispatch.js CHANGED
@@ -14,7 +14,7 @@ exports.NODE_DISPATCH = void 0;
14
14
  exports.getAllNodeCollections = getAllNodeCollections;
15
15
  exports.getNodeDispatchConfig = getNodeDispatchConfig;
16
16
  exports.NODE_DISPATCH = {
17
- // ── Pipeline processing — generic dispatch off endpoint ──
17
+ // ── Pipeline processing — generic dispatch off webhook ──
18
18
  filter: { service: 'filterNodesService', collection: 'filternodes', hasFilters: true, outputFields: ['outputNodes'], customDispatch: false, pipelineDispatch: 'generic' },
19
19
  transform: { service: 'transformNodesService', collection: 'transformnodes', hasFilters: false, outputFields: ['outputNodes'], customDispatch: false, pipelineDispatch: 'generic' },
20
20
  code: { service: 'codeNodesService', collection: 'codenodes', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'generic' },
@@ -37,7 +37,7 @@ exports.NODE_DISPATCH = {
37
37
  loop: { service: 'loopNodesService', collection: 'loopnodes', hasFilters: false, outputFields: ['loopOutputNodes', 'doneOutputNodes'], customDispatch: true, pipelineDispatch: 'custom' },
38
38
  // ── Routing — custom dispatch ──
39
39
  router: { service: 'routersService', collection: 'routers', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'custom' },
40
- // ── Action nodes — fired in onDeliveryResult, excluded from endpoint dispatch ──
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
42
  httpAction: { service: 'httpActionsService', collection: 'httpactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
43
43
  mongoAction: { service: 'mongoActionsService', collection: 'mongoactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
@@ -56,8 +56,8 @@ exports.NODE_DISPATCH = {
56
56
  rssAction: { service: 'rssActionsService', collection: 'rssactions', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
57
57
  socialMediaAction: { service: 'socialMediaActionsService', collection: 'socialmediaactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
58
58
  // ── Sources — start the flow themselves, not dispatched ──
59
- endpoint: { service: 'endpointsService', collection: 'endpoints', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
60
- scheduledWebhook: { service: 'scheduledWebhooksService', collection: 'scheduledwebhooks', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
59
+ webhook: { service: 'webhooksService', collection: 'webhooks', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
60
+ scheduledWorkflow: { service: 'scheduledWorkflowsService', collection: 'scheduledworkflows', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
61
61
  chatTrigger: { service: 'chatTriggersService', collection: 'chattriggers', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
62
62
  serviceTrigger: { service: 'serviceTriggersService', collection: 'servicetriggers', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
63
63
  voiceAgent: { service: 'voiceAgentsService', collection: 'voiceagents', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
package/dist/registry.js CHANGED
@@ -11,16 +11,16 @@ exports.NODE_TYPE_TO_PREFIX = exports.PREFIX_TO_NODE_TYPE = exports.NODE_STATE_K
11
11
  exports.getNodeRegistryEntry = getNodeRegistryEntry;
12
12
  exports.NODE_REGISTRY = {
13
13
  // ── Sources ──
14
- endpoint: {
15
- type: 'endpoint', prefix: 'ep', label: 'Endpoint',
16
- group: 'Sources', detailPath: '/dashboard/endpoints', apiPath: '/endpoints',
17
- stateKey: 'endpoints', allStateKey: 'allEndpoints',
14
+ webhook: {
15
+ type: 'webhook', prefix: 'wh', label: 'Webhook',
16
+ group: 'Sources', detailPath: '/dashboard/webhooks', apiPath: '/webhooks',
17
+ stateKey: 'webhooks', allStateKey: 'allWebhooks',
18
18
  color: '#a78bfa', testable: false,
19
19
  },
20
- scheduledWebhook: {
21
- type: 'scheduledWebhook', prefix: 'sw', label: 'Scheduled Webhook',
22
- group: 'Sources', detailPath: '/dashboard/scheduled-webhooks', apiPath: '/scheduled-webhooks',
23
- stateKey: 'scheduledWebhooks', allStateKey: 'allScheduledWebhooks',
20
+ scheduledWorkflow: {
21
+ type: 'scheduledWorkflow', prefix: 'swf', label: 'Scheduled Workflow',
22
+ group: 'Sources', detailPath: '/dashboard/scheduled-workflows', apiPath: '/scheduled-workflows',
23
+ stateKey: 'scheduledWorkflows', allStateKey: 'allScheduledWorkflows',
24
24
  color: '#2dd4bf', testable: true,
25
25
  },
26
26
  chatTrigger: {
@@ -174,7 +174,7 @@ exports.NODE_REGISTRY = {
174
174
  type: 'mongoAction', prefix: 'ma', label: 'MongoDB Action',
175
175
  group: 'Actions', detailPath: '/dashboard/mongo-actions', apiPath: '/mongo-actions',
176
176
  stateKey: 'mongoActions', allStateKey: 'allMongoActions',
177
- color: '#34d399', testable: false,
177
+ color: '#34d399', testable: true,
178
178
  },
179
179
  postgresAction: {
180
180
  type: 'postgresAction', prefix: 'pg', label: 'Postgres Action',
package/dist/types.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /** All valid node type identifiers */
2
- export type NodeType = 'endpoint' | 'scheduledWebhook' | 'chatTrigger' | 'serviceTrigger' | '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' | 'serviceTrigger' | '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';
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 */
@@ -94,12 +94,12 @@ export interface NodeUIConfig {
94
94
  }
95
95
  /**
96
96
  * How the event pipeline routes a payload to this node when an
97
- * upstream endpoint connects to it directly. Required so adding a
97
+ * upstream webhook connects to it directly. Required so adding a
98
98
  * new node type at compile time is impossible without picking one.
99
99
  *
100
100
  * - 'generic': dispatchConnectedNodes loops findActiveByInputEndpoint
101
101
  * on the service and dispatches every active match. Use for
102
- * pipeline-style nodes that ingest endpoint payloads (filter,
102
+ * pipeline-style nodes that ingest webhook payloads (filter,
103
103
  * transform, ai, code, markdown, fileTransform, vectorStore).
104
104
  *
105
105
  * - 'custom': has a dedicated `case` in the dispatchOutputNodes
@@ -109,10 +109,10 @@ export interface NodeUIConfig {
109
109
  * loop, merge, approval, schemaValidator, router). The generic
110
110
  * loop must NOT process these — would dispatch twice.
111
111
  *
112
- * - 'excluded': not dispatched in the endpoint flow at all. Action
112
+ * - 'excluded': not dispatched in the webhook flow at all. Action
113
113
  * nodes (email/http/mongo/notification/sheets/calendar/docs/
114
114
  * firecrawl) are fired post-delivery in onDeliveryResult with
115
- * their own loops; ingress nodes (endpoint/scheduledWebhook/
115
+ * their own loops; ingress nodes (webhook/scheduledWorkflow/
116
116
  * chatTrigger/serviceTrigger) start the flow themselves;
117
117
  * stickyNote is purely visual.
118
118
  */
package/dist/ui.js CHANGED
@@ -8,8 +8,8 @@ exports.PREFIX_TO_TYPE = exports.NODE_UI = void 0;
8
8
  exports.resolveNodeId = resolveNodeId;
9
9
  exports.NODE_UI = {
10
10
  // ── Source nodes ──
11
- endpoint: { fromNodes: true, toNodes: true, isSource: true },
12
- scheduledWebhook: { fromNodes: false, toNodes: true, isSource: true, outputHandles: ['right', 'bottom'], dotHandles: { output: ['right-out', 'bottom-out'] } },
11
+ webhook: { fromNodes: true, toNodes: true, isSource: true },
12
+ scheduledWorkflow: { fromNodes: false, toNodes: true, isSource: true, outputHandles: ['right', 'bottom'], dotHandles: { output: ['right-out', 'bottom-out'] } },
13
13
  chatTrigger: { fromNodes: false, toNodes: true, isSource: true, outputHandles: ['right'], dotHandles: { output: ['right-out'] } },
14
14
  serviceTrigger: { fromNodes: false, toNodes: true, isSource: true, outputHandles: ['right', 'bottom'], dotHandles: { output: ['right-out', 'bottom-out'] } },
15
15
  // Voice Agent: dynamicOutputs=true tells NodeShell to derive ONE
@@ -72,8 +72,8 @@ exports.NODE_UI = {
72
72
  };
73
73
  /** Canvas prefix → node type mapping (used by FlowCanvas to identify node type from XYFlow node ID) */
74
74
  exports.PREFIX_TO_TYPE = [
75
- { prefix: 'ep-', type: 'endpoint', canvasType: 'endpoint' },
76
- { prefix: 'sw-', type: 'scheduledWebhook', canvasType: 'scheduledWebhook' },
75
+ { prefix: 'wh-', type: 'webhook', canvasType: 'webhook' },
76
+ { prefix: 'swf-', type: 'scheduledWorkflow', canvasType: 'scheduledWorkflow' },
77
77
  { prefix: 'chat-', type: 'chatTrigger', canvasType: 'chatTrigger' },
78
78
  { prefix: 'svc-', type: 'serviceTrigger', canvasType: 'serviceTrigger' },
79
79
  { prefix: 'va-', type: 'voiceAgent', canvasType: 'voiceAgent' },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hostwebhook/node-types",
3
- "version": "1.52.2",
3
+ "version": "1.52.4",
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",