@hostwebhook/node-types 1.33.0 → 1.35.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.
- package/dist/connections.js +4 -3
- package/dist/credentials.js +1 -0
- package/dist/dispatch.js +1 -0
- package/dist/google-contacts-operations.d.ts +16 -0
- package/dist/google-contacts-operations.js +42 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +6 -1
- package/dist/registry.js +12 -0
- package/dist/types.d.ts +1 -1
- package/dist/ui.js +2 -0
- package/package.json +1 -1
package/dist/connections.js
CHANGED
|
@@ -18,7 +18,7 @@ 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', 'vectorStore', 'loop',
|
|
21
|
+
'emailAction', 'httpAction', 'mongoAction', 'postgresAction', 'notificationAction', 'sheetsAction', 'calendarAction', 'docsAction', 'driveAction', 'firecrawlAction', 'telegramAction', 'whatsappAction', 'googleContactsAction', 'vectorStore', 'loop',
|
|
22
22
|
];
|
|
23
23
|
/** Standard processing input sources */
|
|
24
24
|
const STANDARD_INPUTS = [
|
|
@@ -26,7 +26,7 @@ const STANDARD_INPUTS = [
|
|
|
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', 'vectorStore'];
|
|
29
|
+
const CHAINABLE_ACTIONS = ['httpAction', 'mongoAction', 'postgresAction', 'sheetsAction', 'calendarAction', 'docsAction', 'driveAction', 'firecrawlAction', 'telegramAction', 'whatsappAction', 'googleContactsAction', 'vectorStore'];
|
|
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 = {
|
|
@@ -57,7 +57,7 @@ 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', 'vectorStore'], special: { hasRejectionOutputNodes: true } },
|
|
60
|
+
approval: { acceptsInputFrom: ['endpoint', 'filter', 'transform'], canOutputTo: ['endpoint', 'filter', 'transform', 'emailAction', 'httpAction', 'mongoAction', 'postgresAction', 'notificationAction', 'sheetsAction', 'calendarAction', 'docsAction', 'driveAction', 'firecrawlAction', 'telegramAction', 'whatsappAction', 'googleContactsAction', 'vectorStore'], special: { hasRejectionOutputNodes: true } },
|
|
61
61
|
loop: { acceptsInputFrom: STANDARD_INPUTS, canOutputTo: PROCESSING_OUTPUTS, special: { hasLoopBack: true } },
|
|
62
62
|
// ── Routing nodes ──
|
|
63
63
|
router: { acceptsInputFrom: ['endpoint', 'scheduledWebhook', 'filter', 'transform'], canOutputTo: PROCESSING_OUTPUTS.filter(t => t !== 'endpoint') },
|
|
@@ -74,6 +74,7 @@ exports.NODE_CONNECTIONS = {
|
|
|
74
74
|
firecrawlAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
|
|
75
75
|
telegramAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
|
|
76
76
|
whatsappAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
|
|
77
|
+
googleContactsAction: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
|
|
77
78
|
vectorStore: { acceptsInputFrom: ACTION_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
|
|
78
79
|
// ── Processing (transform-like) ──
|
|
79
80
|
markdown: { acceptsInputFrom: STANDARD_INPUTS, canOutputTo: PROCESSING_OUTPUTS },
|
package/dist/credentials.js
CHANGED
package/dist/dispatch.js
CHANGED
|
@@ -49,6 +49,7 @@ exports.NODE_DISPATCH = {
|
|
|
49
49
|
firecrawlAction: { service: 'firecrawlActionsService', collection: 'firecrawlactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
|
|
50
50
|
telegramAction: { service: 'telegramActionsService', collection: 'telegramactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
|
|
51
51
|
whatsappAction: { service: 'whatsappActionsService', collection: 'whatsappactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
|
|
52
|
+
googleContactsAction: { service: 'googleContactsActionsService', collection: 'googlecontactsactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
|
|
52
53
|
// ── Sources — start the flow themselves, not dispatched ──
|
|
53
54
|
endpoint: { service: 'endpointsService', collection: 'endpoints', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
|
|
54
55
|
scheduledWebhook: { service: 'scheduledWebhooksService', collection: 'scheduledwebhooks', hasFilters: false, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded' },
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google People API operation enum — single source of truth across the
|
|
3
|
+
* API, Dashboard, and Message Broker. Used by:
|
|
4
|
+
* - googleContactsAction entity / DTO (api): operation field + validation
|
|
5
|
+
* - dashboard OperationSection
|
|
6
|
+
* - broker hostwebhook types + tool schemas
|
|
7
|
+
*
|
|
8
|
+
* Two tiers because the action shipped V1 first (read + simple writes)
|
|
9
|
+
* and V2 second (bulk + group management). Both ship in the same package
|
|
10
|
+
* version; the api-side DTO gates which tier its accept-list includes.
|
|
11
|
+
*/
|
|
12
|
+
export declare const GOOGLE_CONTACTS_OPERATIONS_V1: readonly ["listContacts", "searchContacts", "getContact", "createContact", "updateContact", "deleteContact", "listContactGroups", "addContactToGroup", "removeContactFromGroup"];
|
|
13
|
+
export declare const GOOGLE_CONTACTS_OPERATIONS_V2: readonly ["batchCreateContacts", "batchUpdateContacts", "batchDeleteContacts", "createContactGroup", "updateContactGroup", "deleteContactGroup"];
|
|
14
|
+
export declare const GOOGLE_CONTACTS_OPERATIONS: readonly ["listContacts", "searchContacts", "getContact", "createContact", "updateContact", "deleteContact", "listContactGroups", "addContactToGroup", "removeContactFromGroup", "batchCreateContacts", "batchUpdateContacts", "batchDeleteContacts", "createContactGroup", "updateContactGroup", "deleteContactGroup"];
|
|
15
|
+
export type GoogleContactsOperation = (typeof GOOGLE_CONTACTS_OPERATIONS)[number];
|
|
16
|
+
export declare function isGoogleContactsOperation(value: unknown): value is GoogleContactsOperation;
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Google People API operation enum — single source of truth across the
|
|
4
|
+
* API, Dashboard, and Message Broker. Used by:
|
|
5
|
+
* - googleContactsAction entity / DTO (api): operation field + validation
|
|
6
|
+
* - dashboard OperationSection
|
|
7
|
+
* - broker hostwebhook types + tool schemas
|
|
8
|
+
*
|
|
9
|
+
* Two tiers because the action shipped V1 first (read + simple writes)
|
|
10
|
+
* and V2 second (bulk + group management). Both ship in the same package
|
|
11
|
+
* version; the api-side DTO gates which tier its accept-list includes.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.GOOGLE_CONTACTS_OPERATIONS = exports.GOOGLE_CONTACTS_OPERATIONS_V2 = exports.GOOGLE_CONTACTS_OPERATIONS_V1 = void 0;
|
|
15
|
+
exports.isGoogleContactsOperation = isGoogleContactsOperation;
|
|
16
|
+
exports.GOOGLE_CONTACTS_OPERATIONS_V1 = [
|
|
17
|
+
'listContacts',
|
|
18
|
+
'searchContacts',
|
|
19
|
+
'getContact',
|
|
20
|
+
'createContact',
|
|
21
|
+
'updateContact',
|
|
22
|
+
'deleteContact',
|
|
23
|
+
'listContactGroups',
|
|
24
|
+
'addContactToGroup',
|
|
25
|
+
'removeContactFromGroup',
|
|
26
|
+
];
|
|
27
|
+
exports.GOOGLE_CONTACTS_OPERATIONS_V2 = [
|
|
28
|
+
'batchCreateContacts',
|
|
29
|
+
'batchUpdateContacts',
|
|
30
|
+
'batchDeleteContacts',
|
|
31
|
+
'createContactGroup',
|
|
32
|
+
'updateContactGroup',
|
|
33
|
+
'deleteContactGroup',
|
|
34
|
+
];
|
|
35
|
+
exports.GOOGLE_CONTACTS_OPERATIONS = [
|
|
36
|
+
...exports.GOOGLE_CONTACTS_OPERATIONS_V1,
|
|
37
|
+
...exports.GOOGLE_CONTACTS_OPERATIONS_V2,
|
|
38
|
+
];
|
|
39
|
+
function isGoogleContactsOperation(value) {
|
|
40
|
+
return (typeof value === 'string' &&
|
|
41
|
+
exports.GOOGLE_CONTACTS_OPERATIONS.includes(value));
|
|
42
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -15,5 +15,7 @@ export { TELEGRAM_OPERATIONS, isTelegramOperation, } from './telegram-operations
|
|
|
15
15
|
export type { TelegramOperation } from './telegram-operations';
|
|
16
16
|
export { WHATSAPP_OPERATIONS, isWhatsAppOperation, } from './whatsapp-operations';
|
|
17
17
|
export type { WhatsAppOperation } from './whatsapp-operations';
|
|
18
|
+
export { GOOGLE_CONTACTS_OPERATIONS, GOOGLE_CONTACTS_OPERATIONS_V1, GOOGLE_CONTACTS_OPERATIONS_V2, isGoogleContactsOperation, } from './google-contacts-operations';
|
|
19
|
+
export type { GoogleContactsOperation } from './google-contacts-operations';
|
|
18
20
|
export type { CredentialTypeRegistration, CredentialType } from './credentials';
|
|
19
21
|
export { CREDENTIAL_TYPES, CREDENTIAL_TYPE_VALUES, credentialTypeValues, getCredentialType, isCredentialType, } from './credentials';
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isCredentialType = exports.getCredentialType = exports.credentialTypeValues = exports.CREDENTIAL_TYPE_VALUES = exports.CREDENTIAL_TYPES = exports.isWhatsAppOperation = exports.WHATSAPP_OPERATIONS = exports.isTelegramOperation = exports.TELEGRAM_OPERATIONS = exports.isDriveOperation = exports.DRIVE_OPERATIONS = exports.isGoogleCalendarOperation = exports.GOOGLE_CALENDAR_OPERATIONS = exports.isGmailOperation = exports.GMAIL_OPERATIONS = exports.NODE_TYPE_TO_PREFIX = exports.PREFIX_TO_NODE_TYPE = exports.NODE_STATE_KEYS = exports.NODE_COLORS = exports.NODE_DETAIL_PATHS = exports.getNodeRegistryEntry = exports.NODE_REGISTRY = exports.getNodeDispatchConfig = exports.getAllNodeCollections = exports.NODE_DISPATCH = exports.resolveNodeId = exports.PREFIX_TO_TYPE = exports.NODE_UI = exports.ALL_NODE_TYPES = exports.isNodeType = exports.isTerminal = exports.canSendToNodes = exports.canReceiveFromNodes = exports.canReceiveFrom = exports.NODE_CONNECTIONS = exports.iterableMeta = exports.singleMeta = void 0;
|
|
3
|
+
exports.isCredentialType = exports.getCredentialType = exports.credentialTypeValues = exports.CREDENTIAL_TYPE_VALUES = exports.CREDENTIAL_TYPES = exports.isGoogleContactsOperation = exports.GOOGLE_CONTACTS_OPERATIONS_V2 = exports.GOOGLE_CONTACTS_OPERATIONS_V1 = exports.GOOGLE_CONTACTS_OPERATIONS = exports.isWhatsAppOperation = exports.WHATSAPP_OPERATIONS = exports.isTelegramOperation = exports.TELEGRAM_OPERATIONS = exports.isDriveOperation = exports.DRIVE_OPERATIONS = exports.isGoogleCalendarOperation = exports.GOOGLE_CALENDAR_OPERATIONS = exports.isGmailOperation = exports.GMAIL_OPERATIONS = exports.NODE_TYPE_TO_PREFIX = exports.PREFIX_TO_NODE_TYPE = exports.NODE_STATE_KEYS = exports.NODE_COLORS = exports.NODE_DETAIL_PATHS = exports.getNodeRegistryEntry = exports.NODE_REGISTRY = exports.getNodeDispatchConfig = exports.getAllNodeCollections = exports.NODE_DISPATCH = exports.resolveNodeId = exports.PREFIX_TO_TYPE = exports.NODE_UI = exports.ALL_NODE_TYPES = exports.isNodeType = exports.isTerminal = exports.canSendToNodes = exports.canReceiveFromNodes = exports.canReceiveFrom = exports.NODE_CONNECTIONS = exports.iterableMeta = exports.singleMeta = void 0;
|
|
4
4
|
var types_1 = require("./types");
|
|
5
5
|
Object.defineProperty(exports, "singleMeta", { enumerable: true, get: function () { return types_1.singleMeta; } });
|
|
6
6
|
Object.defineProperty(exports, "iterableMeta", { enumerable: true, get: function () { return types_1.iterableMeta; } });
|
|
@@ -47,6 +47,11 @@ Object.defineProperty(exports, "isTelegramOperation", { enumerable: true, get: f
|
|
|
47
47
|
var whatsapp_operations_1 = require("./whatsapp-operations");
|
|
48
48
|
Object.defineProperty(exports, "WHATSAPP_OPERATIONS", { enumerable: true, get: function () { return whatsapp_operations_1.WHATSAPP_OPERATIONS; } });
|
|
49
49
|
Object.defineProperty(exports, "isWhatsAppOperation", { enumerable: true, get: function () { return whatsapp_operations_1.isWhatsAppOperation; } });
|
|
50
|
+
var google_contacts_operations_1 = require("./google-contacts-operations");
|
|
51
|
+
Object.defineProperty(exports, "GOOGLE_CONTACTS_OPERATIONS", { enumerable: true, get: function () { return google_contacts_operations_1.GOOGLE_CONTACTS_OPERATIONS; } });
|
|
52
|
+
Object.defineProperty(exports, "GOOGLE_CONTACTS_OPERATIONS_V1", { enumerable: true, get: function () { return google_contacts_operations_1.GOOGLE_CONTACTS_OPERATIONS_V1; } });
|
|
53
|
+
Object.defineProperty(exports, "GOOGLE_CONTACTS_OPERATIONS_V2", { enumerable: true, get: function () { return google_contacts_operations_1.GOOGLE_CONTACTS_OPERATIONS_V2; } });
|
|
54
|
+
Object.defineProperty(exports, "isGoogleContactsOperation", { enumerable: true, get: function () { return google_contacts_operations_1.isGoogleContactsOperation; } });
|
|
50
55
|
var credentials_1 = require("./credentials");
|
|
51
56
|
Object.defineProperty(exports, "CREDENTIAL_TYPES", { enumerable: true, get: function () { return credentials_1.CREDENTIAL_TYPES; } });
|
|
52
57
|
Object.defineProperty(exports, "CREDENTIAL_TYPE_VALUES", { enumerable: true, get: function () { return credentials_1.CREDENTIAL_TYPE_VALUES; } });
|
package/dist/registry.js
CHANGED
|
@@ -241,6 +241,18 @@ exports.NODE_REGISTRY = {
|
|
|
241
241
|
// fields the LLM is supposed to populate.
|
|
242
242
|
isToolOnly: (e) => e.aiEnabled === true,
|
|
243
243
|
},
|
|
244
|
+
googleContactsAction: {
|
|
245
|
+
type: 'googleContactsAction', prefix: 'gc', label: 'Google Contacts',
|
|
246
|
+
group: 'Actions', detailPath: '/dashboard/google-contacts-actions', apiPath: '/google-contacts-actions',
|
|
247
|
+
stateKey: 'googleContactsActions', allStateKey: 'allGoogleContactsActions',
|
|
248
|
+
// Google "blue" used by Google Drive / Docs (#4285F4) — same family.
|
|
249
|
+
color: '#4285F4', testable: true,
|
|
250
|
+
// AI toolkit mode mirrors emailAction / calendarAction — when
|
|
251
|
+
// aiEnabled the node expands into N MCP tools (one per People API
|
|
252
|
+
// operation) in the upstream AI Node's tool list. Hide canvas
|
|
253
|
+
// handles to keep manual + tool modes from being mixed.
|
|
254
|
+
isToolOnly: (e) => e.aiEnabled === true,
|
|
255
|
+
},
|
|
244
256
|
vectorStore: {
|
|
245
257
|
type: 'vectorStore', prefix: 'vs', label: 'Vector Store',
|
|
246
258
|
group: 'Actions', detailPath: '/dashboard/vector-store-nodes', apiPath: '/vector-store-nodes',
|
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' | 'router' | 'emailAction' | 'httpAction' | 'mongoAction' | 'postgresAction' | 'notificationAction' | 'sheetsAction' | 'calendarAction' | 'docsAction' | 'driveAction' | 'firecrawlAction' | 'telegramAction' | 'whatsappAction' | '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' | 'googleContactsAction' | 'vectorStore' | '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
|
@@ -51,6 +51,7 @@ exports.NODE_UI = {
|
|
|
51
51
|
firecrawlAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
|
|
52
52
|
telegramAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'telegram' } },
|
|
53
53
|
whatsappAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'whatsapp' } },
|
|
54
|
+
googleContactsAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
|
|
54
55
|
vectorStore: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
|
|
55
56
|
// ── Annotations ──
|
|
56
57
|
stickyNote: { fromNodes: false, toNodes: false },
|
|
@@ -65,6 +66,7 @@ exports.PREFIX_TO_TYPE = [
|
|
|
65
66
|
{ prefix: 'ea-', type: 'emailAction', canvasType: 'emailAction' },
|
|
66
67
|
{ prefix: 'tg-', type: 'telegramAction', canvasType: 'telegramAction' },
|
|
67
68
|
{ prefix: 'wa-', type: 'whatsappAction', canvasType: 'whatsappAction' },
|
|
69
|
+
{ prefix: 'gc-', type: 'googleContactsAction', canvasType: 'googleContactsAction' },
|
|
68
70
|
{ prefix: 'ha-', type: 'httpAction', canvasType: 'httpAction' },
|
|
69
71
|
{ prefix: 'ma-', type: 'mongoAction', canvasType: 'mongoAction' },
|
|
70
72
|
{ prefix: 'pg-', type: 'postgresAction', canvasType: 'postgresAction' },
|
package/package.json
CHANGED