@hostwebhook/node-types 1.82.0 → 1.84.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/airtable-operations.d.ts +90 -0
- package/dist/airtable-operations.js +274 -0
- package/dist/calendly-operations.d.ts +76 -0
- package/dist/calendly-operations.js +289 -0
- package/dist/connections.js +2 -0
- package/dist/credentials.d.ts +6 -0
- package/dist/credentials.js +20 -0
- package/dist/dispatch.js +2 -0
- package/dist/esm/airtable-operations.d.ts +90 -0
- package/dist/esm/airtable-operations.js +270 -0
- package/dist/esm/calendly-operations.d.ts +76 -0
- package/dist/esm/calendly-operations.js +285 -0
- package/dist/esm/connections.js +2 -0
- package/dist/esm/credentials.d.ts +6 -0
- package/dist/esm/credentials.js +20 -0
- package/dist/esm/dispatch.js +2 -0
- package/dist/esm/gmail-operations.d.ts +12 -0
- package/dist/esm/gmail-operations.js +29 -7
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/registry.js +35 -0
- package/dist/esm/types.d.ts +1 -1
- package/dist/esm/ui.js +4 -0
- package/dist/gmail-operations.d.ts +12 -0
- package/dist/gmail-operations.js +29 -7
- package/dist/index.d.ts +4 -0
- package/dist/index.js +12 -2
- package/dist/registry.js +35 -0
- package/dist/types.d.ts +1 -1
- package/dist/ui.js +4 -0
- package/package.json +1 -1
package/dist/esm/dispatch.js
CHANGED
|
@@ -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' },
|
|
@@ -80,6 +80,12 @@ export interface GmailParamSpec {
|
|
|
80
80
|
value: string;
|
|
81
81
|
label: string;
|
|
82
82
|
}>;
|
|
83
|
+
/**
|
|
84
|
+
* Se pinta en la pestaña «Advanced» y no en «Config» [2026-09-14]. Igual
|
|
85
|
+
* que Drive, GitHub o Bucket. Lo que va ahí: las cabeceras del hilo
|
|
86
|
+
* (threadId, inReplyTo, references), CC/BCC, y los adjuntos.
|
|
87
|
+
*/
|
|
88
|
+
advanced?: boolean;
|
|
83
89
|
}
|
|
84
90
|
export interface GmailOperationSpec {
|
|
85
91
|
/** Etiqueta del desplegable y de la página. */
|
|
@@ -108,6 +114,12 @@ export interface GmailOperationSpec {
|
|
|
108
114
|
* renderizador se invocaba tras `operation !== "send"`— y la ruta determinista no
|
|
109
115
|
* las sabe mandar: `emailSender.send` recibe to/subject/html y nada más. Darles
|
|
110
116
|
* soporte es una función nueva, no una mudanza.
|
|
117
|
+
*
|
|
118
|
+
* `attachments` [2026-09-14]: las cuatro operaciones que arman un mensaje
|
|
119
|
+
* (send, sendAndWaitForResponse, createDraft, replyToThread) adjuntan lo que
|
|
120
|
+
* el flujo ya tiene. Es una RUTA del payload, como el «File from payload» de
|
|
121
|
+
* Jira: la api saca las referencias `_file`, las resuelve por el registro con
|
|
122
|
+
* el `orgId` y arma el `multipart/mixed`. No hay subida a mano. Va en Advanced.
|
|
111
123
|
*/
|
|
112
124
|
export declare const GMAIL_OPERATION_SPECS: Record<GmailOperation, GmailOperationSpec>;
|
|
113
125
|
export declare const GMAIL_DROPDOWN_OPERATIONS: readonly GmailOperation[];
|
|
@@ -74,6 +74,12 @@ export const GMAIL_OPERATION_GROUPS = ['Messages', 'Drafts', 'Labels', 'Threads'
|
|
|
74
74
|
* renderizador se invocaba tras `operation !== "send"`— y la ruta determinista no
|
|
75
75
|
* las sabe mandar: `emailSender.send` recibe to/subject/html y nada más. Darles
|
|
76
76
|
* soporte es una función nueva, no una mudanza.
|
|
77
|
+
*
|
|
78
|
+
* `attachments` [2026-09-14]: las cuatro operaciones que arman un mensaje
|
|
79
|
+
* (send, sendAndWaitForResponse, createDraft, replyToThread) adjuntan lo que
|
|
80
|
+
* el flujo ya tiene. Es una RUTA del payload, como el «File from payload» de
|
|
81
|
+
* Jira: la api saca las referencias `_file`, las resuelve por el registro con
|
|
82
|
+
* el `orgId` y arma el `multipart/mixed`. No hay subida a mano. Va en Advanced.
|
|
77
83
|
*/
|
|
78
84
|
export const GMAIL_OPERATION_SPECS = {
|
|
79
85
|
send: {
|
|
@@ -85,6 +91,7 @@ export const GMAIL_OPERATION_SPECS = {
|
|
|
85
91
|
{ name: 'to', label: 'To', type: 'emails', required: true, placeholder: '{{payload.email}}' },
|
|
86
92
|
{ name: 'subject', label: 'Subject', type: 'string', required: true, placeholder: 'Order #{{payload.id}}' },
|
|
87
93
|
{ name: 'body', label: 'Body (HTML)', type: 'htmlTemplate', required: true, placeholder: '<p>Hi {{payload.name}}...</p>', language: 'html' },
|
|
94
|
+
{ name: 'attachments', label: 'Files from the payload', type: 'string', advanced: true, placeholder: '{{payload._files}}', description: 'A file reference from the payload — what a webhook uploaded ({{payload._files}}), what a Drive list downloaded ({{payload.files}}), or one file ({{payload._file}}). Up to 5 files, 25 MB in total.' },
|
|
88
95
|
],
|
|
89
96
|
},
|
|
90
97
|
sendAndWaitForResponse: {
|
|
@@ -103,6 +110,7 @@ export const GMAIL_OPERATION_SPECS = {
|
|
|
103
110
|
{ name: 'disapproveCommentLabel', label: 'Comment form label', type: 'string', placeholder: 'Why are you disapproving?', description: "Heading shown above the textarea. Only used when 'Require comment' is on." },
|
|
104
111
|
{ name: 'disapproveCommentPlaceholder', label: 'Comment placeholder', type: 'string', placeholder: 'Tell the sender why — this helps them improve the next attempt.', description: "Hint shown inside the empty textarea. Only used when 'Require comment' is on." },
|
|
105
112
|
{ name: 'timeoutMinutes', label: 'Timeout (minutes)', type: 'number', placeholder: '1440', description: 'Auto-resolve as approved=false after this many minutes. Default 1440 (24h).' },
|
|
113
|
+
{ name: 'attachments', label: 'Files from the payload', type: 'string', advanced: true, placeholder: '{{payload._files}}', description: 'A file reference from the payload — what a webhook uploaded ({{payload._files}}), what a Drive list downloaded ({{payload.files}}), or one file ({{payload._file}}). Up to 5 files, 25 MB in total.' },
|
|
106
114
|
],
|
|
107
115
|
},
|
|
108
116
|
createDraft: {
|
|
@@ -114,11 +122,12 @@ export const GMAIL_OPERATION_SPECS = {
|
|
|
114
122
|
{ name: 'to', label: 'To', type: 'emails', required: true, placeholder: '{{payload.email}}', description: 'Recipients the draft will be addressed to' },
|
|
115
123
|
{ name: 'subject', label: 'Subject', type: 'string', placeholder: 'Draft: {{payload.topic}}' },
|
|
116
124
|
{ name: 'body', label: 'Body (HTML)', type: 'htmlTemplate', language: 'html' },
|
|
117
|
-
{ name: 'cc', label: 'CC', type: 'emails' },
|
|
118
|
-
{ name: 'bcc', label: 'BCC', type: 'emails' },
|
|
119
|
-
{ name: '
|
|
120
|
-
{ name: '
|
|
121
|
-
{ name: '
|
|
125
|
+
{ name: 'cc', label: 'CC', type: 'emails', advanced: true },
|
|
126
|
+
{ name: 'bcc', label: 'BCC', type: 'emails', advanced: true },
|
|
127
|
+
{ name: 'attachments', label: 'Files from the payload', type: 'string', advanced: true, placeholder: '{{payload._files}}', description: 'A file reference from the payload — what a webhook uploaded ({{payload._files}}), what a Drive list downloaded ({{payload.files}}), or one file ({{payload._file}}). Up to 5 files, 25 MB in total.' },
|
|
128
|
+
{ name: 'threadId', label: 'Thread ID', type: 'string', advanced: true, description: 'Optional — attach draft to an existing thread' },
|
|
129
|
+
{ name: 'inReplyTo', label: 'In-Reply-To', type: 'string', advanced: true, description: 'Optional Message-ID header' },
|
|
130
|
+
{ name: 'references', label: 'References', type: 'string', advanced: true, description: 'Optional References chain' },
|
|
122
131
|
],
|
|
123
132
|
},
|
|
124
133
|
sendDraft: {
|
|
@@ -139,8 +148,9 @@ export const GMAIL_OPERATION_SPECS = {
|
|
|
139
148
|
{ name: 'body', label: 'Body (HTML)', type: 'htmlTemplate', required: true, language: 'html' },
|
|
140
149
|
{ name: 'subject', label: 'Subject', type: 'string', description: 'Optional — defaults to "Re: <original>"' },
|
|
141
150
|
{ name: 'to', label: 'To', type: 'emails', description: 'Optional — defaults to last sender in thread' },
|
|
142
|
-
{ name: 'cc', label: 'CC', type: 'emails' },
|
|
143
|
-
{ name: 'bcc', label: 'BCC', type: 'emails' },
|
|
151
|
+
{ name: 'cc', label: 'CC', type: 'emails', advanced: true },
|
|
152
|
+
{ name: 'bcc', label: 'BCC', type: 'emails', advanced: true },
|
|
153
|
+
{ name: 'attachments', label: 'Files from the payload', type: 'string', advanced: true, placeholder: '{{payload._files}}', description: 'A file reference from the payload — what a webhook uploaded ({{payload._files}}), what a Drive list downloaded ({{payload.files}}), or one file ({{payload._file}}). Up to 5 files, 25 MB in total.' },
|
|
144
154
|
],
|
|
145
155
|
},
|
|
146
156
|
getMessage: {
|
|
@@ -278,6 +288,14 @@ export const GMAIL_OPERATION_SPECS = {
|
|
|
278
288
|
export const GMAIL_DROPDOWN_OPERATIONS = GMAIL_OPERATIONS.filter((op) => GMAIL_OPERATION_SPECS[op].group !== undefined);
|
|
279
289
|
export const GMAIL_TOOLKIT_OPERATIONS = GMAIL_OPERATIONS.filter((op) => op !== 'sendAndWaitForResponse');
|
|
280
290
|
const p = (name, description, required = true, type = 'string') => ({ name, type, description, required });
|
|
291
|
+
/**
|
|
292
|
+
* Los adjuntos, para la IA [2026-09-14]: el modelo no sube ficheros, pasa
|
|
293
|
+
* las referencias que ya están en el payload (los objetos `_file`) tal cual,
|
|
294
|
+
* como texto JSON. La api las resuelve por el registro de la organización.
|
|
295
|
+
*/
|
|
296
|
+
const ADJUNTOS = p('attachments', 'Optional. Files to attach, taken from the payload: pass the `_file` reference object(s) ' +
|
|
297
|
+
'exactly as they appear (a single `_file`, or the `_files` / `files` array), as a JSON ' +
|
|
298
|
+
'string. Never invent one. Up to 5 files, 25 MB in total.', false);
|
|
281
299
|
export const GMAIL_TOOLKIT_SPECS = [
|
|
282
300
|
{
|
|
283
301
|
operation: 'send',
|
|
@@ -297,6 +315,7 @@ export const GMAIL_TOOLKIT_SPECS = [
|
|
|
297
315
|
p('body', 'HTML-formatted email body.'),
|
|
298
316
|
p('cc', 'Optional CC recipients.', false),
|
|
299
317
|
p('bcc', 'Optional BCC recipients.', false),
|
|
318
|
+
ADJUNTOS,
|
|
300
319
|
],
|
|
301
320
|
},
|
|
302
321
|
{
|
|
@@ -319,6 +338,7 @@ export const GMAIL_TOOLKIT_SPECS = [
|
|
|
319
338
|
p('threadId', 'Optional — attach draft to an existing thread.', false),
|
|
320
339
|
p('inReplyTo', 'Optional Message-ID header to reply to.', false),
|
|
321
340
|
p('references', 'Optional References header chain.', false),
|
|
341
|
+
ADJUNTOS,
|
|
322
342
|
],
|
|
323
343
|
},
|
|
324
344
|
{
|
|
@@ -355,6 +375,7 @@ export const GMAIL_TOOLKIT_SPECS = [
|
|
|
355
375
|
p('subject', 'Optional — defaults to "Re: <original>".', false),
|
|
356
376
|
p('cc', 'Optional CC recipients.', false),
|
|
357
377
|
p('bcc', 'Optional BCC recipients.', false),
|
|
378
|
+
ADJUNTOS,
|
|
358
379
|
],
|
|
359
380
|
},
|
|
360
381
|
{
|
|
@@ -510,6 +531,7 @@ export const GMAIL_SEND_AND_WAIT_TOOL_SPEC = {
|
|
|
510
531
|
p('disapproveLabel', "Optional. Disapprove button label. Default: 'Disapprove'.", false),
|
|
511
532
|
p('includeDisapprove', 'Optional. Include the Disapprove button. Default: true. Set to false for approve-only confirmations.', false),
|
|
512
533
|
p('timeoutMinutes', 'Optional. Minutes to wait before auto-resolving with approved=false. Default 1440 (24h).', false),
|
|
534
|
+
ADJUNTOS,
|
|
513
535
|
],
|
|
514
536
|
};
|
|
515
537
|
/** Todo lo que el nodo sabe ejecutar, se ofrezca o no como herramienta. */
|
package/dist/esm/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/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. */
|
package/dist/esm/registry.js
CHANGED
|
@@ -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",
|
package/dist/esm/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/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' },
|
|
@@ -80,6 +80,12 @@ export interface GmailParamSpec {
|
|
|
80
80
|
value: string;
|
|
81
81
|
label: string;
|
|
82
82
|
}>;
|
|
83
|
+
/**
|
|
84
|
+
* Se pinta en la pestaña «Advanced» y no en «Config» [2026-09-14]. Igual
|
|
85
|
+
* que Drive, GitHub o Bucket. Lo que va ahí: las cabeceras del hilo
|
|
86
|
+
* (threadId, inReplyTo, references), CC/BCC, y los adjuntos.
|
|
87
|
+
*/
|
|
88
|
+
advanced?: boolean;
|
|
83
89
|
}
|
|
84
90
|
export interface GmailOperationSpec {
|
|
85
91
|
/** Etiqueta del desplegable y de la página. */
|
|
@@ -108,6 +114,12 @@ export interface GmailOperationSpec {
|
|
|
108
114
|
* renderizador se invocaba tras `operation !== "send"`— y la ruta determinista no
|
|
109
115
|
* las sabe mandar: `emailSender.send` recibe to/subject/html y nada más. Darles
|
|
110
116
|
* soporte es una función nueva, no una mudanza.
|
|
117
|
+
*
|
|
118
|
+
* `attachments` [2026-09-14]: las cuatro operaciones que arman un mensaje
|
|
119
|
+
* (send, sendAndWaitForResponse, createDraft, replyToThread) adjuntan lo que
|
|
120
|
+
* el flujo ya tiene. Es una RUTA del payload, como el «File from payload» de
|
|
121
|
+
* Jira: la api saca las referencias `_file`, las resuelve por el registro con
|
|
122
|
+
* el `orgId` y arma el `multipart/mixed`. No hay subida a mano. Va en Advanced.
|
|
111
123
|
*/
|
|
112
124
|
export declare const GMAIL_OPERATION_SPECS: Record<GmailOperation, GmailOperationSpec>;
|
|
113
125
|
export declare const GMAIL_DROPDOWN_OPERATIONS: readonly GmailOperation[];
|
package/dist/gmail-operations.js
CHANGED
|
@@ -79,6 +79,12 @@ exports.GMAIL_OPERATION_GROUPS = ['Messages', 'Drafts', 'Labels', 'Threads'];
|
|
|
79
79
|
* renderizador se invocaba tras `operation !== "send"`— y la ruta determinista no
|
|
80
80
|
* las sabe mandar: `emailSender.send` recibe to/subject/html y nada más. Darles
|
|
81
81
|
* soporte es una función nueva, no una mudanza.
|
|
82
|
+
*
|
|
83
|
+
* `attachments` [2026-09-14]: las cuatro operaciones que arman un mensaje
|
|
84
|
+
* (send, sendAndWaitForResponse, createDraft, replyToThread) adjuntan lo que
|
|
85
|
+
* el flujo ya tiene. Es una RUTA del payload, como el «File from payload» de
|
|
86
|
+
* Jira: la api saca las referencias `_file`, las resuelve por el registro con
|
|
87
|
+
* el `orgId` y arma el `multipart/mixed`. No hay subida a mano. Va en Advanced.
|
|
82
88
|
*/
|
|
83
89
|
exports.GMAIL_OPERATION_SPECS = {
|
|
84
90
|
send: {
|
|
@@ -90,6 +96,7 @@ exports.GMAIL_OPERATION_SPECS = {
|
|
|
90
96
|
{ name: 'to', label: 'To', type: 'emails', required: true, placeholder: '{{payload.email}}' },
|
|
91
97
|
{ name: 'subject', label: 'Subject', type: 'string', required: true, placeholder: 'Order #{{payload.id}}' },
|
|
92
98
|
{ name: 'body', label: 'Body (HTML)', type: 'htmlTemplate', required: true, placeholder: '<p>Hi {{payload.name}}...</p>', language: 'html' },
|
|
99
|
+
{ name: 'attachments', label: 'Files from the payload', type: 'string', advanced: true, placeholder: '{{payload._files}}', description: 'A file reference from the payload — what a webhook uploaded ({{payload._files}}), what a Drive list downloaded ({{payload.files}}), or one file ({{payload._file}}). Up to 5 files, 25 MB in total.' },
|
|
93
100
|
],
|
|
94
101
|
},
|
|
95
102
|
sendAndWaitForResponse: {
|
|
@@ -108,6 +115,7 @@ exports.GMAIL_OPERATION_SPECS = {
|
|
|
108
115
|
{ name: 'disapproveCommentLabel', label: 'Comment form label', type: 'string', placeholder: 'Why are you disapproving?', description: "Heading shown above the textarea. Only used when 'Require comment' is on." },
|
|
109
116
|
{ name: 'disapproveCommentPlaceholder', label: 'Comment placeholder', type: 'string', placeholder: 'Tell the sender why — this helps them improve the next attempt.', description: "Hint shown inside the empty textarea. Only used when 'Require comment' is on." },
|
|
110
117
|
{ name: 'timeoutMinutes', label: 'Timeout (minutes)', type: 'number', placeholder: '1440', description: 'Auto-resolve as approved=false after this many minutes. Default 1440 (24h).' },
|
|
118
|
+
{ name: 'attachments', label: 'Files from the payload', type: 'string', advanced: true, placeholder: '{{payload._files}}', description: 'A file reference from the payload — what a webhook uploaded ({{payload._files}}), what a Drive list downloaded ({{payload.files}}), or one file ({{payload._file}}). Up to 5 files, 25 MB in total.' },
|
|
111
119
|
],
|
|
112
120
|
},
|
|
113
121
|
createDraft: {
|
|
@@ -119,11 +127,12 @@ exports.GMAIL_OPERATION_SPECS = {
|
|
|
119
127
|
{ name: 'to', label: 'To', type: 'emails', required: true, placeholder: '{{payload.email}}', description: 'Recipients the draft will be addressed to' },
|
|
120
128
|
{ name: 'subject', label: 'Subject', type: 'string', placeholder: 'Draft: {{payload.topic}}' },
|
|
121
129
|
{ name: 'body', label: 'Body (HTML)', type: 'htmlTemplate', language: 'html' },
|
|
122
|
-
{ name: 'cc', label: 'CC', type: 'emails' },
|
|
123
|
-
{ name: 'bcc', label: 'BCC', type: 'emails' },
|
|
124
|
-
{ name: '
|
|
125
|
-
{ name: '
|
|
126
|
-
{ name: '
|
|
130
|
+
{ name: 'cc', label: 'CC', type: 'emails', advanced: true },
|
|
131
|
+
{ name: 'bcc', label: 'BCC', type: 'emails', advanced: true },
|
|
132
|
+
{ name: 'attachments', label: 'Files from the payload', type: 'string', advanced: true, placeholder: '{{payload._files}}', description: 'A file reference from the payload — what a webhook uploaded ({{payload._files}}), what a Drive list downloaded ({{payload.files}}), or one file ({{payload._file}}). Up to 5 files, 25 MB in total.' },
|
|
133
|
+
{ name: 'threadId', label: 'Thread ID', type: 'string', advanced: true, description: 'Optional — attach draft to an existing thread' },
|
|
134
|
+
{ name: 'inReplyTo', label: 'In-Reply-To', type: 'string', advanced: true, description: 'Optional Message-ID header' },
|
|
135
|
+
{ name: 'references', label: 'References', type: 'string', advanced: true, description: 'Optional References chain' },
|
|
127
136
|
],
|
|
128
137
|
},
|
|
129
138
|
sendDraft: {
|
|
@@ -144,8 +153,9 @@ exports.GMAIL_OPERATION_SPECS = {
|
|
|
144
153
|
{ name: 'body', label: 'Body (HTML)', type: 'htmlTemplate', required: true, language: 'html' },
|
|
145
154
|
{ name: 'subject', label: 'Subject', type: 'string', description: 'Optional — defaults to "Re: <original>"' },
|
|
146
155
|
{ name: 'to', label: 'To', type: 'emails', description: 'Optional — defaults to last sender in thread' },
|
|
147
|
-
{ name: 'cc', label: 'CC', type: 'emails' },
|
|
148
|
-
{ name: 'bcc', label: 'BCC', type: 'emails' },
|
|
156
|
+
{ name: 'cc', label: 'CC', type: 'emails', advanced: true },
|
|
157
|
+
{ name: 'bcc', label: 'BCC', type: 'emails', advanced: true },
|
|
158
|
+
{ name: 'attachments', label: 'Files from the payload', type: 'string', advanced: true, placeholder: '{{payload._files}}', description: 'A file reference from the payload — what a webhook uploaded ({{payload._files}}), what a Drive list downloaded ({{payload.files}}), or one file ({{payload._file}}). Up to 5 files, 25 MB in total.' },
|
|
149
159
|
],
|
|
150
160
|
},
|
|
151
161
|
getMessage: {
|
|
@@ -283,6 +293,14 @@ exports.GMAIL_OPERATION_SPECS = {
|
|
|
283
293
|
exports.GMAIL_DROPDOWN_OPERATIONS = exports.GMAIL_OPERATIONS.filter((op) => exports.GMAIL_OPERATION_SPECS[op].group !== undefined);
|
|
284
294
|
exports.GMAIL_TOOLKIT_OPERATIONS = exports.GMAIL_OPERATIONS.filter((op) => op !== 'sendAndWaitForResponse');
|
|
285
295
|
const p = (name, description, required = true, type = 'string') => ({ name, type, description, required });
|
|
296
|
+
/**
|
|
297
|
+
* Los adjuntos, para la IA [2026-09-14]: el modelo no sube ficheros, pasa
|
|
298
|
+
* las referencias que ya están en el payload (los objetos `_file`) tal cual,
|
|
299
|
+
* como texto JSON. La api las resuelve por el registro de la organización.
|
|
300
|
+
*/
|
|
301
|
+
const ADJUNTOS = p('attachments', 'Optional. Files to attach, taken from the payload: pass the `_file` reference object(s) ' +
|
|
302
|
+
'exactly as they appear (a single `_file`, or the `_files` / `files` array), as a JSON ' +
|
|
303
|
+
'string. Never invent one. Up to 5 files, 25 MB in total.', false);
|
|
286
304
|
exports.GMAIL_TOOLKIT_SPECS = [
|
|
287
305
|
{
|
|
288
306
|
operation: 'send',
|
|
@@ -302,6 +320,7 @@ exports.GMAIL_TOOLKIT_SPECS = [
|
|
|
302
320
|
p('body', 'HTML-formatted email body.'),
|
|
303
321
|
p('cc', 'Optional CC recipients.', false),
|
|
304
322
|
p('bcc', 'Optional BCC recipients.', false),
|
|
323
|
+
ADJUNTOS,
|
|
305
324
|
],
|
|
306
325
|
},
|
|
307
326
|
{
|
|
@@ -324,6 +343,7 @@ exports.GMAIL_TOOLKIT_SPECS = [
|
|
|
324
343
|
p('threadId', 'Optional — attach draft to an existing thread.', false),
|
|
325
344
|
p('inReplyTo', 'Optional Message-ID header to reply to.', false),
|
|
326
345
|
p('references', 'Optional References header chain.', false),
|
|
346
|
+
ADJUNTOS,
|
|
327
347
|
],
|
|
328
348
|
},
|
|
329
349
|
{
|
|
@@ -360,6 +380,7 @@ exports.GMAIL_TOOLKIT_SPECS = [
|
|
|
360
380
|
p('subject', 'Optional — defaults to "Re: <original>".', false),
|
|
361
381
|
p('cc', 'Optional CC recipients.', false),
|
|
362
382
|
p('bcc', 'Optional BCC recipients.', false),
|
|
383
|
+
ADJUNTOS,
|
|
363
384
|
],
|
|
364
385
|
},
|
|
365
386
|
{
|
|
@@ -515,6 +536,7 @@ exports.GMAIL_SEND_AND_WAIT_TOOL_SPEC = {
|
|
|
515
536
|
p('disapproveLabel', "Optional. Disapprove button label. Default: 'Disapprove'.", false),
|
|
516
537
|
p('includeDisapprove', 'Optional. Include the Disapprove button. Default: true. Set to false for approve-only confirmations.', false),
|
|
517
538
|
p('timeoutMinutes', 'Optional. Minutes to wait before auto-resolving with approved=false. Default 1440 (24h).', false),
|
|
539
|
+
ADJUNTOS,
|
|
518
540
|
],
|
|
519
541
|
};
|
|
520
542
|
/** Todo lo que el nodo sabe ejecutar, se ofrezca o no como herramienta. */
|
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.
|
|
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