@hostwebhook/node-types 1.83.0 → 1.85.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.
@@ -53,6 +53,26 @@ export const CREDENTIAL_TYPES = [
53
53
  /* [2026-09-13] Apify no tiene OAuth para terceros: es un API token, como
54
54
  Firecrawl. Lo lee el nodo `apifyAction`. */
55
55
  { type: 'apify' },
56
+ /* [2026-09-15] El OAuth de HostWebhook contra Calendly. Se anota ANTES de
57
+ escribir el servicio, por lo que cuenta el bloque de Mailchimp de abajo:
58
+ sin esta línea el `create` de la credencial muere en runtime con un enum
59
+ de Mongoose que TypeScript no ve. Lleva `_oauth2` como Mailchimp y
60
+ Shopify. Guarda, además de los tokens, el `owner` y la `organization`
61
+ (URIs) que el token endpoint devuelve: cada lista y cada webhook los
62
+ necesita. El refresh token es de UN solo uso: se sobreescribe en el
63
+ mismo write que lo gasta. */
64
+ { type: 'calendly_oauth2' },
65
+ /* El personal access token de Calendly (Integrations → API & webhooks),
66
+ para quien no quiera OAuth. Va aparte de `calendly_oauth2` por lo mismo
67
+ que `discord_bot` va aparte de `discord_oauth`: lo que guardan es
68
+ distinto (aquí un secreto suyo que no caduca y ninguna URI hasta que se
69
+ valida con `GET /users/me`). */
70
+ { type: 'calendly' },
71
+ /* El OAuth de HostWebhook contra Airtable. PKCE obligatorio, secret por
72
+ Basic auth, access token de 60 minutos y refresh de 60 días que rota
73
+ en cada uso. El usuario elige en la pantalla de Airtable QUÉ bases
74
+ concede; los desplegables sólo listan ésas. */
75
+ { type: 'airtable_oauth2' },
56
76
  { type: 'http_auth' },
57
77
  { type: 'aws_s3' },
58
78
  /* [2026-09-14] `memory_contextwindow` se retiró: el backend de memoria
@@ -58,6 +58,8 @@ export const NODE_DISPATCH = {
58
58
  jiraAction: { service: 'jiraActionsService', collection: 'jiraactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded', downstreamPayload: 'result' },
59
59
  bucketAction: { service: 'bucketActionsService', collection: 'bucketactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded', downstreamPayload: 'result' },
60
60
  apifyAction: { service: 'apifyActionsService', collection: 'apifyactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded', downstreamPayload: 'result' },
61
+ calendlyAction: { service: 'calendlyActionsService', collection: 'calendlyactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded', downstreamPayload: 'result' },
62
+ airtableAction: { service: 'airtableActionsService', collection: 'airtableactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded', downstreamPayload: 'result' },
61
63
  slackAction: { service: 'slackActionsService', collection: 'slackactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded', downstreamPayload: 'result' },
62
64
  googleContactsAction: { service: 'googleContactsActionsService', collection: 'googlecontactsactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded', downstreamPayload: 'result' },
63
65
  googleAnalyticsAction: { service: 'googleAnalyticsActionsService', collection: 'googleanalyticsactions', hasFilters: true, outputFields: ['outputNodes'], customDispatch: true, pipelineDispatch: 'excluded', downstreamPayload: 'result' },
@@ -40,6 +40,10 @@ export { BUCKET_OPERATIONS, BUCKET_OPERATION_SPECS, BUCKET_ITERABLE_OPERATIONS,
40
40
  export type { BucketOperation, BucketParamType, BucketParamSpec, BucketOperationSpec, } from './bucket-operations.js';
41
41
  export { APIFY_OPERATIONS, APIFY_OPERATION_SPECS, APIFY_ITERABLE_OPERATIONS, isApifyOperation, } from './apify-operations.js';
42
42
  export type { ApifyOperation, ApifyParamType, ApifyParamSpec, ApifyOperationSpec, } from './apify-operations.js';
43
+ export { CALENDLY_OPERATIONS, CALENDLY_OPERATION_SPECS, CALENDLY_ITERABLE_OPERATIONS, isCalendlyOperation, } from './calendly-operations.js';
44
+ export type { CalendlyOperation, CalendlyParamType, CalendlyParamSpec, CalendlyOperationSpec, } from './calendly-operations.js';
45
+ export { AIRTABLE_OPERATIONS, AIRTABLE_OPERATION_SPECS, AIRTABLE_ITERABLE_OPERATIONS, isAirtableOperation, } from './airtable-operations.js';
46
+ export type { AirtableOperation, AirtableParamType, AirtableParamSpec, AirtableOperationSpec, } from './airtable-operations.js';
43
47
  export { SLACK_OPERATIONS, SLACK_OPERATION_SPECS, SLACK_CAPACIDADES_POR_CREDENCIAL, operacionesDeSlackPara, slackPuedeEjecutar, camposDeSlackNoDisponibles, isSlackOperation, } from './slack-operations.js';
44
48
  export type { SlackOperation, SlackParamSpec, SlackOperationSpec, } from './slack-operations.js';
45
49
  export { SLACK_TOOLKIT_SPECS, SLACK_TOOLKIT_BY_TOOL_NAME, herramientasDeSlackPara, } from './slack-toolkit.js';
package/dist/esm/index.js CHANGED
@@ -36,6 +36,8 @@ export { GITHUB_OPERATIONS, GITHUB_OPERATION_SPECS, GITHUB_DROPDOWN_OPERATIONS,
36
36
  export { JIRA_OPERATIONS, JIRA_OPERATION_SPECS, JIRA_DROPDOWN_OPERATIONS, JIRA_ITERABLE_OPERATIONS, isJiraOperation, } from './jira-operations.js';
37
37
  export { BUCKET_OPERATIONS, BUCKET_OPERATION_SPECS, BUCKET_ITERABLE_OPERATIONS, isBucketOperation, } from './bucket-operations.js';
38
38
  export { APIFY_OPERATIONS, APIFY_OPERATION_SPECS, APIFY_ITERABLE_OPERATIONS, isApifyOperation, } from './apify-operations.js';
39
+ export { CALENDLY_OPERATIONS, CALENDLY_OPERATION_SPECS, CALENDLY_ITERABLE_OPERATIONS, isCalendlyOperation, } from './calendly-operations.js';
40
+ export { AIRTABLE_OPERATIONS, AIRTABLE_OPERATION_SPECS, AIRTABLE_ITERABLE_OPERATIONS, isAirtableOperation, } from './airtable-operations.js';
39
41
  export { SLACK_OPERATIONS, SLACK_OPERATION_SPECS, SLACK_CAPACIDADES_POR_CREDENCIAL, operacionesDeSlackPara, slackPuedeEjecutar, camposDeSlackNoDisponibles, isSlackOperation, } from './slack-operations.js';
40
42
  /* Misma pareja que en Discord: `SlackOperationSpec` es el formulario,
41
43
  `SlackToolkitSpec` es la herramienta que ve el LLM. */
@@ -645,6 +645,41 @@ export const NODE_REGISTRY = {
645
645
  testable: true,
646
646
  /* Sin `isToolOnly`: no trae modo toolkit de IA todavía. */
647
647
  },
648
+ calendlyAction: {
649
+ type: "calendlyAction",
650
+ prefix: "cly",
651
+ label: "Calendly",
652
+ group: "Actions",
653
+ detailPath: "/dashboard/calendly-actions",
654
+ apiPath: "/calendly-actions",
655
+ stateKey: "calendlyActions",
656
+ allStateKey: "allCalendlyActions",
657
+ /* [2026-09-15] El azul de la marca de Calendly (`#006BFF`). Es más
658
+ saturado que el de HTTP (`#3b82f6`) y más claro que el de Jira
659
+ (`#0052CC`); en el minimapa se distingue de los dos. Como dicen los
660
+ vecinos: la decisión se cierra mirando el minimapa. */
661
+ color: "#006BFF",
662
+ testable: true,
663
+ /* Sin `isToolOnly`: no trae modo toolkit de IA todavía, como Apify. */
664
+ },
665
+ airtableAction: {
666
+ type: "airtableAction",
667
+ prefix: "air",
668
+ label: "Airtable",
669
+ group: "Actions",
670
+ detailPath: "/dashboard/airtable-actions",
671
+ apiPath: "/airtable-actions",
672
+ stateKey: "airtableActions",
673
+ allStateKey: "allAirtableActions",
674
+ /* [2026-09-15] El amarillo de Airtable (`#FCB400`) es el color del
675
+ logo, pero sobre el lienzo claro se pierde y se confunde con Filter y
676
+ Transform (`#facc15`, `#fbbf24`). Oscurecido hasta que aguanta. Queda
677
+ cerca del mostaza de Mailchimp (`#c9a227`), y ésa es la comparación que
678
+ hay que hacer en el minimapa. */
679
+ color: "#c58a00",
680
+ testable: true,
681
+ /* Sin `isToolOnly`: no trae modo toolkit de IA todavía, como Apify. */
682
+ },
648
683
  telegramAction: {
649
684
  type: "telegramAction",
650
685
  prefix: "tg",
@@ -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' | 'gmailAction' | 'httpAction' | 'mongoAction' | 'postgresAction' | 'notificationAction' | 'sheetsAction' | 'calendarAction' | 'docsAction' | 'driveAction' | 'firecrawlAction' | 'telegramAction' | 'whatsappAction' | 'discordAction' | 'slackAction' | 'googleContactsAction' | 'googleAnalyticsAction' | 'notionAction' | 'vectorStore' | 'rssAction' | 'socialMediaAction' | 'mailchimpAction' | 'shopifyAction' | 'githubAction' | 'jiraAction' | 'bucketAction' | 'apifyAction' | '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' | 'googleAnalyticsAction' | 'notionAction' | 'vectorStore' | 'rssAction' | 'socialMediaAction' | 'mailchimpAction' | 'shopifyAction' | 'githubAction' | 'jiraAction' | 'bucketAction' | 'apifyAction' | 'calendlyAction' | 'airtableAction' | '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/esm/ui.js CHANGED
@@ -95,6 +95,8 @@ export const NODE_UI = {
95
95
  jiraAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'jira' } },
96
96
  bucketAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'bucket' } },
97
97
  apifyAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'apify' } },
98
+ calendlyAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'calendly' } },
99
+ airtableAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'airtable' } },
98
100
  slackAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'slack' } },
99
101
  googleContactsAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
100
102
  googleAnalyticsAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
@@ -124,6 +126,8 @@ export const PREFIX_TO_TYPE = [
124
126
  { prefix: 'jr-', type: 'jiraAction', canvasType: 'jiraAction' },
125
127
  { prefix: 'bkt-', type: 'bucketAction', canvasType: 'bucketAction' },
126
128
  { prefix: 'apify-', type: 'apifyAction', canvasType: 'apifyAction' },
129
+ { prefix: 'cly-', type: 'calendlyAction', canvasType: 'calendlyAction' },
130
+ { prefix: 'air-', type: 'airtableAction', canvasType: 'airtableAction' },
127
131
  { prefix: 'gc-', type: 'googleContactsAction', canvasType: 'googleContactsAction' },
128
132
  { prefix: 'gaa-', type: 'googleAnalyticsAction', canvasType: 'googleAnalyticsAction' },
129
133
  { prefix: 'ntn-', type: 'notionAction', canvasType: 'notionAction' },
package/dist/index.d.ts CHANGED
@@ -40,6 +40,10 @@ export { BUCKET_OPERATIONS, BUCKET_OPERATION_SPECS, BUCKET_ITERABLE_OPERATIONS,
40
40
  export type { BucketOperation, BucketParamType, BucketParamSpec, BucketOperationSpec, } from './bucket-operations.js';
41
41
  export { APIFY_OPERATIONS, APIFY_OPERATION_SPECS, APIFY_ITERABLE_OPERATIONS, isApifyOperation, } from './apify-operations.js';
42
42
  export type { ApifyOperation, ApifyParamType, ApifyParamSpec, ApifyOperationSpec, } from './apify-operations.js';
43
+ export { CALENDLY_OPERATIONS, CALENDLY_OPERATION_SPECS, CALENDLY_ITERABLE_OPERATIONS, isCalendlyOperation, } from './calendly-operations.js';
44
+ export type { CalendlyOperation, CalendlyParamType, CalendlyParamSpec, CalendlyOperationSpec, } from './calendly-operations.js';
45
+ export { AIRTABLE_OPERATIONS, AIRTABLE_OPERATION_SPECS, AIRTABLE_ITERABLE_OPERATIONS, isAirtableOperation, } from './airtable-operations.js';
46
+ export type { AirtableOperation, AirtableParamType, AirtableParamSpec, AirtableOperationSpec, } from './airtable-operations.js';
43
47
  export { SLACK_OPERATIONS, SLACK_OPERATION_SPECS, SLACK_CAPACIDADES_POR_CREDENCIAL, operacionesDeSlackPara, slackPuedeEjecutar, camposDeSlackNoDisponibles, isSlackOperation, } from './slack-operations.js';
44
48
  export type { SlackOperation, SlackParamSpec, SlackOperationSpec, } from './slack-operations.js';
45
49
  export { SLACK_TOOLKIT_SPECS, SLACK_TOOLKIT_BY_TOOL_NAME, herramientasDeSlackPara, } from './slack-toolkit.js';
package/dist/index.js CHANGED
@@ -2,8 +2,8 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DRIVE_OPERATIONS = exports.GOOGLE_CALENDAR_TOOLKIT_BY_TOOL_NAME = exports.GOOGLE_CALENDAR_TOOLKIT_SPECS = exports.isGoogleCalendarOperation = exports.GOOGLE_CALENDAR_OPERATION_SPECS = exports.GOOGLE_CALENDAR_OPERATIONS = exports.isGmailOperation = exports.resolveGmailSendFields = exports.GMAIL_SEND_LEGACY_FIELDS = exports.NATIVE_EMAIL_TOOLKIT_BY_TOOL_NAME = exports.GMAIL_TOOLKIT_BY_TOOL_NAME = exports.NATIVE_EMAIL_TOOLKIT_SPECS = exports.GMAIL_SEND_AND_WAIT_TOOL_SPEC = exports.GMAIL_ALL_TOOLKIT_SPECS = exports.GMAIL_TOOLKIT_SPECS = exports.GMAIL_TOOLKIT_OPERATIONS = exports.GMAIL_DROPDOWN_OPERATIONS = exports.GMAIL_OPERATION_GROUPS = exports.GMAIL_OPERATION_SPECS = exports.GMAIL_OPERATIONS = exports.versionCatalogErrors = exports.fieldsLost = exports.fieldsLostBetween = exports.currentVersion = exports.versionSpec = exports.versionsOf = exports.isVersioned = 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.pasaLoQueRecibe = 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
  exports.BUCKET_ITERABLE_OPERATIONS = exports.BUCKET_OPERATION_SPECS = exports.BUCKET_OPERATIONS = exports.isJiraOperation = exports.JIRA_ITERABLE_OPERATIONS = exports.JIRA_DROPDOWN_OPERATIONS = exports.JIRA_OPERATION_SPECS = exports.JIRA_OPERATIONS = exports.isGithubOperation = exports.GITHUB_ITERABLE_OPERATIONS = exports.GITHUB_DROPDOWN_OPERATIONS = exports.GITHUB_OPERATION_SPECS = exports.GITHUB_OPERATIONS = exports.scopesQueFaltanEnShopify = exports.isShopifyOperation = exports.SHOPIFY_PRODUCT_STATUSES = exports.SHOPIFY_CANCEL_REASONS = exports.SHOPIFY_SEARCHABLE_RESOURCES = exports.SHOPIFY_TAGGABLE_RESOURCES = exports.SHOPIFY_OPERATION_SCOPES = exports.SHOPIFY_OPERATION_SPECS = exports.SHOPIFY_OPERATIONS = exports.isMailchimpOperation = exports.MAILCHIMP_CONTACT_STATUSES = exports.MAILCHIMP_OPERATION_SPECS = exports.MAILCHIMP_OPERATIONS = exports.herramientasDeDiscordPara = exports.DISCORD_TOOLKIT_BY_TOOL_NAME = exports.DISCORD_TOOLKIT_SPECS = exports.isDiscordOperation = exports.camposDeDiscordNoDisponibles = exports.discordPuedeEjecutar = exports.operacionesDeDiscordPara = exports.DISCORD_CAPACIDADES_POR_CREDENCIAL = exports.DISCORD_OPERATION_SPECS = exports.DISCORD_OPERATIONS = exports.camposNoDisponiblesPara = exports.puedeEjecutar = exports.operacionesPara = exports.isWhatsAppOperation = exports.WHATSAPP_OPERATIONS = exports.TELEGRAM_TOOLKIT_BY_TOOL_NAME = exports.TELEGRAM_TOOLKIT_SPECS = exports.isTelegramOperation = exports.TELEGRAM_OPERATION_SPECS = exports.TELEGRAM_OPERATIONS = exports.DRIVE_TOOLKIT_BY_TOOL_NAME = exports.DRIVE_TOOLKIT_SPECS = exports.isDriveOperation = exports.DRIVE_OPERATION_SPECS = void 0;
5
- exports.LLM_PROVIDERS = exports.DOCS_TOOLKIT_DEFAULTABLE = exports.DOCS_TOOLKIT_BY_TOOL_NAME = exports.DOCS_TOOLKIT_SPECS = exports.isDocsOperation = exports.DOCS_OPERATION_SPECS = exports.DOCS_OPERATIONS = exports.isMongoOperation = exports.MONGO_OPERATION_SPECS = exports.MONGO_OPERATIONS = exports.isPostgresOperation = exports.POSTGRES_OPERATION_SPECS = exports.POSTGRES_MODES = exports.POSTGRES_OPERATIONS = exports.isNotionOperation = exports.NOTION_DROPDOWN_OPERATIONS = exports.NOTION_OPERATION_SPECS = exports.NOTION_OPERATIONS = exports.isGoogleAnalyticsOperation = exports.GOOGLE_ANALYTICS_DROPDOWN_OPERATIONS = exports.GOOGLE_ANALYTICS_OPERATION_SPECS = exports.GOOGLE_ANALYTICS_OPERATIONS = exports.isGoogleContactsOperation = exports.GOOGLE_CONTACTS_DEFAULT_PERSON_FIELDS = exports.GOOGLE_CONTACTS_OPERATION_GROUPS = exports.GOOGLE_CONTACTS_OPERATION_SPECS = exports.GOOGLE_CONTACTS_OPERATIONS_V2 = exports.GOOGLE_CONTACTS_OPERATIONS_V1 = exports.GOOGLE_CONTACTS_OPERATIONS = exports.SHEETS_TOOLKIT_DEFAULTABLE = exports.SHEETS_TOOLKIT_BY_TOOL_NAME = exports.SHEETS_TOOLKIT_SPECS = exports.isSheetsOperation = exports.SHEETS_OPERATION_SPECS = exports.SHEETS_OPERATIONS = exports.herramientasDeSlackPara = exports.SLACK_TOOLKIT_BY_TOOL_NAME = exports.SLACK_TOOLKIT_SPECS = exports.isSlackOperation = exports.camposDeSlackNoDisponibles = exports.slackPuedeEjecutar = exports.operacionesDeSlackPara = exports.SLACK_CAPACIDADES_POR_CREDENCIAL = exports.SLACK_OPERATION_SPECS = exports.SLACK_OPERATIONS = exports.isApifyOperation = exports.APIFY_ITERABLE_OPERATIONS = exports.APIFY_OPERATION_SPECS = exports.APIFY_OPERATIONS = exports.isBucketOperation = void 0;
6
- exports.armarRespuestaDelSync = exports.RESPUESTA_DEL_SYNC_POR_DEFECTO = exports.TOPE_DE_ESPERA_DEL_SYNC = exports.TOPES_DE_ESTADO = exports.SOBRES_DE_RESPUESTA = exports.MODOS_DE_PAYLOAD = exports.NIVELES_DE_DETALLE = exports.RESULTADOS_DEL_VALIDADOR = exports.contestaEnSync = exports.NODOS_QUE_CONTESTAN_EN_SYNC = exports.isCredentialType = exports.getCredentialType = exports.credentialTypeValues = exports.CREDENTIAL_TYPE_VALUES = exports.CREDENTIAL_TYPES = exports.ventanaDeContextoDeOpenRouter = exports.opcionesDeModelosDeOpenRouter = exports.URL_DE_MODELOS_DE_OPENROUTER = exports.getModelLabel = exports.getDefaultModel = exports.getModelsFor = exports.MODEL_CONTEXT_WINDOWS = exports.LLM_MODELS = void 0;
5
+ exports.MONGO_OPERATION_SPECS = exports.MONGO_OPERATIONS = exports.isPostgresOperation = exports.POSTGRES_OPERATION_SPECS = exports.POSTGRES_MODES = exports.POSTGRES_OPERATIONS = exports.isNotionOperation = exports.NOTION_DROPDOWN_OPERATIONS = exports.NOTION_OPERATION_SPECS = exports.NOTION_OPERATIONS = exports.isGoogleAnalyticsOperation = exports.GOOGLE_ANALYTICS_DROPDOWN_OPERATIONS = exports.GOOGLE_ANALYTICS_OPERATION_SPECS = exports.GOOGLE_ANALYTICS_OPERATIONS = exports.isGoogleContactsOperation = exports.GOOGLE_CONTACTS_DEFAULT_PERSON_FIELDS = exports.GOOGLE_CONTACTS_OPERATION_GROUPS = exports.GOOGLE_CONTACTS_OPERATION_SPECS = exports.GOOGLE_CONTACTS_OPERATIONS_V2 = exports.GOOGLE_CONTACTS_OPERATIONS_V1 = exports.GOOGLE_CONTACTS_OPERATIONS = exports.SHEETS_TOOLKIT_DEFAULTABLE = exports.SHEETS_TOOLKIT_BY_TOOL_NAME = exports.SHEETS_TOOLKIT_SPECS = exports.isSheetsOperation = exports.SHEETS_OPERATION_SPECS = exports.SHEETS_OPERATIONS = exports.herramientasDeSlackPara = exports.SLACK_TOOLKIT_BY_TOOL_NAME = exports.SLACK_TOOLKIT_SPECS = exports.isSlackOperation = exports.camposDeSlackNoDisponibles = exports.slackPuedeEjecutar = exports.operacionesDeSlackPara = exports.SLACK_CAPACIDADES_POR_CREDENCIAL = exports.SLACK_OPERATION_SPECS = exports.SLACK_OPERATIONS = exports.isAirtableOperation = exports.AIRTABLE_ITERABLE_OPERATIONS = exports.AIRTABLE_OPERATION_SPECS = exports.AIRTABLE_OPERATIONS = exports.isCalendlyOperation = exports.CALENDLY_ITERABLE_OPERATIONS = exports.CALENDLY_OPERATION_SPECS = exports.CALENDLY_OPERATIONS = exports.isApifyOperation = exports.APIFY_ITERABLE_OPERATIONS = exports.APIFY_OPERATION_SPECS = exports.APIFY_OPERATIONS = exports.isBucketOperation = void 0;
6
+ exports.armarRespuestaDelSync = exports.RESPUESTA_DEL_SYNC_POR_DEFECTO = exports.TOPE_DE_ESPERA_DEL_SYNC = exports.TOPES_DE_ESTADO = exports.SOBRES_DE_RESPUESTA = exports.MODOS_DE_PAYLOAD = exports.NIVELES_DE_DETALLE = exports.RESULTADOS_DEL_VALIDADOR = exports.contestaEnSync = exports.NODOS_QUE_CONTESTAN_EN_SYNC = exports.isCredentialType = exports.getCredentialType = exports.credentialTypeValues = exports.CREDENTIAL_TYPE_VALUES = exports.CREDENTIAL_TYPES = exports.ventanaDeContextoDeOpenRouter = exports.opcionesDeModelosDeOpenRouter = exports.URL_DE_MODELOS_DE_OPENROUTER = exports.getModelLabel = exports.getDefaultModel = exports.getModelsFor = exports.MODEL_CONTEXT_WINDOWS = exports.LLM_MODELS = exports.LLM_PROVIDERS = exports.DOCS_TOOLKIT_DEFAULTABLE = exports.DOCS_TOOLKIT_BY_TOOL_NAME = exports.DOCS_TOOLKIT_SPECS = exports.isDocsOperation = exports.DOCS_OPERATION_SPECS = exports.DOCS_OPERATIONS = exports.isMongoOperation = void 0;
7
7
  var types_js_1 = require("./types.js");
8
8
  Object.defineProperty(exports, "singleMeta", { enumerable: true, get: function () { return types_js_1.singleMeta; } });
9
9
  Object.defineProperty(exports, "iterableMeta", { enumerable: true, get: function () { return types_js_1.iterableMeta; } });
@@ -147,6 +147,16 @@ Object.defineProperty(exports, "APIFY_OPERATIONS", { enumerable: true, get: func
147
147
  Object.defineProperty(exports, "APIFY_OPERATION_SPECS", { enumerable: true, get: function () { return apify_operations_js_1.APIFY_OPERATION_SPECS; } });
148
148
  Object.defineProperty(exports, "APIFY_ITERABLE_OPERATIONS", { enumerable: true, get: function () { return apify_operations_js_1.APIFY_ITERABLE_OPERATIONS; } });
149
149
  Object.defineProperty(exports, "isApifyOperation", { enumerable: true, get: function () { return apify_operations_js_1.isApifyOperation; } });
150
+ var calendly_operations_js_1 = require("./calendly-operations.js");
151
+ Object.defineProperty(exports, "CALENDLY_OPERATIONS", { enumerable: true, get: function () { return calendly_operations_js_1.CALENDLY_OPERATIONS; } });
152
+ Object.defineProperty(exports, "CALENDLY_OPERATION_SPECS", { enumerable: true, get: function () { return calendly_operations_js_1.CALENDLY_OPERATION_SPECS; } });
153
+ Object.defineProperty(exports, "CALENDLY_ITERABLE_OPERATIONS", { enumerable: true, get: function () { return calendly_operations_js_1.CALENDLY_ITERABLE_OPERATIONS; } });
154
+ Object.defineProperty(exports, "isCalendlyOperation", { enumerable: true, get: function () { return calendly_operations_js_1.isCalendlyOperation; } });
155
+ var airtable_operations_js_1 = require("./airtable-operations.js");
156
+ Object.defineProperty(exports, "AIRTABLE_OPERATIONS", { enumerable: true, get: function () { return airtable_operations_js_1.AIRTABLE_OPERATIONS; } });
157
+ Object.defineProperty(exports, "AIRTABLE_OPERATION_SPECS", { enumerable: true, get: function () { return airtable_operations_js_1.AIRTABLE_OPERATION_SPECS; } });
158
+ Object.defineProperty(exports, "AIRTABLE_ITERABLE_OPERATIONS", { enumerable: true, get: function () { return airtable_operations_js_1.AIRTABLE_ITERABLE_OPERATIONS; } });
159
+ Object.defineProperty(exports, "isAirtableOperation", { enumerable: true, get: function () { return airtable_operations_js_1.isAirtableOperation; } });
150
160
  var slack_operations_js_1 = require("./slack-operations.js");
151
161
  Object.defineProperty(exports, "SLACK_OPERATIONS", { enumerable: true, get: function () { return slack_operations_js_1.SLACK_OPERATIONS; } });
152
162
  Object.defineProperty(exports, "SLACK_OPERATION_SPECS", { enumerable: true, get: function () { return slack_operations_js_1.SLACK_OPERATION_SPECS; } });
package/dist/registry.js CHANGED
@@ -656,6 +656,41 @@ exports.NODE_REGISTRY = {
656
656
  testable: true,
657
657
  /* Sin `isToolOnly`: no trae modo toolkit de IA todavía. */
658
658
  },
659
+ calendlyAction: {
660
+ type: "calendlyAction",
661
+ prefix: "cly",
662
+ label: "Calendly",
663
+ group: "Actions",
664
+ detailPath: "/dashboard/calendly-actions",
665
+ apiPath: "/calendly-actions",
666
+ stateKey: "calendlyActions",
667
+ allStateKey: "allCalendlyActions",
668
+ /* [2026-09-15] El azul de la marca de Calendly (`#006BFF`). Es más
669
+ saturado que el de HTTP (`#3b82f6`) y más claro que el de Jira
670
+ (`#0052CC`); en el minimapa se distingue de los dos. Como dicen los
671
+ vecinos: la decisión se cierra mirando el minimapa. */
672
+ color: "#006BFF",
673
+ testable: true,
674
+ /* Sin `isToolOnly`: no trae modo toolkit de IA todavía, como Apify. */
675
+ },
676
+ airtableAction: {
677
+ type: "airtableAction",
678
+ prefix: "air",
679
+ label: "Airtable",
680
+ group: "Actions",
681
+ detailPath: "/dashboard/airtable-actions",
682
+ apiPath: "/airtable-actions",
683
+ stateKey: "airtableActions",
684
+ allStateKey: "allAirtableActions",
685
+ /* [2026-09-15] El amarillo de Airtable (`#FCB400`) es el color del
686
+ logo, pero sobre el lienzo claro se pierde y se confunde con Filter y
687
+ Transform (`#facc15`, `#fbbf24`). Oscurecido hasta que aguanta. Queda
688
+ cerca del mostaza de Mailchimp (`#c9a227`), y ésa es la comparación que
689
+ hay que hacer en el minimapa. */
690
+ color: "#c58a00",
691
+ testable: true,
692
+ /* Sin `isToolOnly`: no trae modo toolkit de IA todavía, como Apify. */
693
+ },
659
694
  telegramAction: {
660
695
  type: "telegramAction",
661
696
  prefix: "tg",
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' | 'gmailAction' | 'httpAction' | 'mongoAction' | 'postgresAction' | 'notificationAction' | 'sheetsAction' | 'calendarAction' | 'docsAction' | 'driveAction' | 'firecrawlAction' | 'telegramAction' | 'whatsappAction' | 'discordAction' | 'slackAction' | 'googleContactsAction' | 'googleAnalyticsAction' | 'notionAction' | 'vectorStore' | 'rssAction' | 'socialMediaAction' | 'mailchimpAction' | 'shopifyAction' | 'githubAction' | 'jiraAction' | 'bucketAction' | 'apifyAction' | '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' | 'googleAnalyticsAction' | 'notionAction' | 'vectorStore' | 'rssAction' | 'socialMediaAction' | 'mailchimpAction' | 'shopifyAction' | 'githubAction' | 'jiraAction' | 'bucketAction' | 'apifyAction' | 'calendlyAction' | 'airtableAction' | '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
@@ -99,6 +99,8 @@ exports.NODE_UI = {
99
99
  jiraAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'jira' } },
100
100
  bucketAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'bucket' } },
101
101
  apifyAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'apify' } },
102
+ calendlyAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'calendly' } },
103
+ airtableAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'airtable' } },
102
104
  slackAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'slack' } },
103
105
  googleContactsAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
104
106
  googleAnalyticsAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
@@ -128,6 +130,8 @@ exports.PREFIX_TO_TYPE = [
128
130
  { prefix: 'jr-', type: 'jiraAction', canvasType: 'jiraAction' },
129
131
  { prefix: 'bkt-', type: 'bucketAction', canvasType: 'bucketAction' },
130
132
  { prefix: 'apify-', type: 'apifyAction', canvasType: 'apifyAction' },
133
+ { prefix: 'cly-', type: 'calendlyAction', canvasType: 'calendlyAction' },
134
+ { prefix: 'air-', type: 'airtableAction', canvasType: 'airtableAction' },
131
135
  { prefix: 'gc-', type: 'googleContactsAction', canvasType: 'googleContactsAction' },
132
136
  { prefix: 'gaa-', type: 'googleAnalyticsAction', canvasType: 'googleAnalyticsAction' },
133
137
  { prefix: 'ntn-', type: 'notionAction', canvasType: 'notionAction' },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hostwebhook/node-types",
3
- "version": "1.83.0",
3
+ "version": "1.85.0",
4
4
  "description": "Shared node type definitions, connection rules, and dispatch config for HostWebhook",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/esm/index.js",