@uipath/maestro-builder-sdk 6.18.10 → 6.20.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/api-index.md +185 -184
- package/dist/api-members.md +506 -473
- package/dist/check.js +358 -695
- package/dist/cli/commands/flow.js +3 -0
- package/dist/compile-cli.js +51 -0
- package/dist/core/actions.d.ts +132 -765
- package/dist/core/actions.js +1 -307
- package/dist/core/binding-identity.d.ts +22 -0
- package/dist/core/binding-identity.js +28 -0
- package/dist/core/context-index.d.ts +34 -0
- package/dist/core/context-index.js +38 -0
- package/dist/core/definitionless-node-types.d.ts +16 -0
- package/dist/core/definitionless-node-types.js +16 -0
- package/dist/core/error-port.d.ts +6 -0
- package/dist/core/error-port.js +9 -0
- package/dist/core/form-field-type.d.ts +33 -0
- package/dist/core/form-field-type.js +30 -0
- package/dist/core/hitl-routing.d.ts +8 -0
- package/dist/core/hitl-routing.js +17 -1
- package/dist/core/node-classes.d.ts +4 -63
- package/dist/core/node-classes.js +0 -112
- package/dist/core/nodes/family.d.ts +36 -0
- package/dist/core/nodes/family.js +1 -0
- package/dist/core/nodes/node-type.d.ts +136 -0
- package/dist/core/nodes/node-type.js +1 -0
- package/dist/core/nodes/registry.d.ts +57 -0
- package/dist/core/nodes/registry.js +122 -0
- package/dist/core/nodes/versioned.d.ts +50 -0
- package/dist/core/nodes/versioned.js +46 -0
- package/dist/core/process-resource-sort-order.d.ts +40 -0
- package/dist/core/process-resource-sort-order.js +44 -0
- package/dist/core/typed-raw-node.d.ts +13 -62
- package/dist/core/typed-raw-node.js +40 -154
- package/dist/core/wire-expr.d.ts +27 -0
- package/dist/core/wire-expr.js +34 -0
- package/dist/decompile-cli.js +11 -1
- package/dist/decompile.d.ts +8 -3
- package/dist/decompile.js +665 -354
- package/dist/flow-definitions.d.ts +10 -0
- package/dist/flow-definitions.js +35 -0
- package/dist/flow-expr-check.js +1 -1
- package/dist/flow-node-registry.d.ts +13 -0
- package/dist/flow-node-registry.js +19 -0
- package/dist/flow-node-type.d.ts +192 -0
- package/dist/flow-node-type.js +1 -0
- package/dist/flow-sdk.d.ts +40 -1
- package/dist/flow-sdk.js +29 -2
- package/dist/flow-step-tree.js +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +1 -0
- package/dist/merge-cli.js +25 -8
- package/dist/merge-roundtrip.d.ts +81 -0
- package/dist/merge-roundtrip.js +404 -0
- package/dist/merge.d.ts +35 -6
- package/dist/merge.js +124 -24
- package/dist/node-placement.d.ts +93 -0
- package/dist/node-placement.js +163 -0
- package/dist/nodes/data-fabric/flow/check.d.ts +13 -0
- package/dist/nodes/data-fabric/flow/check.js +164 -0
- package/dist/nodes/data-fabric/flow/factories.d.ts +113 -0
- package/dist/nodes/data-fabric/flow/factories.js +134 -0
- package/dist/nodes/data-fabric/flow/family.d.ts +7 -0
- package/dist/nodes/data-fabric/flow/family.js +9 -0
- package/dist/nodes/data-fabric/flow/index.d.ts +8 -0
- package/dist/nodes/data-fabric/flow/index.js +8 -0
- package/dist/nodes/data-fabric/flow/raw.d.ts +32 -0
- package/dist/nodes/data-fabric/flow/raw.js +100 -0
- package/dist/nodes/data-fabric/flow/shared.d.ts +77 -0
- package/dist/nodes/data-fabric/flow/shared.js +174 -0
- package/dist/nodes/data-fabric/flow/spec.d.ts +238 -0
- package/dist/nodes/data-fabric/flow/spec.js +1 -0
- package/dist/nodes/data-fabric/flow/verbs.d.ts +29 -0
- package/dist/nodes/data-fabric/flow/verbs.js +239 -0
- package/dist/nodes/delay/flow/check.d.ts +16 -0
- package/dist/nodes/delay/flow/check.js +86 -0
- package/dist/nodes/delay/flow/factories.d.ts +28 -0
- package/dist/nodes/delay/flow/factories.js +38 -0
- package/dist/nodes/delay/flow/family.d.ts +3 -0
- package/dist/nodes/delay/flow/family.js +8 -0
- package/dist/nodes/delay/flow/index.d.ts +3 -0
- package/dist/nodes/delay/flow/index.js +3 -0
- package/dist/nodes/delay/flow/node-type.d.ts +13 -0
- package/dist/nodes/delay/flow/node-type.js +71 -0
- package/dist/nodes/delay/flow/spec.d.ts +43 -0
- package/dist/nodes/delay/flow/spec.js +16 -0
- package/dist/nodes/document/flow/factories.d.ts +27 -0
- package/dist/nodes/document/flow/factories.js +30 -0
- package/dist/nodes/document/flow/family.d.ts +3 -0
- package/dist/nodes/document/flow/family.js +7 -0
- package/dist/nodes/document/flow/index.d.ts +3 -0
- package/dist/nodes/document/flow/index.js +3 -0
- package/dist/nodes/document/flow/node-type.d.ts +14 -0
- package/dist/nodes/document/flow/node-type.js +150 -0
- package/dist/nodes/document/flow/spec.d.ts +65 -0
- package/dist/nodes/document/flow/spec.js +1 -0
- package/dist/nodes/mock/flow/factories.d.ts +51 -0
- package/dist/nodes/mock/flow/factories.js +47 -0
- package/dist/nodes/mock/flow/family.d.ts +3 -0
- package/dist/nodes/mock/flow/family.js +7 -0
- package/dist/nodes/mock/flow/index.d.ts +2 -0
- package/dist/nodes/mock/flow/index.js +2 -0
- package/dist/nodes/mock/flow/node-type.d.ts +11 -0
- package/dist/nodes/mock/flow/node-type.js +51 -0
- package/dist/nodes/script/flow/check.d.ts +19 -0
- package/dist/nodes/script/flow/check.js +49 -0
- package/dist/nodes/script/flow/factories.d.ts +14 -0
- package/dist/nodes/script/flow/factories.js +15 -0
- package/dist/nodes/script/flow/family.d.ts +3 -0
- package/dist/nodes/script/flow/family.js +8 -0
- package/dist/nodes/script/flow/index.d.ts +3 -0
- package/dist/nodes/script/flow/index.js +3 -0
- package/dist/nodes/script/flow/node-type.d.ts +7 -0
- package/dist/nodes/script/flow/node-type.js +125 -0
- package/dist/nodes/script/flow/spec.d.ts +52 -0
- package/dist/nodes/script/flow/spec.js +1 -0
- package/dist/nodes/transform/flow/check.d.ts +6 -0
- package/dist/nodes/transform/flow/check.js +229 -0
- package/dist/nodes/transform/flow/factories.d.ts +52 -0
- package/dist/nodes/transform/flow/factories.js +53 -0
- package/dist/nodes/transform/flow/family.d.ts +3 -0
- package/dist/nodes/transform/flow/family.js +8 -0
- package/dist/nodes/transform/flow/index.d.ts +3 -0
- package/dist/nodes/transform/flow/index.js +3 -0
- package/dist/nodes/transform/flow/node-type.d.ts +7 -0
- package/dist/nodes/transform/flow/node-type.js +245 -0
- package/dist/nodes/transform/flow/spec.d.ts +116 -0
- package/dist/nodes/transform/flow/spec.js +10 -0
- package/dist/raw-node-advice.d.ts +16 -0
- package/dist/raw-node-advice.js +36 -0
- package/dist/raw-node.d.ts +71 -0
- package/dist/raw-node.js +116 -0
- package/dist/registry/uip/pipeline-front-door.js +5 -3
- package/dist/serialize.js +246 -549
- package/package.json +2 -2
package/dist/core/actions.d.ts
CHANGED
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
import type { Expr } from './expr.js';
|
|
11
11
|
import type { LookupToken } from './lookups.js';
|
|
12
12
|
import { type ConnectorDescriptor, type TriggerDescriptor } from './connectors.js';
|
|
13
|
-
import type { ScriptReturns } from './script-return.js';
|
|
14
13
|
/** One conditional response branch on an HTTP node — a designer-visible side exit. */
|
|
15
14
|
export interface HttpBranch {
|
|
16
15
|
/**
|
|
@@ -146,44 +145,6 @@ export type HttpInputs = HttpInputsBase & ({
|
|
|
146
145
|
*/
|
|
147
146
|
targetConnector?: string;
|
|
148
147
|
});
|
|
149
|
-
export interface ScriptInputs {
|
|
150
|
-
/** JavaScript body. Must `return` its result. Referenced via out('<step>'). */
|
|
151
|
-
code: string;
|
|
152
|
-
/**
|
|
153
|
-
* What the body RETURNS — the type of `out('<step>')`.
|
|
154
|
-
*
|
|
155
|
-
* The platform's definition can only say `output: {type: 'object'}` (a node
|
|
156
|
-
* type cannot know what a particular body returns), so the designer types
|
|
157
|
-
* every script read as `Record<string, any>` and reports mapping one into a
|
|
158
|
-
* `string` output as `Type 'Record<string, any>' is not assignable to type
|
|
159
|
-
* 'string'` — on a flow that is correct and runs.
|
|
160
|
-
*
|
|
161
|
-
* **Usually you do not need this.** The compiler reads the body and declares
|
|
162
|
-
* what it plainly returns, so `return "pending-approval"` is already a
|
|
163
|
-
* `string`. Reach for `returns` when the body does not say so syntactically —
|
|
164
|
-
* a value that comes back from a runtime read, or an object assembled
|
|
165
|
-
* dynamically:
|
|
166
|
-
*
|
|
167
|
-
* ```ts
|
|
168
|
-
* .step('policyLimit', script({
|
|
169
|
-
* code: 'return $vars.fetchPolicy.output.body.limit;',
|
|
170
|
-
* returns: 'number',
|
|
171
|
-
* }))
|
|
172
|
-
* ```
|
|
173
|
-
*
|
|
174
|
-
* For an object return, name the FIELDS instead — the spelling every other
|
|
175
|
-
* action's `returns` uses, and what licenses `out('<step>', '<field>')`:
|
|
176
|
-
*
|
|
177
|
-
* ```ts
|
|
178
|
-
* returns: { total: 'number', currency: 'string' }
|
|
179
|
-
* ```
|
|
180
|
-
*
|
|
181
|
-
* An explicit `returns` always wins over what the body looks like. Nothing is
|
|
182
|
-
* inferred when the body does not plainly agree with itself, and an unknown
|
|
183
|
-
* shape stays the definition's open object rather than being guessed at.
|
|
184
|
-
*/
|
|
185
|
-
returns?: ScriptReturns;
|
|
186
|
-
}
|
|
187
148
|
export interface ConnectorOpts {
|
|
188
149
|
/** Connector action version (defaults to the library's newest match). */
|
|
189
150
|
version?: string;
|
|
@@ -228,111 +189,10 @@ export interface ConnectorOpts {
|
|
|
228
189
|
*/
|
|
229
190
|
object?: string;
|
|
230
191
|
}
|
|
231
|
-
/** How a filter combines its rules: every rule must match, or any one. */
|
|
232
|
-
export type FilterMatch = 'and' | 'or';
|
|
233
|
-
/** Comparison a filter rule applies to a field. */
|
|
234
|
-
export type FilterCondition = 'equals' | 'not_equals' | 'greater_than' | 'less_than' | 'greater_equal' | 'less_equal' | 'contains' | 'not_contains' | 'starts_with' | 'not_starts_with' | 'ends_with' | 'not_ends_with' | 'matches_regex' | 'in' | 'not_in' | 'is_null' | 'is_not_null' | 'is_empty' | 'is_not_empty';
|
|
235
|
-
export interface FilterRule {
|
|
236
|
-
/** Field on each item. Dot-paths reach nested fields (`'order.amount'`). */
|
|
237
|
-
field: string;
|
|
238
|
-
condition: FilterCondition;
|
|
239
|
-
/**
|
|
240
|
-
* What to compare against — a LITERAL only. The transform runtime reads this
|
|
241
|
-
* value as-is and evaluates nothing, so an expression here would compare every
|
|
242
|
-
* item against that text and match nothing. Hence `Expr` is not accepted: for
|
|
243
|
-
* a dynamic threshold, filter in a `script` step instead.
|
|
244
|
-
* Omit for the value-free conditions (`is_null`, `is_empty`, …).
|
|
245
|
-
*/
|
|
246
|
-
value?: string | number | boolean | null;
|
|
247
|
-
}
|
|
248
|
-
/** What a map does to a field's value. Only `copy` is meaningful for non-text. */
|
|
249
|
-
export type Transformation = 'copy' | 'uppercase' | 'lowercase' | 'trim';
|
|
250
|
-
export interface FieldMapping {
|
|
251
|
-
/** Field to carry into the output. Must exist on the item, or it is skipped. */
|
|
252
|
-
field: string;
|
|
253
|
-
/** Defaults to `'copy'` (the value unchanged). */
|
|
254
|
-
transformation?: Transformation;
|
|
255
|
-
/** Output field name. Omit to keep `field`'s own name. */
|
|
256
|
-
renameTo?: string;
|
|
257
|
-
}
|
|
258
|
-
export type AggregationOperation = 'count' | 'sum' | 'average' | 'min' | 'max' | 'first' | 'last' | 'collect';
|
|
259
|
-
export interface Aggregation {
|
|
260
|
-
operation: AggregationOperation;
|
|
261
|
-
/** Output field name for the aggregate. Required. */
|
|
262
|
-
alias: string;
|
|
263
|
-
/** Field to aggregate. Required for every operation except `count`. */
|
|
264
|
-
field?: string;
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* One link in the chain. Operations run in the order given, and each one's
|
|
268
|
-
* result is the next one's input — so a `map` that drops a field puts it out of
|
|
269
|
-
* reach of a later `filter`.
|
|
270
|
-
*/
|
|
271
|
-
export type TransformOperation = {
|
|
272
|
-
type: 'filter';
|
|
273
|
-
filters: FilterRule[];
|
|
274
|
-
operation?: FilterMatch;
|
|
275
|
-
} | {
|
|
276
|
-
type: 'map';
|
|
277
|
-
mappings: FieldMapping[];
|
|
278
|
-
keepOriginalFields?: boolean;
|
|
279
|
-
} | {
|
|
280
|
-
type: 'groupBy';
|
|
281
|
-
groupByField: string;
|
|
282
|
-
aggregations?: Aggregation[];
|
|
283
|
-
};
|
|
284
|
-
/**
|
|
285
|
-
* Which Transform node type to emit.
|
|
286
|
-
*
|
|
287
|
-
* @remarks
|
|
288
|
-
* The platform ships four: the generic `core.action.transform`, which chains N
|
|
289
|
-
* operations, plus three single-purpose variants that each run exactly one.
|
|
290
|
-
* They share ONE runtime — flow-v1 routes all four node types through the same
|
|
291
|
-
* script generators and dispatches on the OPERATION's `type`, never the node's
|
|
292
|
-
* (`bpmn-to-xml.ts`'s `DATA_TRANSFORM_NODE_TYPES` / `generateDataTransformScript`).
|
|
293
|
-
* So a variant is the generic constrained to one operation, wearing a
|
|
294
|
-
* self-describing node type and its own editor in the designer.
|
|
295
|
-
*
|
|
296
|
-
* Note the spelling: the node type is `core.action.transform.group-by`
|
|
297
|
-
* (hyphen), while the operation it carries is `type: 'groupBy'` (camelCase) —
|
|
298
|
-
* that mismatch is the platform's, not ours.
|
|
299
|
-
*/
|
|
300
|
-
export type TransformVariant = 'map' | 'filter' | 'group-by';
|
|
301
|
-
/**
|
|
302
|
-
* The operation `type` each variant node must carry — one of, and only.
|
|
303
|
-
*
|
|
304
|
-
* @internal Serializer plumbing; an author states the variant, not the mapping.
|
|
305
|
-
*/
|
|
306
|
-
export declare const VARIANT_OPERATION: Record<TransformVariant, TransformOperation['type']>;
|
|
307
|
-
export interface TransformInputs {
|
|
308
|
-
/**
|
|
309
|
-
* The array to transform, as a REFERENCE: `v('catalog')` or
|
|
310
|
-
* `out('fetchOrders', 'body.items')`.
|
|
311
|
-
*
|
|
312
|
-
* This is a variable PATH, not a value field — the runtime turns the string
|
|
313
|
-
* into a lookup. An inline array or a computed `js` expression therefore
|
|
314
|
-
* resolves to nothing, which is why the type is `Expr` and `check` rejects
|
|
315
|
-
* anything that is not a bare `$vars.…` path. Keep static data in a
|
|
316
|
-
* `.var(name, types.array, [...])` default and point here.
|
|
317
|
-
*/
|
|
318
|
-
collection: Expr;
|
|
319
|
-
/**
|
|
320
|
-
* Emit a single-purpose variant node instead of the generic Transform.
|
|
321
|
-
* Omit it for the generic (the default).
|
|
322
|
-
*
|
|
323
|
-
* With a variant, `operations` must hold exactly ONE operation of the
|
|
324
|
-
* matching type — `'filter'` → `type: 'filter'`, `'map'` → `type: 'map'`,
|
|
325
|
-
* `'group-by'` → `type: 'groupBy'`. `check` rejects anything else, naming
|
|
326
|
-
* both the variant and the operation it found.
|
|
327
|
-
*/
|
|
328
|
-
variant?: TransformVariant;
|
|
329
|
-
/** At least one operation — an empty chain is a no-op node. */
|
|
330
|
-
operations: TransformOperation[];
|
|
331
|
-
}
|
|
332
192
|
/**
|
|
333
|
-
* A form field's type.
|
|
334
|
-
*
|
|
335
|
-
*
|
|
193
|
+
* A form field's type. The platform does not recognize a type outside this set:
|
|
194
|
+
* older runtimes read it as text (so a number field becomes a text box), newer
|
|
195
|
+
* ones reject the form. That is why `check` rejects anything outside this set.
|
|
336
196
|
*/
|
|
337
197
|
export type FormFieldType = 'text' | 'number' | 'boolean' | 'date-time';
|
|
338
198
|
/** A value the reviewer READS: shown on the form, filled in from the flow. */
|
|
@@ -470,12 +330,20 @@ export interface DocValidationInputs {
|
|
|
470
330
|
* rather than continuing (the platform's own two-value vocabulary — anything
|
|
471
331
|
* that is not exactly `'End'` reads as continue).
|
|
472
332
|
*
|
|
333
|
+
* `id` is the outcome's wire id — `schema.outcomes[].id`, and the `outcome-<id>`
|
|
334
|
+
* port its edge leaves from. Leave it out and the id is a slug of `name`
|
|
335
|
+
* (`'Needs info'` → `needs-info`). Set it only to keep an id a flow already
|
|
336
|
+
* has, as decompile does for a task the designer drew
|
|
337
|
+
* (`{ name: 'Reject', id: 'outcome-1778015958049' }`): merge keeps the
|
|
338
|
+
* original node, so its edges must use that node's ids.
|
|
339
|
+
*
|
|
473
340
|
* @remarks
|
|
474
341
|
* A bare string is shorthand for `{ name }`.
|
|
475
342
|
*/
|
|
476
343
|
export type Outcome = string | {
|
|
477
344
|
name: string;
|
|
478
345
|
action?: 'Continue' | 'End';
|
|
346
|
+
id?: string;
|
|
479
347
|
};
|
|
480
348
|
/**
|
|
481
349
|
* WHICH human-task node type to emit. The platform ships three spellings of the
|
|
@@ -951,36 +819,6 @@ export interface IxpExtractInputs {
|
|
|
951
819
|
*/
|
|
952
820
|
description?: string;
|
|
953
821
|
}
|
|
954
|
-
/**
|
|
955
|
-
* The twelve durations the designer's dropdown offers. Purely an ENCODING
|
|
956
|
-
* detail: a duration in this list ships as `timerPreset: '<duration>'` and any
|
|
957
|
-
* other ships as `timerPreset: 'custom'` + `timerValue: '<duration>'`. Both
|
|
958
|
-
* deploy and both wait the same length of time — the author never picks.
|
|
959
|
-
* `core-definitions.test.ts` pins this list against the definition's own form.
|
|
960
|
-
*/
|
|
961
|
-
export declare const DELAY_PRESETS: readonly ["PT5S", "PT15S", "PT30S", "PT1M", "PT5M", "PT15M", "PT30M", "PT1H", "PT6H", "PT12H", "P1D", "P1W"];
|
|
962
|
-
export type DelayInputs = {
|
|
963
|
-
/**
|
|
964
|
-
* How long to wait, as an ISO-8601 duration: `PT30S`, `PT15M`, `PT2H`,
|
|
965
|
-
* `P1D`, `P1W`. `PT` separates the time part, so `P1M` is a MONTH and
|
|
966
|
-
* `PT1M` is a minute.
|
|
967
|
-
* ISO-8601 duration format documentation is here:
|
|
968
|
-
* {@link https://docs.digi.com/resources/documentation/digidocs/90001488-13/reference/r_iso_8601_duration_format.htm}
|
|
969
|
-
*/
|
|
970
|
-
duration: string;
|
|
971
|
-
/** Impossible together with `duration` — a delay waits one way or the other. */
|
|
972
|
-
until?: never;
|
|
973
|
-
} | {
|
|
974
|
-
/**
|
|
975
|
-
* Wait until an ABSOLUTE date-time, ISO-8601: `2026-09-01T09:00:00Z` or
|
|
976
|
-
* `2026-09-01T09:00:00+02:00`. The platform's timeDate timer: the run
|
|
977
|
-
* parks until the wall clock reaches this moment (already-past dates
|
|
978
|
-
* fire immediately).
|
|
979
|
-
*/
|
|
980
|
-
until: string;
|
|
981
|
-
/** Impossible together with `until` — a delay waits one way or the other. */
|
|
982
|
-
duration?: never;
|
|
983
|
-
};
|
|
984
822
|
/**
|
|
985
823
|
* Where a process resource lives: deployed to an Orchestrator folder
|
|
986
824
|
* (`'published'`, the default) or a sibling project of the SAME solution
|
|
@@ -1302,7 +1140,7 @@ export interface AgentInputs {
|
|
|
1302
1140
|
*
|
|
1303
1141
|
* **Display-only, and it is the only thing that differs.** `registry get` on a
|
|
1304
1142
|
* coded and a low-code agent returns the same node type, the same
|
|
1305
|
-
* `Orchestrator.StartAgentJob` service type, the same `sortOrder
|
|
1143
|
+
* `Orchestrator.StartAgentJob` service type, the same `sortOrder` and the
|
|
1306
1144
|
* same bindings shape; the single difference is `display.icon` —
|
|
1307
1145
|
* `coded-agent` vs `autonomous-agent`. Which one a given resource is cannot be
|
|
1308
1146
|
* known offline, so it is stated here rather than guessed. Check with
|
|
@@ -2155,361 +1993,131 @@ export interface QueueItemInputs {
|
|
|
2155
1993
|
returns?: Record<string, ReturnFieldType>;
|
|
2156
1994
|
}
|
|
2157
1995
|
/**
|
|
2158
|
-
*
|
|
2159
|
-
*
|
|
1996
|
+
* Every action kind, keyed by kind, to the body of its spec — the arm's fields
|
|
1997
|
+
* other than `kind`. {@link ActionSpec} is built from it.
|
|
2160
1998
|
*
|
|
2161
1999
|
* @remarks
|
|
2162
|
-
*
|
|
2163
|
-
*
|
|
2164
|
-
*
|
|
2165
|
-
*
|
|
2166
|
-
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
|
|
2170
|
-
|
|
2171
|
-
|
|
2172
|
-
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
/**
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
|
|
2181
|
-
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
|
|
2195
|
-
|
|
2196
|
-
|
|
2197
|
-
|
|
2198
|
-
|
|
2199
|
-
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2000
|
+
* An interface, not a closed union, so a node family can add its kinds where it
|
|
2001
|
+
* is defined, by declaration merging, instead of editing this file
|
|
2002
|
+
* (docs/NODE_TYPE_ARCHITECTURE_DESIGN.md §4.6). Most bodies are `{ inputs }`;
|
|
2003
|
+
* `mock`, `connector` and `waitEvent` are not, which is why the value is the
|
|
2004
|
+
* whole body rather than an inputs payload.
|
|
2005
|
+
*/
|
|
2006
|
+
export interface FlowActionSpecs {
|
|
2007
|
+
/** The spec {@link http} builds. */
|
|
2008
|
+
http: {
|
|
2009
|
+
inputs: HttpInputs;
|
|
2010
|
+
};
|
|
2011
|
+
/** The spec {@link hitl} builds. */
|
|
2012
|
+
hitl: {
|
|
2013
|
+
inputs: HitlInputs;
|
|
2014
|
+
};
|
|
2015
|
+
/** The spec {@link rpaWorkflow} builds. */
|
|
2016
|
+
rpaWorkflow: {
|
|
2017
|
+
inputs: RpaWorkflowInputs;
|
|
2018
|
+
};
|
|
2019
|
+
/** The spec {@link apiWorkflow} builds. */
|
|
2020
|
+
apiWorkflow: {
|
|
2021
|
+
inputs: ApiWorkflowInputs;
|
|
2022
|
+
};
|
|
2023
|
+
/** The spec {@link publishedFunction} builds. */
|
|
2024
|
+
publishedFunction: {
|
|
2025
|
+
inputs: PublishedFunctionInputs;
|
|
2026
|
+
};
|
|
2027
|
+
/** The spec {@link sendMessage} builds. */
|
|
2028
|
+
sendMessage: {
|
|
2029
|
+
inputs: SendMessageInputs;
|
|
2030
|
+
};
|
|
2031
|
+
/** The spec {@link waitForMessage} builds. */
|
|
2032
|
+
waitForMessage: {
|
|
2033
|
+
inputs: WaitForMessageInputs;
|
|
2034
|
+
};
|
|
2035
|
+
/** The spec {@link conversationContext} builds. */
|
|
2036
|
+
conversationContext: {
|
|
2037
|
+
inputs: ConversationContextInputs;
|
|
2038
|
+
};
|
|
2039
|
+
/** The spec {@link createOutgoingCall} builds. */
|
|
2040
|
+
createOutgoingCall: {
|
|
2041
|
+
inputs: CreateOutgoingCallInputs;
|
|
2042
|
+
};
|
|
2043
|
+
/** The spec {@link endCall} builds. */
|
|
2044
|
+
endCall: {
|
|
2045
|
+
inputs: EndCallInputs;
|
|
2046
|
+
};
|
|
2047
|
+
/** The spec {@link voiceAgent} builds. */
|
|
2048
|
+
voiceAgent: {
|
|
2049
|
+
inputs: VoiceAgentInputs;
|
|
2050
|
+
};
|
|
2051
|
+
/** The spec {@link conversationalAgent} builds. */
|
|
2052
|
+
conversationalAgent: {
|
|
2053
|
+
inputs: ConversationalAgentInputs;
|
|
2054
|
+
};
|
|
2055
|
+
/** The spec {@link agenticProcess} builds. */
|
|
2056
|
+
agenticProcess: {
|
|
2057
|
+
inputs: AgenticProcessInputs;
|
|
2058
|
+
};
|
|
2059
|
+
/** The spec {@link agent} builds. */
|
|
2060
|
+
agent: {
|
|
2061
|
+
inputs: AgentInputs;
|
|
2062
|
+
};
|
|
2063
|
+
/** The spec {@link inlineAgent} builds. */
|
|
2064
|
+
inlineAgent: {
|
|
2065
|
+
inputs: InlineAgentInputs;
|
|
2066
|
+
};
|
|
2067
|
+
/** The spec {@link queueItem} builds. */
|
|
2068
|
+
queueItem: {
|
|
2069
|
+
inputs: QueueItemInputs;
|
|
2070
|
+
};
|
|
2071
|
+
/** The spec {@link summarize} builds. */
|
|
2072
|
+
summarize: {
|
|
2073
|
+
inputs: SummarizeInputs;
|
|
2074
|
+
};
|
|
2075
|
+
/** The spec {@link batchTransform} builds. */
|
|
2076
|
+
batchTransform: {
|
|
2077
|
+
inputs: BatchTransformInputs;
|
|
2078
|
+
};
|
|
2079
|
+
/** The spec {@link ixpExtract} builds. */
|
|
2080
|
+
ixpExtract: {
|
|
2081
|
+
inputs: IxpExtractInputs;
|
|
2082
|
+
};
|
|
2083
|
+
/** The spec {@link connector} builds. */
|
|
2084
|
+
connector: {
|
|
2085
|
+
/** The connector key, e.g. `'uipath-salesforce-slack'`. */
|
|
2086
|
+
key: string;
|
|
2087
|
+
/** The connector operation. */
|
|
2088
|
+
action: string;
|
|
2089
|
+
/** The exact connector version, when the author pins one. */
|
|
2090
|
+
version?: string;
|
|
2091
|
+
/** The connection's binding label. */
|
|
2092
|
+
connection?: string;
|
|
2093
|
+
/** The folder's binding label. */
|
|
2094
|
+
folder?: string;
|
|
2095
|
+
/** Which OBJECT a generic operation addresses — see {@link ConnectorOpts.object}. */
|
|
2096
|
+
object?: string;
|
|
2097
|
+
/** The operation's inputs, by field. */
|
|
2098
|
+
inputs: Record<string, unknown>;
|
|
2099
|
+
};
|
|
2100
|
+
/** The spec {@link waitForEvent} builds. */
|
|
2101
|
+
waitEvent: {
|
|
2102
|
+
subscription: EventSubscription;
|
|
2103
|
+
};
|
|
2206
2104
|
}
|
|
2207
2105
|
/**
|
|
2208
|
-
*
|
|
2209
|
-
*
|
|
2210
|
-
* @remarks
|
|
2211
|
-
* `{ byId }` names a record id, literal or expression. `{ fromRead }` names an
|
|
2212
|
-
* earlier {@link dataFabricRead} STEP and reuses the record that step found, so
|
|
2213
|
-
* the id never has to be carried by hand; `check` rejects a name no read step
|
|
2214
|
-
* has. Shared by {@link dataFabricUpdate} and {@link dataFabricDelete} — the
|
|
2215
|
-
* platform gives them the same `recordSource` shape.
|
|
2106
|
+
* One action step's spec: `{ kind }` plus that kind's body from
|
|
2107
|
+
* {@link FlowActionSpecs}, for every kind there.
|
|
2216
2108
|
*/
|
|
2217
|
-
export type DataFabricRecordRef = {
|
|
2218
|
-
byId: string | Expr;
|
|
2219
|
-
fromRead?: never;
|
|
2220
|
-
} | {
|
|
2221
|
-
fromRead: string;
|
|
2222
|
-
byId?: never;
|
|
2223
|
-
};
|
|
2224
|
-
export interface DataFabricReadInputs {
|
|
2225
|
-
/** The Data Fabric entity's name, e.g. `'Invoices'`. */
|
|
2226
|
-
entity: string;
|
|
2227
|
-
/** Filter rows selecting the record(s) to query. Omit to take everything the entity holds. */
|
|
2228
|
-
filters?: DataFabricFilter[];
|
|
2229
|
-
/**
|
|
2230
|
-
* `'single'` publishes ONE record as the step's `output`; `'multiple'`
|
|
2231
|
-
* publishes the matching records under `output.results`.
|
|
2232
|
-
*
|
|
2233
|
-
* Setting either selects the node's **1.4** definition, which is where
|
|
2234
|
-
* `resultMode` exists at all — the SDK's pinned default is 1.0, the
|
|
2235
|
-
* read-one-record node this family started as. Omit it and nothing changes:
|
|
2236
|
-
* the step stays on 1.0 and reads one record, as it always did.
|
|
2237
|
-
*
|
|
2238
|
-
* A `'single'` read faults only on an OVER-match; zero matches completes
|
|
2239
|
-
* normally and leaves the step's output unresolved, so treat "not found" as a
|
|
2240
|
-
* branch rather than an error.
|
|
2241
|
-
*/
|
|
2242
|
-
resultMode?: 'single' | 'multiple';
|
|
2243
|
-
/**
|
|
2244
|
-
* Row cap for a `'multiple'` query. The emitted query ALWAYS carries a limit:
|
|
2245
|
-
* omitting this resolves to 100, and 1000 is a hard ceiling — a larger value
|
|
2246
|
-
* truncates silently, so page with `skip` instead.
|
|
2247
|
-
*/
|
|
2248
|
-
limit?: number;
|
|
2249
|
-
/** Rows to skip before the limit — the paging half of `limit`. */
|
|
2250
|
-
skip?: number;
|
|
2251
|
-
/** Order rows before the limit applies. Without it a limited slice is arbitrary. */
|
|
2252
|
-
sort?: DataFabricSort;
|
|
2253
|
-
/** Only these columns. Omit for every column the entity has. */
|
|
2254
|
-
fields?: string[];
|
|
2255
|
-
/**
|
|
2256
|
-
* Folder key (GUID) for a folder-scoped entity — its `folderId` from
|
|
2257
|
-
* `uip df entities list --include-folders`.
|
|
2258
|
-
*
|
|
2259
|
-
* Requires `resourceKey`: `folderKey` alone serializes the folder as a
|
|
2260
|
-
* source-org LITERAL, which looks portable and breaks on cross-org deploy, so
|
|
2261
|
-
* `check` refuses the pair being half-authored.
|
|
2262
|
-
*/
|
|
2263
|
-
folderKey?: string;
|
|
2264
|
-
/**
|
|
2265
|
-
* The key the entity's reference is registered under in the solution, from
|
|
2266
|
-
* `uip solution resources list --kind Entity`.
|
|
2267
|
-
*
|
|
2268
|
-
* @remarks
|
|
2269
|
-
* Only meaningful with `folderKey`. Supplying both emits the two
|
|
2270
|
-
* `resource: 'Entity'` binding rows (`propertyAttribute` `name` and
|
|
2271
|
-
* `folderKey`) that let the flow deploy to another org. Nothing mints this
|
|
2272
|
-
* key for a hand-authored flow — if you cannot resolve one, keep the entity
|
|
2273
|
-
* tenant-scoped and omit both.
|
|
2274
|
-
*/
|
|
2275
|
-
resourceKey?: string;
|
|
2276
|
-
}
|
|
2277
|
-
export interface DataFabricCreateInputs {
|
|
2278
|
-
/** The Data Fabric entity's name, e.g. `'Invoices'`. */
|
|
2279
|
-
entity: string;
|
|
2280
|
-
/**
|
|
2281
|
-
* The columns the new record starts with, by field name. At least one is
|
|
2282
|
-
* required — the node's schema rejects an empty field list rather than
|
|
2283
|
-
* inserting a blank row.
|
|
2284
|
-
*/
|
|
2285
|
-
values: Record<string, string | Expr>;
|
|
2286
|
-
/**
|
|
2287
|
-
* Folder key (GUID) for a folder-scoped entity — its `folderId` from
|
|
2288
|
-
* `uip df entities list --include-folders`.
|
|
2289
|
-
*
|
|
2290
|
-
* Requires `resourceKey`: `folderKey` alone serializes the folder as a
|
|
2291
|
-
* source-org LITERAL, which looks portable and breaks on cross-org deploy, so
|
|
2292
|
-
* `check` refuses the pair being half-authored.
|
|
2293
|
-
*/
|
|
2294
|
-
folderKey?: string;
|
|
2295
|
-
/**
|
|
2296
|
-
* The key the entity's reference is registered under in the solution, from
|
|
2297
|
-
* `uip solution resources list --kind Entity`.
|
|
2298
|
-
*
|
|
2299
|
-
* @remarks
|
|
2300
|
-
* Only meaningful with `folderKey`. Supplying both emits the two
|
|
2301
|
-
* `resource: 'Entity'` binding rows (`propertyAttribute` `name` and
|
|
2302
|
-
* `folderKey`) that let the flow deploy to another org. Nothing mints this
|
|
2303
|
-
* key for a hand-authored flow — if you cannot resolve one, keep the entity
|
|
2304
|
-
* tenant-scoped and omit both.
|
|
2305
|
-
*/
|
|
2306
|
-
resourceKey?: string;
|
|
2307
|
-
}
|
|
2308
|
-
export interface DataFabricUpdateInputs {
|
|
2309
|
-
/** The Data Fabric entity's name, e.g. `'Invoices'`. */
|
|
2310
|
-
entity: string;
|
|
2311
|
-
/** Which record to update — see {@link DataFabricRecordRef}. */
|
|
2312
|
-
record: DataFabricRecordRef;
|
|
2313
|
-
/**
|
|
2314
|
-
* The columns to write, by field name. An empty string is a real write — it
|
|
2315
|
-
* clears the column.
|
|
2316
|
-
*/
|
|
2317
|
-
set: Record<string, string | Expr>;
|
|
2318
|
-
/**
|
|
2319
|
-
* Folder key (GUID) for a folder-scoped entity — its `folderId` from
|
|
2320
|
-
* `uip df entities list --include-folders`.
|
|
2321
|
-
*
|
|
2322
|
-
* Requires `resourceKey`: `folderKey` alone serializes the folder as a
|
|
2323
|
-
* source-org LITERAL, which looks portable and breaks on cross-org deploy, so
|
|
2324
|
-
* `check` refuses the pair being half-authored.
|
|
2325
|
-
*/
|
|
2326
|
-
folderKey?: string;
|
|
2327
|
-
/**
|
|
2328
|
-
* The key the entity's reference is registered under in the solution, from
|
|
2329
|
-
* `uip solution resources list --kind Entity`.
|
|
2330
|
-
*
|
|
2331
|
-
* @remarks
|
|
2332
|
-
* Only meaningful with `folderKey`. Supplying both emits the two
|
|
2333
|
-
* `resource: 'Entity'` binding rows (`propertyAttribute` `name` and
|
|
2334
|
-
* `folderKey`) that let the flow deploy to another org. Nothing mints this
|
|
2335
|
-
* key for a hand-authored flow — if you cannot resolve one, keep the entity
|
|
2336
|
-
* tenant-scoped and omit both.
|
|
2337
|
-
*/
|
|
2338
|
-
resourceKey?: string;
|
|
2339
|
-
}
|
|
2340
|
-
export interface DataFabricDeleteInputs {
|
|
2341
|
-
/** The Data Fabric entity's name, e.g. `'Invoices'`. */
|
|
2342
|
-
entity: string;
|
|
2343
|
-
/** Which record to delete — see {@link DataFabricRecordRef}. */
|
|
2344
|
-
record: DataFabricRecordRef;
|
|
2345
|
-
/**
|
|
2346
|
-
* Folder key (GUID) for a folder-scoped entity — its `folderId` from
|
|
2347
|
-
* `uip df entities list --include-folders`.
|
|
2348
|
-
*
|
|
2349
|
-
* Requires `resourceKey`: `folderKey` alone serializes the folder as a
|
|
2350
|
-
* source-org LITERAL, which looks portable and breaks on cross-org deploy, so
|
|
2351
|
-
* `check` refuses the pair being half-authored.
|
|
2352
|
-
*/
|
|
2353
|
-
folderKey?: string;
|
|
2354
|
-
/**
|
|
2355
|
-
* The key the entity's reference is registered under in the solution, from
|
|
2356
|
-
* `uip solution resources list --kind Entity`.
|
|
2357
|
-
*
|
|
2358
|
-
* @remarks
|
|
2359
|
-
* Only meaningful with `folderKey`. Supplying both emits the two
|
|
2360
|
-
* `resource: 'Entity'` binding rows (`propertyAttribute` `name` and
|
|
2361
|
-
* `folderKey`) that let the flow deploy to another org. Nothing mints this
|
|
2362
|
-
* key for a hand-authored flow — if you cannot resolve one, keep the entity
|
|
2363
|
-
* tenant-scoped and omit both.
|
|
2364
|
-
*/
|
|
2365
|
-
resourceKey?: string;
|
|
2366
|
-
}
|
|
2367
|
-
export interface DocumentClassifyInputs {
|
|
2368
|
-
/** The document to classify — a file reference (`input('file')`, `out('fetch', 'fileRef')`, …). */
|
|
2369
|
-
fileRef: string | Expr;
|
|
2370
|
-
/** Page range to classify, e.g. `'1-3'`. Omit for the whole document. */
|
|
2371
|
-
pageRange?: string;
|
|
2372
|
-
/** Split multi-document files into per-type page ranges. */
|
|
2373
|
-
splitPages?: boolean;
|
|
2374
|
-
/** Model configuration overrides; omit for the platform defaults (gemini_2_5_flash). */
|
|
2375
|
-
modelConfig?: Record<string, unknown>;
|
|
2376
|
-
}
|
|
2377
|
-
export interface DynamicExtractInputs {
|
|
2378
|
-
/** The document to extract from — a file reference. */
|
|
2379
|
-
fileRef: string | Expr;
|
|
2380
|
-
/**
|
|
2381
|
-
* The IXP model deployment the extraction runs against. Dynamic Extract
|
|
2382
|
-
* authors its SCHEMA inline, but execution still needs a model: Studio Web's
|
|
2383
|
-
* panel destructures `modelName` and `folderKey`, and the platform rejects an
|
|
2384
|
-
* instance without them.
|
|
2385
|
-
*/
|
|
2386
|
-
model: {
|
|
2387
|
-
/** The deployment's model name, e.g. `'invoiceixp-cef0d447-ixp'`. */
|
|
2388
|
-
modelName: string;
|
|
2389
|
-
/** Folder key (GUID) the deployment lives in. */
|
|
2390
|
-
folderKey: string;
|
|
2391
|
-
/** The IXP project's id (GUID). */
|
|
2392
|
-
projectId?: string;
|
|
2393
|
-
/** The IXP project's display name. */
|
|
2394
|
-
projectName?: string;
|
|
2395
|
-
/** Folder display name. */
|
|
2396
|
-
folderName?: string;
|
|
2397
|
-
/** Deployment version tag; omit for the live version. */
|
|
2398
|
-
versionTag?: string;
|
|
2399
|
-
};
|
|
2400
|
-
/**
|
|
2401
|
-
* The extraction schema (the node's inline taxonomy): a JSON-schema-shaped
|
|
2402
|
-
* document describing the fields to extract. This is the Dynamic Extract
|
|
2403
|
-
* node's defining input — authored inline rather than referencing a deployed
|
|
2404
|
-
* IXP project (use {@link ixpExtract} for those).
|
|
2405
|
-
*/
|
|
2406
|
-
schema?: Record<string, unknown>;
|
|
2407
|
-
/** Page range to extract, e.g. `'1-3'`. Omit for the whole document. */
|
|
2408
|
-
pageRange?: string;
|
|
2409
|
-
/** Model configuration overrides; omit for the platform defaults. */
|
|
2410
|
-
modelConfig?: Record<string, unknown>;
|
|
2411
|
-
}
|
|
2412
2109
|
export type ActionSpec = {
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
}
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
} | {
|
|
2425
|
-
kind: 'delay';
|
|
2426
|
-
inputs: DelayInputs;
|
|
2427
|
-
}
|
|
2428
|
-
/** A placeholder — no inputs, publishes nothing. See {@link mock}. */
|
|
2429
|
-
| {
|
|
2430
|
-
kind: 'mock';
|
|
2431
|
-
} | {
|
|
2432
|
-
kind: 'rpaWorkflow';
|
|
2433
|
-
inputs: RpaWorkflowInputs;
|
|
2434
|
-
} | {
|
|
2435
|
-
kind: 'apiWorkflow';
|
|
2436
|
-
inputs: ApiWorkflowInputs;
|
|
2437
|
-
} | {
|
|
2438
|
-
kind: 'publishedFunction';
|
|
2439
|
-
inputs: PublishedFunctionInputs;
|
|
2440
|
-
} | {
|
|
2441
|
-
kind: 'sendMessage';
|
|
2442
|
-
inputs: SendMessageInputs;
|
|
2443
|
-
} | {
|
|
2444
|
-
kind: 'waitForMessage';
|
|
2445
|
-
inputs: WaitForMessageInputs;
|
|
2446
|
-
} | {
|
|
2447
|
-
kind: 'conversationContext';
|
|
2448
|
-
inputs: ConversationContextInputs;
|
|
2449
|
-
} | {
|
|
2450
|
-
kind: 'createOutgoingCall';
|
|
2451
|
-
inputs: CreateOutgoingCallInputs;
|
|
2452
|
-
} | {
|
|
2453
|
-
kind: 'endCall';
|
|
2454
|
-
inputs: EndCallInputs;
|
|
2455
|
-
} | {
|
|
2456
|
-
kind: 'voiceAgent';
|
|
2457
|
-
inputs: VoiceAgentInputs;
|
|
2458
|
-
} | {
|
|
2459
|
-
kind: 'conversationalAgent';
|
|
2460
|
-
inputs: ConversationalAgentInputs;
|
|
2461
|
-
} | {
|
|
2462
|
-
kind: 'agenticProcess';
|
|
2463
|
-
inputs: AgenticProcessInputs;
|
|
2464
|
-
} | {
|
|
2465
|
-
kind: 'agent';
|
|
2466
|
-
inputs: AgentInputs;
|
|
2467
|
-
} | {
|
|
2468
|
-
kind: 'inlineAgent';
|
|
2469
|
-
inputs: InlineAgentInputs;
|
|
2470
|
-
} | {
|
|
2471
|
-
kind: 'queueItem';
|
|
2472
|
-
inputs: QueueItemInputs;
|
|
2473
|
-
} | {
|
|
2474
|
-
kind: 'summarize';
|
|
2475
|
-
inputs: SummarizeInputs;
|
|
2476
|
-
} | {
|
|
2477
|
-
kind: 'batchTransform';
|
|
2478
|
-
inputs: BatchTransformInputs;
|
|
2479
|
-
} | {
|
|
2480
|
-
kind: 'ixpExtract';
|
|
2481
|
-
inputs: IxpExtractInputs;
|
|
2482
|
-
} | {
|
|
2483
|
-
kind: 'connector';
|
|
2484
|
-
key: string;
|
|
2485
|
-
action: string;
|
|
2486
|
-
version?: string;
|
|
2487
|
-
connection?: string;
|
|
2488
|
-
folder?: string;
|
|
2489
|
-
/** Which OBJECT a generic operation addresses — see {@link ConnectorOpts.object}. */
|
|
2490
|
-
object?: string;
|
|
2491
|
-
inputs: Record<string, unknown>;
|
|
2492
|
-
} | {
|
|
2493
|
-
kind: 'documentClassify';
|
|
2494
|
-
inputs: DocumentClassifyInputs;
|
|
2495
|
-
} | {
|
|
2496
|
-
kind: 'dynamicExtract';
|
|
2497
|
-
inputs: DynamicExtractInputs;
|
|
2498
|
-
} | {
|
|
2499
|
-
kind: 'dataFabricRead';
|
|
2500
|
-
inputs: DataFabricReadInputs;
|
|
2501
|
-
} | {
|
|
2502
|
-
kind: 'dataFabricCreate';
|
|
2503
|
-
inputs: DataFabricCreateInputs;
|
|
2504
|
-
} | {
|
|
2505
|
-
kind: 'dataFabricUpdate';
|
|
2506
|
-
inputs: DataFabricUpdateInputs;
|
|
2507
|
-
} | {
|
|
2508
|
-
kind: 'dataFabricDelete';
|
|
2509
|
-
inputs: DataFabricDeleteInputs;
|
|
2510
|
-
} | {
|
|
2511
|
-
kind: 'waitEvent';
|
|
2512
|
-
subscription: EventSubscription;
|
|
2110
|
+
[K in keyof FlowActionSpecs]: FlatSpec<{
|
|
2111
|
+
kind: K;
|
|
2112
|
+
} & FlowActionSpecs[K]>;
|
|
2113
|
+
}[keyof FlowActionSpecs];
|
|
2114
|
+
/**
|
|
2115
|
+
* One object type in place of an intersection, keeping each property's optionality.
|
|
2116
|
+
*
|
|
2117
|
+
* @internal Type plumbing for {@link ActionSpec}; not an authoring type.
|
|
2118
|
+
*/
|
|
2119
|
+
type FlatSpec<T> = {
|
|
2120
|
+
[P in keyof T]: T[P];
|
|
2513
2121
|
};
|
|
2514
2122
|
/**
|
|
2515
2123
|
* Wrap a built-in action spec literal in its adapter class without changing
|
|
@@ -2539,60 +2147,6 @@ export declare function builtinTriggerSpec<S extends object>(spec: S): S;
|
|
|
2539
2147
|
* @returns An action spec to pass to `.step(name, …)`.
|
|
2540
2148
|
*/
|
|
2541
2149
|
export declare function http(inputs: HttpInputs): ActionSpec;
|
|
2542
|
-
/**
|
|
2543
|
-
* Declare an inline script action.
|
|
2544
|
-
*
|
|
2545
|
-
* @param inputs - The JavaScript body (`code`, which must `return`) and what it
|
|
2546
|
-
* returns (`returns`).
|
|
2547
|
-
* @returns An action spec to pass to `.step(name, …)`.
|
|
2548
|
-
*/
|
|
2549
|
-
export declare function script(inputs: ScriptInputs): ActionSpec;
|
|
2550
|
-
/**
|
|
2551
|
-
* Declare a Transform action — a chain of declarative operations over a
|
|
2552
|
-
* collection. Read the result downstream with `out('<step>')`.
|
|
2553
|
-
*
|
|
2554
|
-
* @remarks
|
|
2555
|
-
* For a node that does ONE thing, name the variant — the emitted `.flow` then
|
|
2556
|
-
* carries `core.action.transform.filter` and reads as `Filter` in the designer
|
|
2557
|
-
* instead of a generic `Transform`:
|
|
2558
|
-
*
|
|
2559
|
-
* ```ts
|
|
2560
|
-
* .step('bigOrders', transform({
|
|
2561
|
-
* variant: 'filter',
|
|
2562
|
-
* collection: v('orders'),
|
|
2563
|
-
* operations: [
|
|
2564
|
-
* { type: 'filter', filters: [{ field: 'amount', condition: 'greater_equal', value: 100 }] },
|
|
2565
|
-
* ],
|
|
2566
|
-
* }))
|
|
2567
|
-
* ```
|
|
2568
|
-
*
|
|
2569
|
-
* @example
|
|
2570
|
-
* **Filter a collection, then reshape what survives**
|
|
2571
|
-
* ```ts
|
|
2572
|
-
* .var('catalog', types.array, [
|
|
2573
|
-
* { title: 'Deep Learning', author: 'Goodfellow', difficulty: 9, pages: 800 },
|
|
2574
|
-
* { title: 'Information Theory', author: 'MacKay', difficulty: 7, pages: 540 },
|
|
2575
|
-
* ])
|
|
2576
|
-
* .step('curate', transform({
|
|
2577
|
-
* collection: v('catalog'),
|
|
2578
|
-
* operations: [
|
|
2579
|
-
* { type: 'filter', operation: 'and', filters: [
|
|
2580
|
-
* { field: 'difficulty', condition: 'greater_than', value: 5 },
|
|
2581
|
-
* { field: 'pages', condition: 'less_than', value: 600 },
|
|
2582
|
-
* ] },
|
|
2583
|
-
* { type: 'map', keepOriginalFields: false, mappings: [
|
|
2584
|
-
* { field: 'title', transformation: 'uppercase' },
|
|
2585
|
-
* { field: 'author' },
|
|
2586
|
-
* ] },
|
|
2587
|
-
* ],
|
|
2588
|
-
* }))
|
|
2589
|
-
* ```
|
|
2590
|
-
*
|
|
2591
|
-
* @param inputs - The `collection` to transform and the chain of `operations` to
|
|
2592
|
-
* run over it.
|
|
2593
|
-
* @returns An action spec to pass to `.step(name, …)`.
|
|
2594
|
-
*/
|
|
2595
|
-
export declare function transform(inputs: TransformInputs): ActionSpec;
|
|
2596
2150
|
/**
|
|
2597
2151
|
* Declare a human task — a step that pauses for a person to read some values,
|
|
2598
2152
|
* fill others in, and press one of the outcome buttons.
|
|
@@ -2776,68 +2330,6 @@ export declare function batchTransform(inputs: BatchTransformInputs): ActionSpec
|
|
|
2776
2330
|
* @returns An action spec to pass to `.step(name, …)`.
|
|
2777
2331
|
*/
|
|
2778
2332
|
export declare function ixpExtract(inputs: IxpExtractInputs): ActionSpec;
|
|
2779
|
-
/**
|
|
2780
|
-
* Declare a delay — a step that pauses the flow for a fixed length of time and
|
|
2781
|
-
* then carries on.
|
|
2782
|
-
*
|
|
2783
|
-
* @remarks
|
|
2784
|
-
* A delay produces nothing: there is no `out('settle')` to read. It is a wait,
|
|
2785
|
-
* not a value.
|
|
2786
|
-
*
|
|
2787
|
-
* The node itself splits that one duration across two fields (`timerPreset`
|
|
2788
|
-
* holds it directly, or the literal `"custom"` with the real value in
|
|
2789
|
-
* `timerValue`); the serializer picks the encoding, so you state the wait once.
|
|
2790
|
-
*
|
|
2791
|
-
* @example
|
|
2792
|
-
* **Wait thirty seconds before carrying on**
|
|
2793
|
-
* ```ts
|
|
2794
|
-
* .step('settle', delay({ duration: 'PT30S' }))
|
|
2795
|
-
* ```
|
|
2796
|
-
*
|
|
2797
|
-
* @param inputs - How long to wait (`duration`), as an ISO-8601 duration.
|
|
2798
|
-
* @returns An action spec to pass to `.step(name, …)`.
|
|
2799
|
-
*/
|
|
2800
|
-
export declare function delay(inputs: DelayInputs): ActionSpec;
|
|
2801
|
-
/**
|
|
2802
|
-
* Declare a PLACEHOLDER step — "a real node goes here later".
|
|
2803
|
-
*
|
|
2804
|
-
* @remarks
|
|
2805
|
-
* A mock takes **no inputs and publishes nothing**. It is a marker on the canvas
|
|
2806
|
-
* that keeps the graph wired and the flow deployable while one step is still
|
|
2807
|
-
* missing — not a stub that returns test data. `out('extractInvoice')` is
|
|
2808
|
-
* refused at compile time (`MOCK_HAS_NO_OUTPUT`) because it would read `null` at
|
|
2809
|
-
* run time, always.
|
|
2810
|
-
*
|
|
2811
|
-
* Say what belongs there in the step's own name and in the label the canvas
|
|
2812
|
-
* shows; the corpus's placeholders read like
|
|
2813
|
-
* `"Extract Invoice Fields (mock — IxP model not yet published)"`.
|
|
2814
|
-
*
|
|
2815
|
-
* ### Why there are no arguments (convention #191 — the family contract)
|
|
2816
|
-
*
|
|
2817
|
-
* The platform's `core.logic.mock@1.0.0` declares **no `inputDefinition`** and one
|
|
2818
|
-
* output whose `source` is the literal `"null"`. Measured over the 4,033 distinct
|
|
2819
|
-
* archived `.flow` artifacts: **74 mock instances in 62 flows, and 0 carrying a
|
|
2820
|
-
* fixture anywhere in the node** — 71 of them with `inputs: {}` or no `inputs`
|
|
2821
|
-
* key. The 3 exceptions carry free-text `placeholder` / `_placeholder` keys the
|
|
2822
|
-
* definition never declares, invented by agents on runs that scored 0.9 and 0.4.
|
|
2823
|
-
*
|
|
2824
|
-
* **This is NOT a local runner's `kind: 'mock'` test construct**, which returns a
|
|
2825
|
-
* baked fixture. They are different things that share
|
|
2826
|
-
* a name, and a `mock({ fixture })` surface would emit a node whose local
|
|
2827
|
-
* behaviour and deployed behaviour disagree silently — see
|
|
2828
|
-
* [#125](https://github.com/UiPath/flow-builder-sdk/issues/125). Nothing this SDK
|
|
2829
|
-
* emits opens that channel: an SDK-authored mock publishes `null` locally,
|
|
2830
|
-
* exactly as the platform does.
|
|
2831
|
-
*
|
|
2832
|
-
* @example
|
|
2833
|
-
* **Hold a step's place until the real node exists**
|
|
2834
|
-
* ```ts
|
|
2835
|
-
* .step('extractInvoice', mock()) // ← swap for the IxP node once the project exists
|
|
2836
|
-
* ```
|
|
2837
|
-
*
|
|
2838
|
-
* @returns An action spec to pass to `.step(name, …)`.
|
|
2839
|
-
*/
|
|
2840
|
-
export declare function mock(): ActionSpec;
|
|
2841
2333
|
/**
|
|
2842
2334
|
* Invoke a deployed RPA (robotic process automation) workflow — a classic
|
|
2843
2335
|
* UI-automation process, published to Orchestrator, run by a robot.
|
|
@@ -3123,7 +2615,7 @@ export declare function agenticProcess(inputs: AgenticProcessInputs): ActionSpec
|
|
|
3123
2615
|
* @remarks
|
|
3124
2616
|
* **Coded and low-code agents are the same node.** This one factory authors both.
|
|
3125
2617
|
* `registry get` on a coded agent and on a low-code one returns the same node type,
|
|
3126
|
-
* the same service type, the same `sortOrder
|
|
2618
|
+
* the same service type, the same `sortOrder` and the same bindings shape; the
|
|
3127
2619
|
* only difference is the icon, which is what `flavour` sets. Which kind a resource
|
|
3128
2620
|
* is a property of what somebody published, not of the flow — so if a task asks for
|
|
3129
2621
|
* "a coded agent", what it is asking you to get right is the RESOURCE you point at.
|
|
@@ -3221,131 +2713,6 @@ export declare function agent(inputs: AgentInputs): ActionSpec;
|
|
|
3221
2713
|
* @returns An action spec to pass to `.step(name, …)`.
|
|
3222
2714
|
*/
|
|
3223
2715
|
export declare function inlineAgent(inputs: InlineAgentInputs): ActionSpec;
|
|
3224
|
-
/**
|
|
3225
|
-
* Classify a document into a document type (`uipath.document.classify`). The
|
|
3226
|
-
* result publishes `ClassificationResult` — an array of typed classifications
|
|
3227
|
-
* with page ranges and confidences.
|
|
3228
|
-
*
|
|
3229
|
-
* @param inputs - The file reference and optional page range / split / model settings.
|
|
3230
|
-
* @returns An action spec to pass to `.step(name, …)`.
|
|
3231
|
-
*/
|
|
3232
|
-
export declare function documentClassify(inputs: DocumentClassifyInputs): ActionSpec;
|
|
3233
|
-
/**
|
|
3234
|
-
* Extract fields from a document with an INLINE schema — Dynamic Extract
|
|
3235
|
-
* (`uipath.ixp.extract-document-builder`), the newer of the two extraction
|
|
3236
|
-
* shapes. No deployed IXP project is referenced: the extraction schema rides
|
|
3237
|
-
* the node. The result publishes `ExtractionResult` (and `Taxonomy`).
|
|
3238
|
-
*
|
|
3239
|
-
* @param inputs - The file reference, the inline extraction schema, and
|
|
3240
|
-
* optional page range / model settings.
|
|
3241
|
-
* @returns An action spec to pass to `.step(name, …)`.
|
|
3242
|
-
*/
|
|
3243
|
-
export declare function dynamicExtract(inputs: DynamicExtractInputs): ActionSpec;
|
|
3244
|
-
/**
|
|
3245
|
-
* Query entity records from Data Fabric (`core.datafabric.read`). The result
|
|
3246
|
-
* publishes to the step's `output`; downstream references re-fetch fresh data
|
|
3247
|
-
* at activation time (the engine re-runs the query rather than caching).
|
|
3248
|
-
*
|
|
3249
|
-
* @remarks
|
|
3250
|
-
* This node is **read-one AND query-many**, on its 1.4 definition: `resultMode:
|
|
3251
|
-
* 'multiple'` publishes the matching records under `output.results`, and the
|
|
3252
|
-
* platform renames the node "Query entity records" to say so. The SDK still
|
|
3253
|
-
* pins 1.0 — read-one — as the no-`{ version }` default, so passing
|
|
3254
|
-
* `resultMode` is what selects 1.4; see {@link DataFabricReadInputs.resultMode}.
|
|
3255
|
-
*
|
|
3256
|
-
* The native family covers all four CRUD verbs: this one,
|
|
3257
|
-
* {@link dataFabricCreate}, {@link dataFabricUpdate} and
|
|
3258
|
-
* {@link dataFabricDelete}. What it does NOT cover is get-by-id, a query row
|
|
3259
|
-
* limit, file record fields, and entity events — those are operations on the
|
|
3260
|
-
* SAME product reached through its Integration Service connector,
|
|
3261
|
-
* `uipath-uipath-dataservice` (the tenant displays it as **UiPath Data
|
|
3262
|
-
* Fabric**). So a flow that needs one of those still straddles two surfaces,
|
|
3263
|
-
* and the connector remains the one surface that covers everything:
|
|
3264
|
-
*
|
|
3265
|
-
* ```ts
|
|
3266
|
-
* .step('byId', connector('uipath-uipath-dataservice', 'get-entity-record-by-id',
|
|
3267
|
-
* { entityName: 'Contracts', recordId: input('id') }, { connection: 'df' }))
|
|
3268
|
-
* ```
|
|
3269
|
-
*
|
|
3270
|
-
* Get-by-id matters for long text. This node is a query even when it reads one
|
|
3271
|
-
* record by an `Id` filter, and a Data Service query returns a PREVIEW of a
|
|
3272
|
-
* long-text (`MULTILINE_MAX`) field: the first 10,000 characters plus
|
|
3273
|
-
* `...[Truncated]`, with no flag in the output. A 15,551-character value comes
|
|
3274
|
-
* back as 10,014 characters. When a field may exceed 10,000 characters, read
|
|
3275
|
-
* it with `get-entity-record-by-id`, which returns the whole value
|
|
3276
|
-
* (flow-builder-sdk#954).
|
|
3277
|
-
*
|
|
3278
|
-
* A connector operation's body fields come from the entity, so the library
|
|
3279
|
-
* cannot carry them: run `uip maestro registry prepare uipath-uipath-dataservice
|
|
3280
|
-
* get-entity-record-by-id -f entityName=<Entity>` first.
|
|
3281
|
-
* The routing table is in the `data-fabric.md` reference and the parent-field
|
|
3282
|
-
* loop in `connector-params.md` — cited by name rather than linked, because this
|
|
3283
|
-
* comment renders both into the flat corpus, where those files sit alongside
|
|
3284
|
-
* it, and onto the site, where each symbol is its own page and a relative
|
|
3285
|
-
* `./data-fabric` resolves to nothing.
|
|
3286
|
-
*
|
|
3287
|
-
* @param inputs - The entity, optional filter rows, result mode, and folder scope.
|
|
3288
|
-
* @returns An action spec to pass to `.step(name, …)`.
|
|
3289
|
-
*/
|
|
3290
|
-
export declare function dataFabricRead(inputs: DataFabricReadInputs): ActionSpec;
|
|
3291
|
-
/**
|
|
3292
|
-
* Create an entity record in Data Fabric (`core.datafabric.create`). The new
|
|
3293
|
-
* record publishes to the step's `output`, so a following
|
|
3294
|
-
* {@link dataFabricUpdate} or {@link dataFabricDelete} can read its id.
|
|
3295
|
-
*
|
|
3296
|
-
* @remarks
|
|
3297
|
-
* `values` must name at least one column — the node's schema rejects an empty
|
|
3298
|
-
* field list rather than inserting a blank row, and `check` says so before the
|
|
3299
|
-
* platform does. Field names are the ENTITY's, so copy them from the scenario
|
|
3300
|
-
* or the tenant; nothing offline can tell a real column from a typo.
|
|
3301
|
-
*
|
|
3302
|
-
* The published `output` is the record as a query returns it, so a long-text
|
|
3303
|
-
* (`MULTILINE_MAX`) field longer than 10,000 characters comes back cut, with
|
|
3304
|
-
* `...[Truncated]` appended, even though the whole value was stored. Use the
|
|
3305
|
-
* value you passed in, or re-read the record with the connector's
|
|
3306
|
-
* `get-entity-record-by-id`, when the whole text is needed (flow-builder-sdk#954).
|
|
3307
|
-
*
|
|
3308
|
-
* See {@link dataFabricRead} for what the native family still does not cover
|
|
3309
|
-
* and which connector operation covers it.
|
|
3310
|
-
*
|
|
3311
|
-
* @param inputs - The entity, the columns the record starts with, and folder scope.
|
|
3312
|
-
* @returns An action spec to pass to `.step(name, …)`.
|
|
3313
|
-
*/
|
|
3314
|
-
export declare function dataFabricCreate(inputs: DataFabricCreateInputs): ActionSpec;
|
|
3315
|
-
/**
|
|
3316
|
-
* Update an entity record in Data Fabric (`core.datafabric.update`). Target the
|
|
3317
|
-
* record by id or through an earlier {@link dataFabricRead} step; downstream
|
|
3318
|
-
* reads of this step observe the record AFTER the write.
|
|
3319
|
-
*
|
|
3320
|
-
* @remarks
|
|
3321
|
-
* `set` must write at least one column: an empty `set` is a no-op the platform
|
|
3322
|
-
* reports as success, so `check` rejects it.
|
|
3323
|
-
*
|
|
3324
|
-
* See {@link dataFabricRead} for what the native family still does not cover
|
|
3325
|
-
* and which connector operation covers it.
|
|
3326
|
-
*
|
|
3327
|
-
* @param inputs - The entity, the record selector, and the columns to write.
|
|
3328
|
-
* @returns An action spec to pass to `.step(name, …)`.
|
|
3329
|
-
*/
|
|
3330
|
-
export declare function dataFabricUpdate(inputs: DataFabricUpdateInputs): ActionSpec;
|
|
3331
|
-
/**
|
|
3332
|
-
* Delete an entity record from Data Fabric (`core.datafabric.delete`). Target
|
|
3333
|
-
* the record by id or through an earlier {@link dataFabricRead} step, exactly
|
|
3334
|
-
* as {@link dataFabricUpdate} does.
|
|
3335
|
-
*
|
|
3336
|
-
* @remarks
|
|
3337
|
-
* A delete **publishes nothing** — its definition declares no output — so
|
|
3338
|
-
* `$vars.<step>.output` is undefined at run time and `check` rejects a read of
|
|
3339
|
-
* it. Take what you need off the read step that found the record, before the
|
|
3340
|
-
* delete.
|
|
3341
|
-
*
|
|
3342
|
-
* See {@link dataFabricRead} for what the native family still does not cover
|
|
3343
|
-
* and which connector operation covers it.
|
|
3344
|
-
*
|
|
3345
|
-
* @param inputs - The entity, the record selector, and folder scope.
|
|
3346
|
-
* @returns An action spec to pass to `.step(name, …)`.
|
|
3347
|
-
*/
|
|
3348
|
-
export declare function dataFabricDelete(inputs: DataFabricDeleteInputs): ActionSpec;
|
|
3349
2716
|
/**
|
|
3350
2717
|
* Declare an Orchestrator QUEUE ITEM step.
|
|
3351
2718
|
*
|