@hostwebhook/node-types 1.69.0 → 1.71.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/bucket-operations.d.ts +88 -0
- package/dist/bucket-operations.js +140 -0
- package/dist/calendar-toolkit.d.ts +1 -1
- package/dist/connections.d.ts +1 -1
- package/dist/connections.js +1 -0
- package/dist/discord-operations.d.ts +1 -1
- package/dist/discord-operations.js +4 -4
- package/dist/discord-toolkit.d.ts +1 -1
- package/dist/discord-toolkit.js +3 -3
- package/dist/dispatch.d.ts +1 -1
- package/dist/dispatch.js +1 -0
- package/dist/docs-toolkit.d.ts +1 -1
- package/dist/drive-toolkit.d.ts +1 -1
- package/dist/esm/bucket-operations.d.ts +88 -0
- package/dist/esm/bucket-operations.js +136 -0
- package/dist/esm/calendar-operations.d.ts +67 -0
- package/dist/esm/calendar-operations.js +176 -0
- package/dist/esm/calendar-toolkit.d.ts +50 -0
- package/dist/esm/calendar-toolkit.js +152 -0
- package/dist/esm/capacidad-de-credencial.d.ts +75 -0
- package/dist/esm/capacidad-de-credencial.js +68 -0
- package/dist/esm/connections.d.ts +17 -0
- package/dist/esm/connections.js +107 -0
- package/dist/esm/credentials.d.ts +144 -0
- package/dist/esm/credentials.js +199 -0
- package/dist/esm/discord-operations.d.ts +104 -0
- package/dist/esm/discord-operations.js +407 -0
- package/dist/esm/discord-toolkit.d.ts +64 -0
- package/dist/esm/discord-toolkit.js +260 -0
- package/dist/esm/dispatch.d.ts +16 -0
- package/dist/esm/dispatch.js +77 -0
- package/dist/esm/docs-operations.d.ts +99 -0
- package/dist/esm/docs-operations.js +127 -0
- package/dist/esm/docs-toolkit.d.ts +42 -0
- package/dist/esm/docs-toolkit.js +97 -0
- package/dist/esm/drive-operations.d.ts +103 -0
- package/dist/esm/drive-operations.js +319 -0
- package/dist/esm/drive-toolkit.d.ts +54 -0
- package/dist/esm/drive-toolkit.js +177 -0
- package/dist/esm/github-operations.d.ts +147 -0
- package/dist/esm/github-operations.js +551 -0
- package/dist/esm/gmail-operations.d.ts +190 -0
- package/dist/esm/gmail-operations.js +560 -0
- package/dist/esm/google-analytics-operations.d.ts +99 -0
- package/dist/esm/google-analytics-operations.js +222 -0
- package/dist/esm/google-contacts-operations.d.ts +93 -0
- package/dist/esm/google-contacts-operations.js +363 -0
- package/dist/esm/index.d.ts +68 -0
- package/dist/esm/index.js +51 -0
- package/dist/esm/jira-operations.d.ts +164 -0
- package/dist/esm/jira-operations.js +470 -0
- package/dist/esm/llm-models.d.ts +101 -0
- package/dist/esm/llm-models.js +230 -0
- package/dist/esm/mailchimp-operations.d.ts +56 -0
- package/dist/esm/mailchimp-operations.js +155 -0
- package/dist/esm/mongo-operations.d.ts +61 -0
- package/dist/esm/mongo-operations.js +120 -0
- package/dist/esm/notion-operations.d.ts +125 -0
- package/dist/esm/notion-operations.js +511 -0
- package/dist/esm/openrouter.d.ts +142 -0
- package/dist/esm/openrouter.js +99 -0
- package/dist/esm/package.json +4 -0
- package/dist/esm/postgres-operations.d.ts +60 -0
- package/dist/esm/postgres-operations.js +75 -0
- package/dist/esm/registry.d.ts +160 -0
- package/dist/esm/registry.js +885 -0
- package/dist/esm/sheets-operations.d.ts +78 -0
- package/dist/esm/sheets-operations.js +150 -0
- package/dist/esm/sheets-toolkit.d.ts +49 -0
- package/dist/esm/sheets-toolkit.js +127 -0
- package/dist/esm/shopify-operations.d.ts +95 -0
- package/dist/esm/shopify-operations.js +259 -0
- package/dist/esm/slack-operations.d.ts +81 -0
- package/dist/esm/slack-operations.js +244 -0
- package/dist/esm/slack-toolkit.d.ts +60 -0
- package/dist/esm/slack-toolkit.js +235 -0
- package/dist/esm/telegram-operations.d.ts +104 -0
- package/dist/esm/telegram-operations.js +351 -0
- package/dist/esm/telegram-toolkit.d.ts +52 -0
- package/dist/esm/telegram-toolkit.js +183 -0
- package/dist/esm/types.d.ts +149 -0
- package/dist/esm/types.js +8 -0
- package/dist/esm/ui.d.ts +13 -0
- package/dist/esm/ui.js +152 -0
- package/dist/esm/whatsapp-operations.d.ts +23 -0
- package/dist/esm/whatsapp-operations.js +36 -0
- package/dist/index.d.ts +68 -66
- package/dist/index.js +193 -187
- package/dist/openrouter.d.ts +1 -1
- package/dist/registry.d.ts +4 -4
- package/dist/registry.js +540 -210
- package/dist/sheets-toolkit.d.ts +1 -1
- package/dist/slack-operations.d.ts +1 -1
- package/dist/slack-operations.js +4 -4
- package/dist/slack-toolkit.d.ts +1 -1
- package/dist/slack-toolkit.js +3 -3
- package/dist/telegram-toolkit.d.ts +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/ui.d.ts +1 -1
- package/dist/ui.js +2 -0
- package/package.json +21 -3
|
@@ -0,0 +1,149 @@
|
|
|
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' | 'stickyNote';
|
|
3
|
+
/** Node role in the pipeline */
|
|
4
|
+
export type NodeRole = 'source' | 'processing' | 'flowControl' | 'routing' | 'action' | 'monitoring';
|
|
5
|
+
/** Handle positions on the canvas node */
|
|
6
|
+
export type HandlePosition = 'left' | 'right' | 'top' | 'bottom';
|
|
7
|
+
/** Connection rules — which node types can connect to/from this node */
|
|
8
|
+
export interface NodeConnectionConfig {
|
|
9
|
+
acceptsInputFrom: NodeType[];
|
|
10
|
+
canOutputTo: NodeType[];
|
|
11
|
+
special?: {
|
|
12
|
+
hasRejectionOutputNodes?: boolean;
|
|
13
|
+
hasBranches?: boolean;
|
|
14
|
+
isTerminal?: boolean;
|
|
15
|
+
hasLoopBack?: boolean;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/** UI-specific config for the dashboard canvas */
|
|
19
|
+
export interface NodeUIConfig {
|
|
20
|
+
fromNodes: boolean;
|
|
21
|
+
toNodes: boolean;
|
|
22
|
+
isSource?: boolean;
|
|
23
|
+
inputHandles?: HandlePosition[];
|
|
24
|
+
outputHandles?: HandlePosition[];
|
|
25
|
+
dotHandles?: {
|
|
26
|
+
input?: string[];
|
|
27
|
+
output?: string[];
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* When true, the canvas derives output handles from the node entity
|
|
31
|
+
* at render time (e.g. one handle per `entity.tools[i].name`) rather
|
|
32
|
+
* than from a static `dotHandles.output` list. Used by Voice Agent —
|
|
33
|
+
* the count of tools is data, not config. NodeShell branches on this
|
|
34
|
+
* flag to render the dynamic handle set.
|
|
35
|
+
*/
|
|
36
|
+
dynamicOutputs?: boolean;
|
|
37
|
+
special?: {
|
|
38
|
+
hasBranches?: boolean;
|
|
39
|
+
isTerminal?: boolean;
|
|
40
|
+
hasLoopBack?: boolean;
|
|
41
|
+
connectModal?: 'branch' | 'rule' | 'output-group';
|
|
42
|
+
routerTargetLabel?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Generic named output groups — used by connectModal: 'output-group'.
|
|
45
|
+
* The modal reads entity[outputGroupsField] as an array of groups,
|
|
46
|
+
* each with a name (outputGroupNameField), a summary (outputGroupSummaryField),
|
|
47
|
+
* and its own outputNodes[].
|
|
48
|
+
* Works for Split (outputs[]), Conditional (branches[]), or any future branching node.
|
|
49
|
+
*/
|
|
50
|
+
outputGroups?: {
|
|
51
|
+
/** Entity field containing the array of groups (e.g. 'outputs', 'branches') */
|
|
52
|
+
field?: string;
|
|
53
|
+
/** Field within each group for display name (e.g. 'name') */
|
|
54
|
+
nameField?: string;
|
|
55
|
+
/** Field within each group for summary/description (e.g. 'field', 'filterMode') */
|
|
56
|
+
summaryField?: string;
|
|
57
|
+
/** Label shown in the modal (e.g. 'output', 'branch') */
|
|
58
|
+
label: string;
|
|
59
|
+
/** Entity field for the fallback/else path (e.g. 'elseOutputNodes') */
|
|
60
|
+
elseField?: string;
|
|
61
|
+
/**
|
|
62
|
+
* Fixed output groups — for nodes with a static set of outputs (e.g. approval: approve/reject).
|
|
63
|
+
* Each entry maps to a top-level entity field that holds outputNodes[].
|
|
64
|
+
* When set, `field`/`nameField` are ignored — modal shows these fixed options.
|
|
65
|
+
*/
|
|
66
|
+
fixedGroups?: Array<{
|
|
67
|
+
name: string;
|
|
68
|
+
field: string;
|
|
69
|
+
}>;
|
|
70
|
+
/**
|
|
71
|
+
* Optional content-aware gate — the output-group modal only opens
|
|
72
|
+
* when `entity[gate.field] === gate.value`. Lets a node opt into
|
|
73
|
+
* multi-branch routing only in some modes (e.g. AI Node in
|
|
74
|
+
* classifier mode) without trapping every connection in the
|
|
75
|
+
* picker the rest of the time. When the gate fails, the
|
|
76
|
+
* FlowCanvas falls through to the universal
|
|
77
|
+
* `entity.outputNodes` connect path.
|
|
78
|
+
*/
|
|
79
|
+
gate?: {
|
|
80
|
+
field: string;
|
|
81
|
+
value: unknown;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Maps output fields to alternate payload fields on the source entity.
|
|
86
|
+
* When a downstream node is connected via a specific output field,
|
|
87
|
+
* InputSection reads the alternate payload instead of lastPayload.
|
|
88
|
+
* Example: { doneOutputNodes: 'lastDonePayload' } for loop nodes.
|
|
89
|
+
*/
|
|
90
|
+
alternatePayloads?: Record<string, string>;
|
|
91
|
+
/** Whether this node can be connected as a loop-back target. Only nodes that go through the unified node-lifecycle support loop-back detection. */
|
|
92
|
+
loopBackAllowed?: boolean;
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* How the event pipeline routes a payload to this node when an
|
|
97
|
+
* upstream webhook connects to it directly. Required so adding a
|
|
98
|
+
* new node type at compile time is impossible without picking one.
|
|
99
|
+
*
|
|
100
|
+
* - 'generic': dispatchConnectedNodes loops findActiveByInputEndpoint
|
|
101
|
+
* on the service and dispatches every active match. Use for
|
|
102
|
+
* pipeline-style nodes that ingest webhook payloads (filter,
|
|
103
|
+
* transform, ai, code, markdown, fileTransform, vectorStore).
|
|
104
|
+
*
|
|
105
|
+
* - 'custom': has a dedicated `case` in the dispatchOutputNodes
|
|
106
|
+
* switch that calls the node's specific service method. Used
|
|
107
|
+
* when the node needs scheduling, branching, gating, or queueing
|
|
108
|
+
* (delay, cache, aggregator, rateLimiter, conditional, split,
|
|
109
|
+
* loop, merge, approval, schemaValidator, router). The generic
|
|
110
|
+
* loop must NOT process these — would dispatch twice.
|
|
111
|
+
*
|
|
112
|
+
* - 'excluded': not dispatched in the webhook flow at all. Action
|
|
113
|
+
* nodes (email/http/mongo/notification/sheets/calendar/docs/
|
|
114
|
+
* firecrawl) are fired post-delivery in onDeliveryResult with
|
|
115
|
+
* their own loops; ingress nodes (webhook/scheduledWorkflow/
|
|
116
|
+
* chatTrigger/trigger) start the flow themselves;
|
|
117
|
+
* stickyNote is purely visual.
|
|
118
|
+
*/
|
|
119
|
+
export type PipelineDispatchKind = 'generic' | 'custom' | 'excluded';
|
|
120
|
+
/** API dispatch config — how the event pipeline processes each node */
|
|
121
|
+
export interface NodeDispatchConfig {
|
|
122
|
+
service: string;
|
|
123
|
+
collection: string;
|
|
124
|
+
hasFilters: boolean;
|
|
125
|
+
outputFields: string[];
|
|
126
|
+
/** @deprecated Use `pipelineDispatch` instead. Kept for backwards compat
|
|
127
|
+
* during the migration; will be removed once every consumer reads
|
|
128
|
+
* `pipelineDispatch`. */
|
|
129
|
+
customDispatch: boolean;
|
|
130
|
+
/** Required. See PipelineDispatchKind for the contract per value. */
|
|
131
|
+
pipelineDispatch: PipelineDispatchKind;
|
|
132
|
+
}
|
|
133
|
+
/** Standardized payload metadata — every node output MUST include _meta */
|
|
134
|
+
export interface PayloadMeta {
|
|
135
|
+
iterable: boolean;
|
|
136
|
+
count: number;
|
|
137
|
+
iterateField?: string;
|
|
138
|
+
}
|
|
139
|
+
/** Helper to create _meta for single-object outputs */
|
|
140
|
+
export declare function singleMeta(): PayloadMeta;
|
|
141
|
+
/** Helper to create _meta for iterable array outputs */
|
|
142
|
+
export declare function iterableMeta(field: string, count: number): PayloadMeta;
|
|
143
|
+
/** Canvas prefix → node type mapping */
|
|
144
|
+
export interface PrefixMapping {
|
|
145
|
+
prefix: string;
|
|
146
|
+
type: NodeType;
|
|
147
|
+
/** Canvas node type used in React Flow nodeTypes map (e.g. "cache-node", "email-action") */
|
|
148
|
+
canvasType: string;
|
|
149
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Helper to create _meta for single-object outputs */
|
|
2
|
+
export function singleMeta() {
|
|
3
|
+
return { iterable: false, count: 1 };
|
|
4
|
+
}
|
|
5
|
+
/** Helper to create _meta for iterable array outputs */
|
|
6
|
+
export function iterableMeta(field, count) {
|
|
7
|
+
return { iterable: true, iterateField: field, count };
|
|
8
|
+
}
|
package/dist/esm/ui.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard UI config — handle positions, dot visibility, canvas prefixes.
|
|
3
|
+
* Only imported by the Dashboard. Broker and API don't need this.
|
|
4
|
+
*/
|
|
5
|
+
import type { NodeType, NodeUIConfig, PrefixMapping } from './types.js';
|
|
6
|
+
export declare const NODE_UI: Record<NodeType, NodeUIConfig>;
|
|
7
|
+
/** Canvas prefix → node type mapping (used by FlowCanvas to identify node type from XYFlow node ID) */
|
|
8
|
+
export declare const PREFIX_TO_TYPE: PrefixMapping[];
|
|
9
|
+
/** Resolve canvas node ID to { type, entityId } */
|
|
10
|
+
export declare function resolveNodeId(canvasId: string): {
|
|
11
|
+
type: NodeType;
|
|
12
|
+
entityId: string;
|
|
13
|
+
} | null;
|
package/dist/esm/ui.js
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard UI config — handle positions, dot visibility, canvas prefixes.
|
|
3
|
+
* Only imported by the Dashboard. Broker and API don't need this.
|
|
4
|
+
*/
|
|
5
|
+
export const NODE_UI = {
|
|
6
|
+
// ── Source nodes ──
|
|
7
|
+
// Una fuente arranca el flujo: `fromNodes: false` significa que nada puede
|
|
8
|
+
// conectarse HACIA ella, y por eso su DTO en la API tampoco declara
|
|
9
|
+
// `inputNodes`. Expone un único punto de salida, `right-out`. El de abajo se
|
|
10
|
+
// retiró porque no aportaba una segunda semántica — sólo una segunda diana
|
|
11
|
+
// donde soltar aristas.
|
|
12
|
+
//
|
|
13
|
+
// Ya no queda ningún punto de abajo en todo el registro. Aquí ponía que el
|
|
14
|
+
// `router` conservaba el suyo «porque ahí abajo significa por regla», y era
|
|
15
|
+
// mentira: el modal de reglas lo abre `special.connectModal`, que mira el
|
|
16
|
+
// TIPO del nodo origen y no el handle por el que sueltas, así que desde la
|
|
17
|
+
// derecha salía el mismo modal. El destino de una regla vive en
|
|
18
|
+
// `port: rule:<id>`; el handle es sólo por dónde entra y sale la línea.
|
|
19
|
+
webhook: { fromNodes: true, toNodes: true, isSource: true },
|
|
20
|
+
scheduledWorkflow: { fromNodes: false, toNodes: true, isSource: true, outputHandles: ['right'], dotHandles: { output: ['right-out'] } },
|
|
21
|
+
chatTrigger: { fromNodes: false, toNodes: true, isSource: true, outputHandles: ['right'], dotHandles: { output: ['right-out'] } },
|
|
22
|
+
trigger: { fromNodes: false, toNodes: true, isSource: true, outputHandles: ['right'], dotHandles: { output: ['right-out'] } },
|
|
23
|
+
// Voice Agent: dynamicOutputs=true tells NodeShell to derive ONE
|
|
24
|
+
// output handle per non-disabled `entity.tools[i].name`. The
|
|
25
|
+
// `right-out` fallback handle is rendered when the agent has zero
|
|
26
|
+
// tools so the user has somewhere to drop the first wired connection
|
|
27
|
+
// before any tools are defined (rare but possible during onboarding).
|
|
28
|
+
voiceAgent: { fromNodes: false, toNodes: true, isSource: true, outputHandles: ['right'], dotHandles: { output: ['right-out'] }, dynamicOutputs: true },
|
|
29
|
+
// ── Pipeline processing nodes ──
|
|
30
|
+
filter: { fromNodes: true, toNodes: true, special: { loopBackAllowed: true } },
|
|
31
|
+
transform: { fromNodes: true, toNodes: true, special: { loopBackAllowed: true } },
|
|
32
|
+
// One output only: a payload that fails validation stops at the node.
|
|
33
|
+
schemaValidator: { fromNodes: true, toNodes: true, outputHandles: ['right'], special: { loopBackAllowed: true } },
|
|
34
|
+
conditional: { fromNodes: true, toNodes: true, outputHandles: ['right'], special: { loopBackAllowed: true, connectModal: 'output-group', outputGroups: { field: 'branches', nameField: 'name', summaryField: 'filterMode', label: 'branch', elseField: 'elseOutputNodes' } } },
|
|
35
|
+
delay: { fromNodes: true, toNodes: true },
|
|
36
|
+
rateLimiter: { fromNodes: true, toNodes: true },
|
|
37
|
+
aggregator: { fromNodes: true, toNodes: true, special: { loopBackAllowed: true } },
|
|
38
|
+
cache: { fromNodes: true, toNodes: true },
|
|
39
|
+
code: { fromNodes: true, toNodes: true, special: { loopBackAllowed: true } },
|
|
40
|
+
// AI Node: in classifier mode (entity.outputMode === 'classifier') the
|
|
41
|
+
// node fans out to N output handles — one per category in
|
|
42
|
+
// `entity.categories[]`, with the wiring in `categories[].outputNodes`.
|
|
43
|
+
// An item the classifier cannot place lands on the synthetic "other"
|
|
44
|
+
// value (see `entity.includeOtherBranch`) and stops there — "other" has
|
|
45
|
+
// no handle and no route. In any other outputMode the node falls back to
|
|
46
|
+
// the single right-out handle NodeShell renders when no dynamic outputs
|
|
47
|
+
// materialize.
|
|
48
|
+
ai: { fromNodes: true, toNodes: true, outputHandles: ['right'], special: { loopBackAllowed: true, connectModal: 'output-group', outputGroups: { field: 'categories', nameField: 'name', summaryField: 'description', label: 'category', gate: { field: 'outputMode', value: 'classifier' } } } },
|
|
49
|
+
markdown: { fromNodes: true, toNodes: true, special: { loopBackAllowed: true } },
|
|
50
|
+
fileTransform: { fromNodes: true, toNodes: true },
|
|
51
|
+
limit: { fromNodes: true, toNodes: true, special: { loopBackAllowed: true } },
|
|
52
|
+
// ── Flow control nodes ──
|
|
53
|
+
split: { fromNodes: true, toNodes: true, outputHandles: ['right'], special: { connectModal: 'output-group', outputGroups: { field: 'outputs', nameField: 'name', summaryField: 'field', label: 'output' } } },
|
|
54
|
+
merge: { fromNodes: true, toNodes: true, inputHandles: ['left', 'top'] },
|
|
55
|
+
approval: { fromNodes: true, toNodes: true, outputHandles: ['right'], special: { connectModal: 'output-group', outputGroups: { fixedGroups: [{ name: 'Approve', field: 'outputNodes' }, { name: 'Reject', field: 'rejectionOutputNodes' }], label: 'action' } } },
|
|
56
|
+
loop: { fromNodes: true, toNodes: true, inputHandles: ['left'], outputHandles: ['right'], dotHandles: { input: ['left-in'], output: ['right-out-loop', 'right-in-loopback', 'right-out-done'] }, special: { hasLoopBack: true, alternatePayloads: { doneOutputNodes: 'lastDonePayload' } } },
|
|
57
|
+
// ── Routing nodes ──
|
|
58
|
+
router: { fromNodes: true, toNodes: true, outputHandles: ['right'], dotHandles: { output: ['right-out'] }, special: { connectModal: 'rule' } },
|
|
59
|
+
// ── Action nodes ──
|
|
60
|
+
emailAction: { fromNodes: true, toNodes: true, inputHandles: ['left', 'top'], outputHandles: ['right'], dotHandles: { input: ['left-in', 'top-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'email' } },
|
|
61
|
+
gmailAction: { fromNodes: true, toNodes: true, inputHandles: ['left', 'top'], outputHandles: ['right'], dotHandles: { input: ['left-in', 'top-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'gmail' } },
|
|
62
|
+
httpAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
|
|
63
|
+
mongoAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
|
|
64
|
+
postgresAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
|
|
65
|
+
notificationAction: { fromNodes: true, toNodes: false, inputHandles: ['left', 'top'], dotHandles: { input: ['left-in', 'top-in'] }, special: { isTerminal: true, routerTargetLabel: 'notification' } },
|
|
66
|
+
sheetsAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
|
|
67
|
+
calendarAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
|
|
68
|
+
docsAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
|
|
69
|
+
driveAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
|
|
70
|
+
firecrawlAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
|
|
71
|
+
telegramAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'telegram' } },
|
|
72
|
+
whatsappAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'whatsapp' } },
|
|
73
|
+
discordAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'discord' } },
|
|
74
|
+
mailchimpAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'mailchimp' } },
|
|
75
|
+
shopifyAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'shopify' } },
|
|
76
|
+
githubAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'github' } },
|
|
77
|
+
jiraAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'jira' } },
|
|
78
|
+
bucketAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'bucket' } },
|
|
79
|
+
slackAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'slack' } },
|
|
80
|
+
googleContactsAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
|
|
81
|
+
googleAnalyticsAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
|
|
82
|
+
notionAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true, routerTargetLabel: 'notion' } },
|
|
83
|
+
vectorStore: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
|
|
84
|
+
rssAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
|
|
85
|
+
socialMediaAction: { fromNodes: true, toNodes: true, inputHandles: ['left'], dotHandles: { input: ['left-in'], output: ['right-out'] }, special: { loopBackAllowed: true } },
|
|
86
|
+
// ── Annotations ──
|
|
87
|
+
stickyNote: { fromNodes: false, toNodes: false },
|
|
88
|
+
};
|
|
89
|
+
/** Canvas prefix → node type mapping (used by FlowCanvas to identify node type from XYFlow node ID) */
|
|
90
|
+
export const PREFIX_TO_TYPE = [
|
|
91
|
+
{ prefix: 'wh-', type: 'webhook', canvasType: 'webhook' },
|
|
92
|
+
{ prefix: 'swf-', type: 'scheduledWorkflow', canvasType: 'scheduledWorkflow' },
|
|
93
|
+
{ prefix: 'chat-', type: 'chatTrigger', canvasType: 'chatTrigger' },
|
|
94
|
+
{ prefix: 'trg-', type: 'trigger', canvasType: 'trigger' },
|
|
95
|
+
{ prefix: 'va-', type: 'voiceAgent', canvasType: 'voiceAgent' },
|
|
96
|
+
{ prefix: 'ea-', type: 'emailAction', canvasType: 'emailAction' },
|
|
97
|
+
{ prefix: 'gm-', type: 'gmailAction', canvasType: 'gmailAction' },
|
|
98
|
+
{ prefix: 'tg-', type: 'telegramAction', canvasType: 'telegramAction' },
|
|
99
|
+
{ prefix: 'wa-', type: 'whatsappAction', canvasType: 'whatsappAction' },
|
|
100
|
+
{ prefix: 'dc-', type: 'discordAction', canvasType: 'discordAction' },
|
|
101
|
+
{ prefix: 'sl-', type: 'slackAction', canvasType: 'slackAction' },
|
|
102
|
+
{ prefix: 'mc-', type: 'mailchimpAction', canvasType: 'mailchimpAction' },
|
|
103
|
+
{ prefix: 'shp-', type: 'shopifyAction', canvasType: 'shopifyAction' },
|
|
104
|
+
{ prefix: 'gh-', type: 'githubAction', canvasType: 'githubAction' },
|
|
105
|
+
{ prefix: 'jr-', type: 'jiraAction', canvasType: 'jiraAction' },
|
|
106
|
+
{ prefix: 'bkt-', type: 'bucketAction', canvasType: 'bucketAction' },
|
|
107
|
+
{ prefix: 'gc-', type: 'googleContactsAction', canvasType: 'googleContactsAction' },
|
|
108
|
+
{ prefix: 'gaa-', type: 'googleAnalyticsAction', canvasType: 'googleAnalyticsAction' },
|
|
109
|
+
{ prefix: 'ntn-', type: 'notionAction', canvasType: 'notionAction' },
|
|
110
|
+
{ prefix: 'ha-', type: 'httpAction', canvasType: 'httpAction' },
|
|
111
|
+
{ prefix: 'ma-', type: 'mongoAction', canvasType: 'mongoAction' },
|
|
112
|
+
{ prefix: 'pg-', type: 'postgresAction', canvasType: 'postgresAction' },
|
|
113
|
+
{ prefix: 'na-', type: 'notificationAction', canvasType: 'notificationAction' },
|
|
114
|
+
{ prefix: 'ro-', type: 'router', canvasType: 'router' },
|
|
115
|
+
{ prefix: 'fi-', type: 'filter', canvasType: 'filter' },
|
|
116
|
+
{ prefix: 'tr-', type: 'transform', canvasType: 'transform' },
|
|
117
|
+
{ prefix: 'sv-', type: 'schemaValidator', canvasType: 'schemaValidator' },
|
|
118
|
+
{ prefix: 'delay-', type: 'delay', canvasType: 'delay' },
|
|
119
|
+
{ prefix: 'sheet-', type: 'sheetsAction', canvasType: 'sheetsAction' },
|
|
120
|
+
{ prefix: 'cal-', type: 'calendarAction', canvasType: 'calendarAction' },
|
|
121
|
+
{ prefix: 'appr-', type: 'approval', canvasType: 'approval' },
|
|
122
|
+
{ prefix: 'merge-', type: 'merge', canvasType: 'merge' },
|
|
123
|
+
{ prefix: 'cond-', type: 'conditional', canvasType: 'conditional' },
|
|
124
|
+
{ prefix: 'rl-', type: 'rateLimiter', canvasType: 'rateLimiter' },
|
|
125
|
+
{ prefix: 'agg-', type: 'aggregator', canvasType: 'aggregator' },
|
|
126
|
+
{ prefix: 'cache-', type: 'cache', canvasType: 'cache' },
|
|
127
|
+
{ prefix: 'code-', type: 'code', canvasType: 'code' },
|
|
128
|
+
{ prefix: 'ai-', type: 'ai', canvasType: 'ai' },
|
|
129
|
+
{ prefix: 'split-', type: 'split', canvasType: 'split' },
|
|
130
|
+
{ prefix: 'loop-', type: 'loop', canvasType: 'loop' },
|
|
131
|
+
{ prefix: 'md-', type: 'markdown', canvasType: 'markdown' },
|
|
132
|
+
{ prefix: 'ft-', type: 'fileTransform', canvasType: 'fileTransform' },
|
|
133
|
+
{ prefix: 'lim-', type: 'limit', canvasType: 'limit' },
|
|
134
|
+
{ prefix: 'doc-', type: 'docsAction', canvasType: 'docsAction' },
|
|
135
|
+
{ prefix: 'drv-', type: 'driveAction', canvasType: 'driveAction' },
|
|
136
|
+
{ prefix: 'fc-', type: 'firecrawlAction', canvasType: 'firecrawlAction' },
|
|
137
|
+
{ prefix: 'vs-', type: 'vectorStore', canvasType: 'vectorStore' },
|
|
138
|
+
{ prefix: 'rssa-', type: 'rssAction', canvasType: 'rssAction' },
|
|
139
|
+
{ prefix: 'sm-', type: 'socialMediaAction', canvasType: 'socialMediaAction' },
|
|
140
|
+
{ prefix: 'note-', type: 'stickyNote', canvasType: 'stickyNote' },
|
|
141
|
+
];
|
|
142
|
+
/** Resolve canvas node ID to { type, entityId } */
|
|
143
|
+
export function resolveNodeId(canvasId) {
|
|
144
|
+
// Sort by prefix length descending so longer prefixes match first
|
|
145
|
+
const sorted = [...PREFIX_TO_TYPE].sort((a, b) => b.prefix.length - a.prefix.length);
|
|
146
|
+
for (const { prefix, type } of sorted) {
|
|
147
|
+
if (canvasId.startsWith(prefix)) {
|
|
148
|
+
return { type, entityId: canvasId.slice(prefix.length) };
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WhatsApp Business Cloud API operation enum — single source of truth
|
|
3
|
+
* across the API, Dashboard, and any future consumers (Message Broker,
|
|
4
|
+
* MCP server). Used by:
|
|
5
|
+
* - whatsappAction entity / DTO (api): operation field + validation
|
|
6
|
+
* - dashboard WhatsAppAction operation picker
|
|
7
|
+
* - MCP toolkit-specs expansion (one aiEnabled whatsappAction → N tools)
|
|
8
|
+
*
|
|
9
|
+
* Targets Meta Cloud API v21+ (the only supported variant after the
|
|
10
|
+
* On-Premises sunset on 2025-10-23). Each op maps to a single POST to
|
|
11
|
+
* `https://graph.facebook.com/v21.0/<phone_number_id>/messages` with
|
|
12
|
+
* a different `type` discriminator in the body.
|
|
13
|
+
*
|
|
14
|
+
* Phase 1 covers the ten ops that handle ~95% of business messaging.
|
|
15
|
+
* Phase 2 candidates (sendInteractiveButtons, sendInteractiveList,
|
|
16
|
+
* sendSticker, sendContacts) extend this list — bump the package and
|
|
17
|
+
* re-install in consumers, same pattern as Gmail / Calendar / Drive
|
|
18
|
+
* / Telegram.
|
|
19
|
+
*/
|
|
20
|
+
export declare const WHATSAPP_OPERATIONS: readonly ["sendText", "sendImage", "sendAudio", "sendVideo", "sendDocument", "sendLocation", "sendTemplate", "replyToMessage", "markAsRead", "sendReaction"];
|
|
21
|
+
export type WhatsAppOperation = (typeof WHATSAPP_OPERATIONS)[number];
|
|
22
|
+
/** Type guard — useful when validating untrusted input (DTOs, tool calls). */
|
|
23
|
+
export declare function isWhatsAppOperation(value: unknown): value is WhatsAppOperation;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WhatsApp Business Cloud API operation enum — single source of truth
|
|
3
|
+
* across the API, Dashboard, and any future consumers (Message Broker,
|
|
4
|
+
* MCP server). Used by:
|
|
5
|
+
* - whatsappAction entity / DTO (api): operation field + validation
|
|
6
|
+
* - dashboard WhatsAppAction operation picker
|
|
7
|
+
* - MCP toolkit-specs expansion (one aiEnabled whatsappAction → N tools)
|
|
8
|
+
*
|
|
9
|
+
* Targets Meta Cloud API v21+ (the only supported variant after the
|
|
10
|
+
* On-Premises sunset on 2025-10-23). Each op maps to a single POST to
|
|
11
|
+
* `https://graph.facebook.com/v21.0/<phone_number_id>/messages` with
|
|
12
|
+
* a different `type` discriminator in the body.
|
|
13
|
+
*
|
|
14
|
+
* Phase 1 covers the ten ops that handle ~95% of business messaging.
|
|
15
|
+
* Phase 2 candidates (sendInteractiveButtons, sendInteractiveList,
|
|
16
|
+
* sendSticker, sendContacts) extend this list — bump the package and
|
|
17
|
+
* re-install in consumers, same pattern as Gmail / Calendar / Drive
|
|
18
|
+
* / Telegram.
|
|
19
|
+
*/
|
|
20
|
+
export const WHATSAPP_OPERATIONS = [
|
|
21
|
+
'sendText',
|
|
22
|
+
'sendImage',
|
|
23
|
+
'sendAudio',
|
|
24
|
+
'sendVideo',
|
|
25
|
+
'sendDocument',
|
|
26
|
+
'sendLocation',
|
|
27
|
+
'sendTemplate',
|
|
28
|
+
'replyToMessage',
|
|
29
|
+
'markAsRead',
|
|
30
|
+
'sendReaction',
|
|
31
|
+
];
|
|
32
|
+
/** Type guard — useful when validating untrusted input (DTOs, tool calls). */
|
|
33
|
+
export function isWhatsAppOperation(value) {
|
|
34
|
+
return (typeof value === 'string' &&
|
|
35
|
+
WHATSAPP_OPERATIONS.includes(value));
|
|
36
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,66 +1,68 @@
|
|
|
1
|
-
export type { NodeType, NodeRole, HandlePosition, NodeConnectionConfig, NodeUIConfig, NodeDispatchConfig, PrefixMapping, PayloadMeta, } from './types';
|
|
2
|
-
export { singleMeta, iterableMeta } from './types';
|
|
3
|
-
export { NODE_CONNECTIONS, canReceiveFrom, canReceiveFromNodes, canSendToNodes, isTerminal, isNodeType, ALL_NODE_TYPES, } from './connections';
|
|
4
|
-
export { NODE_UI, PREFIX_TO_TYPE, resolveNodeId, } from './ui';
|
|
5
|
-
export { NODE_DISPATCH, getAllNodeCollections, getNodeDispatchConfig, } from './dispatch';
|
|
6
|
-
export type { NodeRegistryEntry, NodeGroup, NodeVersionSpec, VersionCatalog, } from './registry';
|
|
7
|
-
export { NODE_REGISTRY, getNodeRegistryEntry, NODE_DETAIL_PATHS, NODE_COLORS, NODE_STATE_KEYS, PREFIX_TO_NODE_TYPE, NODE_TYPE_TO_PREFIX, } from './registry';
|
|
8
|
-
export { isVersioned, versionsOf, versionSpec, currentVersion, fieldsLostBetween, fieldsLost, versionCatalogErrors, } from './registry';
|
|
9
|
-
export { GMAIL_OPERATIONS, GMAIL_OPERATION_SPECS, GMAIL_OPERATION_GROUPS, GMAIL_DROPDOWN_OPERATIONS, GMAIL_TOOLKIT_OPERATIONS, GMAIL_TOOLKIT_SPECS, GMAIL_ALL_TOOLKIT_SPECS, GMAIL_SEND_AND_WAIT_TOOL_SPEC, NATIVE_EMAIL_TOOLKIT_SPECS, GMAIL_TOOLKIT_BY_TOOL_NAME, NATIVE_EMAIL_TOOLKIT_BY_TOOL_NAME, GMAIL_SEND_LEGACY_FIELDS, resolveGmailSendFields, isGmailOperation, } from './gmail-operations';
|
|
10
|
-
export type { GmailOperation, GmailOperationGroup, GmailParamType, GmailParamSpec, GmailOperationSpec, GmailToolkitParameter, GmailToolkitSpec, GmailSendFieldSource, GmailSendFields, } from './gmail-operations';
|
|
11
|
-
export { GOOGLE_CALENDAR_OPERATIONS, GOOGLE_CALENDAR_OPERATION_SPECS, isGoogleCalendarOperation, } from './calendar-operations';
|
|
12
|
-
export type { GoogleCalendarOperation, GoogleCalendarParamTarget, GoogleCalendarParamType, GoogleCalendarParamSpec, GoogleCalendarOperationSpec, } from './calendar-operations';
|
|
13
|
-
export { GOOGLE_CALENDAR_TOOLKIT_SPECS, GOOGLE_CALENDAR_TOOLKIT_BY_TOOL_NAME, } from './calendar-toolkit';
|
|
14
|
-
export type { GoogleCalendarToolkitSpec, GoogleCalendarToolkitParameter, } from './calendar-toolkit';
|
|
15
|
-
export { DRIVE_OPERATIONS, DRIVE_OPERATION_SPECS, isDriveOperation, } from './drive-operations';
|
|
16
|
-
export type { DriveOperation, DriveParamType, DriveParamSpec, DriveOperationSpec, } from './drive-operations';
|
|
17
|
-
export { DRIVE_TOOLKIT_SPECS, DRIVE_TOOLKIT_BY_TOOL_NAME, } from './drive-toolkit';
|
|
18
|
-
export type { DriveToolkitSpec, DriveToolkitParameter, } from './drive-toolkit';
|
|
19
|
-
export { TELEGRAM_OPERATIONS, TELEGRAM_OPERATION_SPECS, isTelegramOperation, } from './telegram-operations';
|
|
20
|
-
export type { TelegramOperation, TelegramParamSpec, TelegramOperationSpec, } from './telegram-operations';
|
|
21
|
-
export { TELEGRAM_TOOLKIT_SPECS, TELEGRAM_TOOLKIT_BY_TOOL_NAME, } from './telegram-toolkit';
|
|
22
|
-
export type { TelegramToolkitSpec, TelegramToolkitParameter, } from './telegram-toolkit';
|
|
23
|
-
export { WHATSAPP_OPERATIONS, isWhatsAppOperation, } from './whatsapp-operations';
|
|
24
|
-
export type { WhatsAppOperation } from './whatsapp-operations';
|
|
25
|
-
export { operacionesPara, puedeEjecutar, camposNoDisponiblesPara, } from './capacidad-de-credencial';
|
|
26
|
-
export type { CapacidadDeCredencial, CapacidadesPorCredencial, } from './capacidad-de-credencial';
|
|
27
|
-
export { DISCORD_OPERATIONS, DISCORD_OPERATION_SPECS, DISCORD_CAPACIDADES_POR_CREDENCIAL, operacionesDeDiscordPara, discordPuedeEjecutar, camposDeDiscordNoDisponibles, isDiscordOperation, } from './discord-operations';
|
|
28
|
-
export type { DiscordOperation, DiscordParamSpec, DiscordOperationSpec, } from './discord-operations';
|
|
29
|
-
export { DISCORD_TOOLKIT_SPECS, DISCORD_TOOLKIT_BY_TOOL_NAME, herramientasDeDiscordPara, } from './discord-toolkit';
|
|
30
|
-
export type { DiscordToolkitSpec, DiscordToolkitParameter, } from './discord-toolkit';
|
|
31
|
-
export { MAILCHIMP_OPERATIONS, MAILCHIMP_OPERATION_SPECS, MAILCHIMP_CONTACT_STATUSES, isMailchimpOperation, } from './mailchimp-operations';
|
|
32
|
-
export type { MailchimpOperation, MailchimpContactStatus, MailchimpParamSpec, MailchimpOperationSpec, } from './mailchimp-operations';
|
|
33
|
-
export { SHOPIFY_OPERATIONS, SHOPIFY_OPERATION_SPECS, SHOPIFY_TAGGABLE_RESOURCES, SHOPIFY_SEARCHABLE_RESOURCES, isShopifyOperation, } from './shopify-operations';
|
|
34
|
-
export type { ShopifyOperation, ShopifyTaggableResource, ShopifySearchableResource, ShopifyParamSpec, ShopifyOperationSpec, } from './shopify-operations';
|
|
35
|
-
export { GITHUB_OPERATIONS, GITHUB_OPERATION_SPECS, GITHUB_DROPDOWN_OPERATIONS, GITHUB_ITERABLE_OPERATIONS, isGithubOperation, } from './github-operations';
|
|
36
|
-
export type { GithubOperation, GithubParamType, GithubParamSpec, GithubOperationSpec, } from './github-operations';
|
|
37
|
-
export { JIRA_OPERATIONS, JIRA_OPERATION_SPECS, JIRA_DROPDOWN_OPERATIONS, JIRA_ITERABLE_OPERATIONS, isJiraOperation, } from './jira-operations';
|
|
38
|
-
export type { JiraOperation, JiraParamType, JiraParamSpec, JiraOperationSpec, } from './jira-operations';
|
|
39
|
-
export {
|
|
40
|
-
export type {
|
|
41
|
-
export {
|
|
42
|
-
export type {
|
|
43
|
-
export {
|
|
44
|
-
export type {
|
|
45
|
-
export {
|
|
46
|
-
export type {
|
|
47
|
-
export {
|
|
48
|
-
export type {
|
|
49
|
-
export {
|
|
50
|
-
export type {
|
|
51
|
-
export {
|
|
52
|
-
export type {
|
|
53
|
-
export {
|
|
54
|
-
export type {
|
|
55
|
-
export {
|
|
56
|
-
export type {
|
|
57
|
-
export {
|
|
58
|
-
export type {
|
|
59
|
-
export {
|
|
60
|
-
export type {
|
|
61
|
-
export
|
|
62
|
-
export {
|
|
63
|
-
export type {
|
|
64
|
-
export {
|
|
65
|
-
export type {
|
|
66
|
-
export {
|
|
1
|
+
export type { NodeType, NodeRole, HandlePosition, NodeConnectionConfig, NodeUIConfig, NodeDispatchConfig, PrefixMapping, PayloadMeta, } from './types.js';
|
|
2
|
+
export { singleMeta, iterableMeta } from './types.js';
|
|
3
|
+
export { NODE_CONNECTIONS, canReceiveFrom, canReceiveFromNodes, canSendToNodes, isTerminal, isNodeType, ALL_NODE_TYPES, } from './connections.js';
|
|
4
|
+
export { NODE_UI, PREFIX_TO_TYPE, resolveNodeId, } from './ui.js';
|
|
5
|
+
export { NODE_DISPATCH, getAllNodeCollections, getNodeDispatchConfig, } from './dispatch.js';
|
|
6
|
+
export type { NodeRegistryEntry, NodeGroup, NodeVersionSpec, VersionCatalog, } from './registry.js';
|
|
7
|
+
export { NODE_REGISTRY, getNodeRegistryEntry, NODE_DETAIL_PATHS, NODE_COLORS, NODE_STATE_KEYS, PREFIX_TO_NODE_TYPE, NODE_TYPE_TO_PREFIX, } from './registry.js';
|
|
8
|
+
export { isVersioned, versionsOf, versionSpec, currentVersion, fieldsLostBetween, fieldsLost, versionCatalogErrors, } from './registry.js';
|
|
9
|
+
export { GMAIL_OPERATIONS, GMAIL_OPERATION_SPECS, GMAIL_OPERATION_GROUPS, GMAIL_DROPDOWN_OPERATIONS, GMAIL_TOOLKIT_OPERATIONS, GMAIL_TOOLKIT_SPECS, GMAIL_ALL_TOOLKIT_SPECS, GMAIL_SEND_AND_WAIT_TOOL_SPEC, NATIVE_EMAIL_TOOLKIT_SPECS, GMAIL_TOOLKIT_BY_TOOL_NAME, NATIVE_EMAIL_TOOLKIT_BY_TOOL_NAME, GMAIL_SEND_LEGACY_FIELDS, resolveGmailSendFields, isGmailOperation, } from './gmail-operations.js';
|
|
10
|
+
export type { GmailOperation, GmailOperationGroup, GmailParamType, GmailParamSpec, GmailOperationSpec, GmailToolkitParameter, GmailToolkitSpec, GmailSendFieldSource, GmailSendFields, } from './gmail-operations.js';
|
|
11
|
+
export { GOOGLE_CALENDAR_OPERATIONS, GOOGLE_CALENDAR_OPERATION_SPECS, isGoogleCalendarOperation, } from './calendar-operations.js';
|
|
12
|
+
export type { GoogleCalendarOperation, GoogleCalendarParamTarget, GoogleCalendarParamType, GoogleCalendarParamSpec, GoogleCalendarOperationSpec, } from './calendar-operations.js';
|
|
13
|
+
export { GOOGLE_CALENDAR_TOOLKIT_SPECS, GOOGLE_CALENDAR_TOOLKIT_BY_TOOL_NAME, } from './calendar-toolkit.js';
|
|
14
|
+
export type { GoogleCalendarToolkitSpec, GoogleCalendarToolkitParameter, } from './calendar-toolkit.js';
|
|
15
|
+
export { DRIVE_OPERATIONS, DRIVE_OPERATION_SPECS, isDriveOperation, } from './drive-operations.js';
|
|
16
|
+
export type { DriveOperation, DriveParamType, DriveParamSpec, DriveOperationSpec, } from './drive-operations.js';
|
|
17
|
+
export { DRIVE_TOOLKIT_SPECS, DRIVE_TOOLKIT_BY_TOOL_NAME, } from './drive-toolkit.js';
|
|
18
|
+
export type { DriveToolkitSpec, DriveToolkitParameter, } from './drive-toolkit.js';
|
|
19
|
+
export { TELEGRAM_OPERATIONS, TELEGRAM_OPERATION_SPECS, isTelegramOperation, } from './telegram-operations.js';
|
|
20
|
+
export type { TelegramOperation, TelegramParamSpec, TelegramOperationSpec, } from './telegram-operations.js';
|
|
21
|
+
export { TELEGRAM_TOOLKIT_SPECS, TELEGRAM_TOOLKIT_BY_TOOL_NAME, } from './telegram-toolkit.js';
|
|
22
|
+
export type { TelegramToolkitSpec, TelegramToolkitParameter, } from './telegram-toolkit.js';
|
|
23
|
+
export { WHATSAPP_OPERATIONS, isWhatsAppOperation, } from './whatsapp-operations.js';
|
|
24
|
+
export type { WhatsAppOperation } from './whatsapp-operations.js';
|
|
25
|
+
export { operacionesPara, puedeEjecutar, camposNoDisponiblesPara, } from './capacidad-de-credencial.js';
|
|
26
|
+
export type { CapacidadDeCredencial, CapacidadesPorCredencial, } from './capacidad-de-credencial.js';
|
|
27
|
+
export { DISCORD_OPERATIONS, DISCORD_OPERATION_SPECS, DISCORD_CAPACIDADES_POR_CREDENCIAL, operacionesDeDiscordPara, discordPuedeEjecutar, camposDeDiscordNoDisponibles, isDiscordOperation, } from './discord-operations.js';
|
|
28
|
+
export type { DiscordOperation, DiscordParamSpec, DiscordOperationSpec, } from './discord-operations.js';
|
|
29
|
+
export { DISCORD_TOOLKIT_SPECS, DISCORD_TOOLKIT_BY_TOOL_NAME, herramientasDeDiscordPara, } from './discord-toolkit.js';
|
|
30
|
+
export type { DiscordToolkitSpec, DiscordToolkitParameter, } from './discord-toolkit.js';
|
|
31
|
+
export { MAILCHIMP_OPERATIONS, MAILCHIMP_OPERATION_SPECS, MAILCHIMP_CONTACT_STATUSES, isMailchimpOperation, } from './mailchimp-operations.js';
|
|
32
|
+
export type { MailchimpOperation, MailchimpContactStatus, MailchimpParamSpec, MailchimpOperationSpec, } from './mailchimp-operations.js';
|
|
33
|
+
export { SHOPIFY_OPERATIONS, SHOPIFY_OPERATION_SPECS, SHOPIFY_TAGGABLE_RESOURCES, SHOPIFY_SEARCHABLE_RESOURCES, isShopifyOperation, } from './shopify-operations.js';
|
|
34
|
+
export type { ShopifyOperation, ShopifyTaggableResource, ShopifySearchableResource, ShopifyParamSpec, ShopifyOperationSpec, } from './shopify-operations.js';
|
|
35
|
+
export { GITHUB_OPERATIONS, GITHUB_OPERATION_SPECS, GITHUB_DROPDOWN_OPERATIONS, GITHUB_ITERABLE_OPERATIONS, isGithubOperation, } from './github-operations.js';
|
|
36
|
+
export type { GithubOperation, GithubParamType, GithubParamSpec, GithubOperationSpec, } from './github-operations.js';
|
|
37
|
+
export { JIRA_OPERATIONS, JIRA_OPERATION_SPECS, JIRA_DROPDOWN_OPERATIONS, JIRA_ITERABLE_OPERATIONS, isJiraOperation, } from './jira-operations.js';
|
|
38
|
+
export type { JiraOperation, JiraParamType, JiraParamSpec, JiraOperationSpec, } from './jira-operations.js';
|
|
39
|
+
export { BUCKET_OPERATIONS, BUCKET_OPERATION_SPECS, BUCKET_ITERABLE_OPERATIONS, isBucketOperation, } from './bucket-operations.js';
|
|
40
|
+
export type { BucketOperation, BucketParamType, BucketParamSpec, BucketOperationSpec, } from './bucket-operations.js';
|
|
41
|
+
export { SLACK_OPERATIONS, SLACK_OPERATION_SPECS, SLACK_CAPACIDADES_POR_CREDENCIAL, operacionesDeSlackPara, slackPuedeEjecutar, camposDeSlackNoDisponibles, isSlackOperation, } from './slack-operations.js';
|
|
42
|
+
export type { SlackOperation, SlackParamSpec, SlackOperationSpec, } from './slack-operations.js';
|
|
43
|
+
export { SLACK_TOOLKIT_SPECS, SLACK_TOOLKIT_BY_TOOL_NAME, herramientasDeSlackPara, } from './slack-toolkit.js';
|
|
44
|
+
export type { SlackToolkitSpec, SlackToolkitParameter, } from './slack-toolkit.js';
|
|
45
|
+
export { SHEETS_OPERATIONS, SHEETS_OPERATION_SPECS, isSheetsOperation, } from './sheets-operations.js';
|
|
46
|
+
export type { SheetsOperation, SheetsParamSpec, SheetsOperationSpec, } from './sheets-operations.js';
|
|
47
|
+
export { SHEETS_TOOLKIT_SPECS, SHEETS_TOOLKIT_BY_TOOL_NAME, SHEETS_TOOLKIT_DEFAULTABLE, } from './sheets-toolkit.js';
|
|
48
|
+
export type { SheetsToolkitSpec, SheetsToolkitParameter, } from './sheets-toolkit.js';
|
|
49
|
+
export { GOOGLE_CONTACTS_OPERATIONS, GOOGLE_CONTACTS_OPERATIONS_V1, GOOGLE_CONTACTS_OPERATIONS_V2, GOOGLE_CONTACTS_OPERATION_SPECS, GOOGLE_CONTACTS_OPERATION_GROUPS, GOOGLE_CONTACTS_DEFAULT_PERSON_FIELDS, isGoogleContactsOperation, } from './google-contacts-operations.js';
|
|
50
|
+
export type { GoogleContactsOperation, GoogleContactsParamSpec, GoogleContactsOperationSpec, GoogleContactsOperationGroup, } from './google-contacts-operations.js';
|
|
51
|
+
export { GOOGLE_ANALYTICS_OPERATIONS, GOOGLE_ANALYTICS_OPERATION_SPECS, GOOGLE_ANALYTICS_DROPDOWN_OPERATIONS, isGoogleAnalyticsOperation, } from './google-analytics-operations.js';
|
|
52
|
+
export type { GoogleAnalyticsOperation, GoogleAnalyticsParamType, GoogleAnalyticsParamSpec, GoogleAnalyticsOperationSpec, } from './google-analytics-operations.js';
|
|
53
|
+
export { NOTION_OPERATIONS, NOTION_OPERATION_SPECS, NOTION_DROPDOWN_OPERATIONS, isNotionOperation, } from './notion-operations.js';
|
|
54
|
+
export type { NotionOperation, NotionParamType, NotionParamSpec, NotionOperationSpec, } from './notion-operations.js';
|
|
55
|
+
export { POSTGRES_OPERATIONS, POSTGRES_MODES, POSTGRES_OPERATION_SPECS, isPostgresOperation, } from './postgres-operations.js';
|
|
56
|
+
export type { PostgresOperation, PostgresMode, PostgresOperationSpec, } from './postgres-operations.js';
|
|
57
|
+
export { MONGO_OPERATIONS, MONGO_OPERATION_SPECS, isMongoOperation, } from './mongo-operations.js';
|
|
58
|
+
export type { MongoOperation, MongoParamType, MongoParamSpec, MongoOperationSpec, } from './mongo-operations.js';
|
|
59
|
+
export { DOCS_OPERATIONS, DOCS_OPERATION_SPECS, isDocsOperation, } from './docs-operations.js';
|
|
60
|
+
export type { DocsOperation, DocsParamType, DocsParamSlot, DocsParamSpec, DocsOperationSpec, } from './docs-operations.js';
|
|
61
|
+
export { DOCS_TOOLKIT_SPECS, DOCS_TOOLKIT_BY_TOOL_NAME, DOCS_TOOLKIT_DEFAULTABLE, } from './docs-toolkit.js';
|
|
62
|
+
export type { DocsToolkitSpec, DocsToolkitParameter, } from './docs-toolkit.js';
|
|
63
|
+
export type { LlmProvider, LlmProviderOption, LlmModelOption, } from './llm-models.js';
|
|
64
|
+
export { LLM_PROVIDERS, LLM_MODELS, MODEL_CONTEXT_WINDOWS, getModelsFor, getDefaultModel, getModelLabel, } from './llm-models.js';
|
|
65
|
+
export type { ModeloDeOpenRouter, PrecioDeOpenRouter, RespuestaDeModelosDeOpenRouter, } from './openrouter.js';
|
|
66
|
+
export { URL_DE_MODELOS_DE_OPENROUTER, opcionesDeModelosDeOpenRouter, ventanaDeContextoDeOpenRouter, } from './openrouter.js';
|
|
67
|
+
export type { CredentialTypeRegistration, CredentialType } from './credentials.js';
|
|
68
|
+
export { CREDENTIAL_TYPES, CREDENTIAL_TYPE_VALUES, credentialTypeValues, getCredentialType, isCredentialType, } from './credentials.js';
|