@hostwebhook/node-types 1.39.0 → 1.41.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,15 +18,15 @@ exports.isNodeType = isNodeType;
18
18
  const PROCESSING_OUTPUTS = [
19
19
  'endpoint', 'router', 'filter', 'transform', 'cache', 'code', 'rateLimiter',
20
20
  'aggregator', 'conditional', 'delay', 'schemaValidator', 'split', 'markdown', 'fileTransform',
21
- 'emailAction', 'httpAction', 'mongoAction', 'postgresAction', 'notificationAction', 'sheetsAction', 'calendarAction', 'docsAction', 'driveAction', 'firecrawlAction', 'telegramAction', 'whatsappAction', 'discordAction', 'slackAction', 'googleContactsAction', 'vectorStore', 'loop',
21
+ 'emailAction', 'httpAction', 'mongoAction', 'postgresAction', 'notificationAction', 'sheetsAction', 'calendarAction', 'docsAction', 'driveAction', 'firecrawlAction', 'telegramAction', 'whatsappAction', 'discordAction', 'slackAction', 'googleContactsAction', 'vectorStore', 'rssAction', 'loop',
22
22
  ];
23
23
  /** Standard processing input sources */
24
24
  const STANDARD_INPUTS = [
25
- 'endpoint', 'scheduledWebhook', 'serviceTrigger', 'voiceAgent', 'rssTrigger', 'router', 'filter', 'transform',
25
+ 'endpoint', 'scheduledWebhook', 'serviceTrigger', 'voiceAgent', 'router', 'filter', 'transform',
26
26
  'cache', 'code', 'rateLimiter', 'aggregator', 'conditional', 'delay', 'schemaValidator', 'split', 'loop', 'markdown', 'fileTransform',
27
27
  ];
28
28
  /** Action nodes that can chain (non-terminal) */
29
- const CHAINABLE_ACTIONS = ['httpAction', 'mongoAction', 'postgresAction', 'sheetsAction', 'calendarAction', 'docsAction', 'driveAction', 'firecrawlAction', 'telegramAction', 'whatsappAction', 'discordAction', 'slackAction', 'googleContactsAction', 'vectorStore'];
29
+ const CHAINABLE_ACTIONS = ['httpAction', 'mongoAction', 'postgresAction', 'sheetsAction', 'calendarAction', 'docsAction', 'driveAction', 'firecrawlAction', 'telegramAction', 'whatsappAction', 'discordAction', 'slackAction', 'googleContactsAction', 'vectorStore', 'rssAction'];
30
30
  /** Full input list for action nodes (standard + chainable actions) */
31
31
  const ACTION_INPUTS = [...STANDARD_INPUTS, ...CHAINABLE_ACTIONS];
32
32
  exports.NODE_CONNECTIONS = {
@@ -36,7 +36,6 @@ exports.NODE_CONNECTIONS = {
36
36
  chatTrigger: { acceptsInputFrom: [], canOutputTo: PROCESSING_OUTPUTS },
37
37
  serviceTrigger: { acceptsInputFrom: [], canOutputTo: PROCESSING_OUTPUTS },
38
38
  voiceAgent: { acceptsInputFrom: [], canOutputTo: PROCESSING_OUTPUTS },
39
- rssTrigger: { acceptsInputFrom: [], canOutputTo: PROCESSING_OUTPUTS },
40
39
  // ── Pipeline processing nodes ──
41
40
  filter: { acceptsInputFrom: STANDARD_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
42
41
  transform: { acceptsInputFrom: STANDARD_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
@@ -79,6 +78,7 @@ exports.NODE_CONNECTIONS = {
79
78
  slackAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
80
79
  googleContactsAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
81
80
  vectorStore: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
81
+ rssAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
82
82
  // ── Processing (transform-like) ──
83
83
  markdown: { acceptsInputFrom: STANDARD_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
84
84
  fileTransform: { acceptsInputFrom: STANDARD_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
package/dist/dispatch.js CHANGED
@@ -52,13 +52,13 @@ exports.NODE_DISPATCH = {
52
52
  discordAction: { service: 'discordActionsService', collection: 'discordactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
53
53
  slackAction: { service: 'slackActionsService', collection: 'slackactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
54
54
  googleContactsAction: { service: 'googleContactsActionsService', collection: 'googlecontactsactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
55
+ rssAction: { service: 'rssActionsService', collection: 'rssactions', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
55
56
  // ── Sources — start the flow themselves, not dispatched ──
56
57
  endpoint: { service: 'endpointsService', collection: 'endpoints', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
57
58
  scheduledWebhook: { service: 'scheduledWebhooksService', collection: 'scheduledwebhooks', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
58
59
  chatTrigger: { service: 'chatTriggersService', collection: 'chattriggers', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
59
60
  serviceTrigger: { service: 'serviceTriggersService', collection: 'servicetriggers', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
60
61
  voiceAgent: { service: 'voiceAgentsService', collection: 'voiceagents', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
61
- rssTrigger: { service: 'rssTriggersService', collection: 'rsstriggers', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
62
62
  // ── Annotation — never executed in pipeline ──
63
63
  stickyNote: { service: 'stickyNotesService', collection: 'stickynotes', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
64
64
  };
package/dist/registry.js CHANGED
@@ -41,12 +41,6 @@ exports.NODE_REGISTRY = {
41
41
  stateKey: 'voiceAgents', allStateKey: 'allVoiceAgents',
42
42
  color: '#a855f7', testable: false,
43
43
  },
44
- rssTrigger: {
45
- type: 'rssTrigger', prefix: 'rss', label: 'RSS Trigger',
46
- group: 'Sources', detailPath: '/dashboard/rss-triggers', apiPath: '/rss-triggers',
47
- stateKey: 'rssTriggers', allStateKey: 'allRssTriggers',
48
- color: '#f26522', testable: true,
49
- },
50
44
  // ── Flow Control ──
51
45
  filter: {
52
46
  type: 'filter', prefix: 'fi', label: 'Filter',
@@ -290,6 +284,14 @@ exports.NODE_REGISTRY = {
290
284
  stateKey: 'vectorStoreNodes', allStateKey: 'allVectorStoreNodes',
291
285
  color: '#06b6d4', testable: true,
292
286
  },
287
+ rssAction: {
288
+ type: 'rssAction', prefix: 'rssa', label: 'RSS Fetch',
289
+ group: 'Actions', detailPath: '/dashboard/rss-actions', apiPath: '/rss-actions',
290
+ stateKey: 'rssActions', allStateKey: 'allRssActions',
291
+ // Classic RSS feed orange (#ff9933) — distinguishes from rateLimiter /
292
+ // fileTransform / firecrawl which sit on Tailwind orange-500.
293
+ color: '#ff9933', testable: true,
294
+ },
293
295
  // ── Annotations ──
294
296
  stickyNote: {
295
297
  type: 'stickyNote', prefix: 'note', label: 'Sticky Note',
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' | 'rssTrigger' | 'filter' | 'transform' | 'schemaValidator' | 'conditional' | 'delay' | 'rateLimiter' | 'aggregator' | 'cache' | 'code' | 'ai' | 'merge' | 'approval' | 'split' | 'loop' | 'markdown' | 'fileTransform' | 'router' | 'emailAction' | 'httpAction' | 'mongoAction' | 'postgresAction' | 'notificationAction' | 'sheetsAction' | 'calendarAction' | 'docsAction' | 'driveAction' | 'firecrawlAction' | 'telegramAction' | 'whatsappAction' | 'discordAction' | 'slackAction' | 'googleContactsAction' | 'vectorStore' | 'stickyNote';
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' | 'router' | 'emailAction' | 'httpAction' | 'mongoAction' | 'postgresAction' | 'notificationAction' | 'sheetsAction' | 'calendarAction' | 'docsAction' | 'driveAction' | 'firecrawlAction' | 'telegramAction' | 'whatsappAction' | 'discordAction' | 'slackAction' | 'googleContactsAction' | 'vectorStore' | 'rssAction' | '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
@@ -18,7 +18,6 @@ exports.NODE_UI = {
18
18
  // tools so the user has somewhere to drop the first wired connection
19
19
  // before any tools are defined (rare but possible during onboarding).
20
20
  voiceAgent: { fromNodes: false, toNodes: true, isSource: true, outputHandles: ['right'], dotHandles: { output: ['right-out'] }, dynamicOutputs: true },
21
- rssTrigger: { fromNodes: false, toNodes: true, isSource: true, outputHandles: ['right'], dotHandles: { output: ['right-out'] }, special: { routerTargetLabel: 'rss' } },
22
21
  // ── Pipeline processing nodes ──
23
22
  filter: { fromNodes: true, toNodes: true, special: { loopBackAllowed: true } },
24
23
  transform: { fromNodes: true, toNodes: true, special: { loopBackAllowed: true } },
@@ -56,6 +55,7 @@ exports.NODE_UI = {
56
55
  slackAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'slack' } },
57
56
  googleContactsAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
58
57
  vectorStore: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
58
+ rssAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
59
59
  // ── Annotations ──
60
60
  stickyNote: { fromNodes: false, toNodes: false },
61
61
  };
@@ -66,7 +66,6 @@ exports.PREFIX_TO_TYPE = [
66
66
  { prefix: 'chat-', type: 'chatTrigger', canvasType: 'chatTrigger' },
67
67
  { prefix: 'svc-', type: 'serviceTrigger', canvasType: 'serviceTrigger' },
68
68
  { prefix: 'va-', type: 'voiceAgent', canvasType: 'voiceAgent' },
69
- { prefix: 'rss-', type: 'rssTrigger', canvasType: 'rssTrigger' },
70
69
  { prefix: 'ea-', type: 'emailAction', canvasType: 'emailAction' },
71
70
  { prefix: 'tg-', type: 'telegramAction', canvasType: 'telegramAction' },
72
71
  { prefix: 'wa-', type: 'whatsappAction', canvasType: 'whatsappAction' },
@@ -100,6 +99,7 @@ exports.PREFIX_TO_TYPE = [
100
99
  { prefix: 'drv-', type: 'driveAction', canvasType: 'driveAction' },
101
100
  { prefix: 'fc-', type: 'firecrawlAction', canvasType: 'firecrawlAction' },
102
101
  { prefix: 'vs-', type: 'vectorStore', canvasType: 'vectorStore' },
102
+ { prefix: 'rssa-', type: 'rssAction', canvasType: 'rssAction' },
103
103
  { prefix: 'note-', type: 'stickyNote', canvasType: 'stickyNote' },
104
104
  ];
105
105
  /** Resolve canvas node ID to { type, entityId } */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hostwebhook/node-types",
3
- "version": "1.39.0",
3
+ "version": "1.41.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",