@uipath/maestro-builder-sdk 6.20.6 → 6.21.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 +72 -72
- package/dist/api-members.md +143 -143
- package/dist/check.js +19 -157
- package/dist/core/actions.d.ts +0 -126
- package/dist/core/actions.js +0 -48
- package/dist/core/edit-distance.d.ts +8 -0
- package/dist/core/edit-distance.js +26 -0
- package/dist/core/nodes/node-type.d.ts +17 -2
- package/dist/core/typed-raw-node.js +0 -2
- package/dist/decompile.js +0 -31
- package/dist/flow-node-registry.js +2 -1
- package/dist/flow-node-type.d.ts +6 -0
- package/dist/flow-sdk.d.ts +1 -0
- package/dist/flow-sdk.js +1 -0
- package/dist/nodes/queue/flow/check.d.ts +35 -0
- package/dist/nodes/queue/flow/check.js +126 -0
- package/dist/nodes/queue/flow/factories.d.ts +49 -0
- package/dist/nodes/queue/flow/factories.js +50 -0
- package/dist/nodes/queue/flow/family.d.ts +3 -0
- package/dist/nodes/queue/flow/family.js +8 -0
- package/dist/nodes/queue/flow/index.d.ts +3 -0
- package/dist/nodes/queue/flow/index.js +3 -0
- package/dist/nodes/queue/flow/node-type.d.ts +8 -0
- package/dist/nodes/queue/flow/node-type.js +265 -0
- package/dist/nodes/queue/flow/spec.d.ts +92 -0
- package/dist/nodes/queue/flow/spec.js +1 -0
- package/dist/serialize.js +1 -161
- package/package.json +2 -2
- /package/dist/{core/queue-record.d.ts → nodes/queue/flow/record.d.ts} +0 -0
- /package/dist/{core/queue-record.js → nodes/queue/flow/record.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/serialize.js
CHANGED
|
@@ -58,7 +58,6 @@ import { planFlowGlobals, planSharedInputs, sharedInputRoots } from './flow-vari
|
|
|
58
58
|
import { outputBackingGlobal, planOutputBacking } from './flow-output-backing.js';
|
|
59
59
|
import { mapJsCode } from './core/js-code-spans.js';
|
|
60
60
|
import { prepareCommand } from './core/cli-spelling.js';
|
|
61
|
-
import { QUEUE_ITEM_RECORD_SCHEMA } from './core/queue-record.js';
|
|
62
61
|
import { AGENTIC_PROCESS_FORMS } from './core/agentic-process-forms.js';
|
|
63
62
|
import { resourceNodeSortOrder } from './core/process-resource-sort-order.js';
|
|
64
63
|
import { types } from './core/expr.js';
|
|
@@ -121,8 +120,6 @@ const NODE_TYPE = {
|
|
|
121
120
|
doWhile: 'core.logic.dowhile',
|
|
122
121
|
subflow: 'core.subflow',
|
|
123
122
|
terminate: 'core.logic.terminate',
|
|
124
|
-
queueCreate: 'core.action.queue.create',
|
|
125
|
-
queueCreateAndWait: 'core.action.queue.create-and-wait',
|
|
126
123
|
// The two AI patterns. `summarize()` emits `deep-rag`: the canvas name is
|
|
127
124
|
// "Summarize", the wire type is the backend's (`ECS.DeepRag`), and there is
|
|
128
125
|
// no `uipath.pattern.summarize` node type at all.
|
|
@@ -2925,123 +2922,6 @@ function connectionResourceBindings(spec, existing) {
|
|
|
2925
2922
|
});
|
|
2926
2923
|
return { entries };
|
|
2927
2924
|
}
|
|
2928
|
-
/**
|
|
2929
|
-
* Build the definition for one queue-item node.
|
|
2930
|
-
*
|
|
2931
|
-
* Unlike `rpaWorkflowDef`, this one starts from the BUNDLED definition — the queue
|
|
2932
|
-
* node types are generic (no tenant key in the type), so the platform's own copy
|
|
2933
|
-
* can be shipped and is: `core-definitions.json` carries both at `@1.2`, verbatim
|
|
2934
|
-
* from the catalogue the running `uip` consults (`@uipath/flow-core/manifest`'s
|
|
2935
|
-
* `ootbNodes`). A test pins that the emitted definition is that copy plus exactly
|
|
2936
|
-
* the three per-instance edits below, so the bundled snapshot stays diffable
|
|
2937
|
-
* against upstream.
|
|
2938
|
-
*
|
|
2939
|
-
* VERSION 1.2, not the 1.0 the bundled sample carries. The platform is two
|
|
2940
|
-
* migrations on, and both are semantic: 1.0 → 1.1 re-types `itemData` from
|
|
2941
|
-
* `string` to `object`, and 1.1 → 1.2 makes the field validate as an object
|
|
2942
|
-
* expression. `shared/sample-flows/queue-operations.flow` is v1.0-era (a JSON
|
|
2943
|
-
* STRING in `itemData`) and dated 2026-05-20 — the shape the platform no longer
|
|
2944
|
-
* writes. Reading it for the surface would have shipped the wrong field TYPE.
|
|
2945
|
-
*
|
|
2946
|
-
* The three per-instance edits:
|
|
2947
|
-
*
|
|
2948
|
-
* - `model.bindings.resourceKey` — the queue's own Orchestrator key. The shipped
|
|
2949
|
-
* definition ships it BLANK, because only an instance knows which queue.
|
|
2950
|
-
* - `model.context` — the `=bindings.<id>` references. The definition ships
|
|
2951
|
-
* `<bindings.name>` placeholders; an instance names the actual binding ids,
|
|
2952
|
-
* which is the second way `resourceBindings` can be resolved and the
|
|
2953
|
-
* shape the bundled sample has.
|
|
2954
|
-
* - `outputDefinition.output.schema` — the queue item's record for a plain
|
|
2955
|
-
* create, or the author's `returns` for a create-and-wait. Without a schema a
|
|
2956
|
-
* downstream read is unresolvable.
|
|
2957
|
-
*/
|
|
2958
|
-
function queueItemDef(spec, stepName, ids, version) {
|
|
2959
|
-
const nodeType = spec.wait ? NODE_TYPE.queueCreateAndWait : NODE_TYPE.queueCreate;
|
|
2960
|
-
// The template at the AUTHOR'S version, when the bundle has it. Starting from
|
|
2961
|
-
// the default and handing it to makeNode with the pin refused every other
|
|
2962
|
-
// bundled version — the bug #988 fixed for inline agents (#1128). An
|
|
2963
|
-
// unbundled pin falls back to the default, and makeNode's exact-version
|
|
2964
|
-
// refusal names what is bundled.
|
|
2965
|
-
const base = (version !== undefined ? DEFS[`${nodeType}@${version}`] : undefined) ?? defByType.get(nodeType);
|
|
2966
|
-
if (!base)
|
|
2967
|
-
throw new Error(`no bundled definition for "${nodeType}"`);
|
|
2968
|
-
const def = jsonClone(base);
|
|
2969
|
-
def.model.bindings.resourceKey = spec.key;
|
|
2970
|
-
def.model.context = [
|
|
2971
|
-
{ name: 'name', type: 'string', value: `=bindings.${ids.name}`, default: spec.queue },
|
|
2972
|
-
{ name: 'folderPath', type: 'string', value: `=bindings.${ids.folderPath}`, default: spec.folderPath },
|
|
2973
|
-
{ name: '_label', type: 'string', value: stepName },
|
|
2974
|
-
];
|
|
2975
|
-
const schema = spec.wait
|
|
2976
|
-
? (spec.returns && Object.keys(spec.returns).length
|
|
2977
|
-
? {
|
|
2978
|
-
type: 'object',
|
|
2979
|
-
properties: Object.fromEntries(Object.entries(spec.returns).map(([k, t]) => [k, { type: t }])),
|
|
2980
|
-
}
|
|
2981
|
-
: undefined)
|
|
2982
|
-
: jsonClone(QUEUE_ITEM_RECORD_SCHEMA);
|
|
2983
|
-
if (schema)
|
|
2984
|
-
def.outputDefinition.output.schema = schema;
|
|
2985
|
-
return def;
|
|
2986
|
-
}
|
|
2987
|
-
/**
|
|
2988
|
-
* The two bindings a queue reference carries — the same `name` + `folderPath` pair
|
|
2989
|
-
* the process families use, keyed to the queue's own Orchestrator key rather than
|
|
2990
|
-
* to a `<folderPath>.<name>` string. That is what the only queue instance the repo
|
|
2991
|
-
* has (`sample-flows/queue-operations.flow`) uses, and it is the queue's stable
|
|
2992
|
-
* identity: a queue can be renamed, its key cannot.
|
|
2993
|
-
*
|
|
2994
|
-
* ONE PAIR PER QUEUE, not per step. Bindings are addressed by
|
|
2995
|
-
* `resource + resourceKey + propertyAttribute` — that is the key a bindings
|
|
2996
|
-
* lookup map is built on — so a second pair for the same queue is not a second
|
|
2997
|
-
* reference, it is a duplicate that shadows the first: both nodes resolve to
|
|
2998
|
-
* whichever was inserted last, and the other pair sits in the file referenced by
|
|
2999
|
-
* nothing. So two steps on the same queue SHARE these, and the ids come from the
|
|
3000
|
-
* queue rather than from a step name.
|
|
3001
|
-
*
|
|
3002
|
-
* (The rpa family mints its pair from the STEP name, so two steps starting the same
|
|
3003
|
-
* process emit the same duplicate-and-shadow shape. Nothing exercises it today —
|
|
3004
|
-
* every rpa flow in the repo has one process step — and changing those ids would
|
|
3005
|
-
* rewrite the rpa goldens, so it is recorded as a finding rather than fixed here.)
|
|
3006
|
-
*/
|
|
3007
|
-
function queueItemBindings(spec, existing) {
|
|
3008
|
-
const found = (attr) => [...existing.values()].find((b) => b.resource === 'queue' && b.resourceKey === spec.key && b.propertyAttribute === attr)?.id;
|
|
3009
|
-
const already = { name: found('name'), folderPath: found('folderPath') };
|
|
3010
|
-
if (already.name && already.folderPath) {
|
|
3011
|
-
return { ids: { name: already.name, folderPath: already.folderPath }, entries: [] };
|
|
3012
|
-
}
|
|
3013
|
-
// A readable, stable id per queue. Two queues that share a NAME across folders
|
|
3014
|
-
// would collide, so the id is suffixed until it is free.
|
|
3015
|
-
const slug = spec.queue.replace(/[^A-Za-z0-9]/g, '') || 'Queue';
|
|
3016
|
-
let base = `b${slug.charAt(0).toUpperCase()}${slug.slice(1)}`;
|
|
3017
|
-
for (let n = 2; existing.has(`${base}Name`) || existing.has(`${base}FolderPath`); n++) {
|
|
3018
|
-
base = `b${slug.charAt(0).toUpperCase()}${slug.slice(1)}${n}`;
|
|
3019
|
-
}
|
|
3020
|
-
const ids = { name: `${base}Name`, folderPath: `${base}FolderPath` };
|
|
3021
|
-
return {
|
|
3022
|
-
ids,
|
|
3023
|
-
entries: [
|
|
3024
|
-
{
|
|
3025
|
-
id: ids.name,
|
|
3026
|
-
name: 'name',
|
|
3027
|
-
type: 'string',
|
|
3028
|
-
resource: 'queue',
|
|
3029
|
-
resourceKey: spec.key,
|
|
3030
|
-
default: spec.queue,
|
|
3031
|
-
propertyAttribute: 'name',
|
|
3032
|
-
},
|
|
3033
|
-
{
|
|
3034
|
-
id: ids.folderPath,
|
|
3035
|
-
name: 'folderPath',
|
|
3036
|
-
type: 'string',
|
|
3037
|
-
resource: 'queue',
|
|
3038
|
-
resourceKey: spec.key,
|
|
3039
|
-
default: spec.folderPath,
|
|
3040
|
-
propertyAttribute: 'folderPath',
|
|
3041
|
-
},
|
|
3042
|
-
],
|
|
3043
|
-
};
|
|
3044
|
-
}
|
|
3045
2925
|
/**
|
|
3046
2926
|
* Encode a scheduled trigger's single `every` interval into the three inputs the
|
|
3047
2927
|
* platform's node carries.
|
|
@@ -3781,7 +3661,6 @@ export function bundledActionNodeType(spec) {
|
|
|
3781
3661
|
switch (spec?.kind) {
|
|
3782
3662
|
case 'http': return spec.inputs?.managed ? NODE_TYPE.httpV2 : NODE_TYPE.http;
|
|
3783
3663
|
case 'hitl': return hitlNodeType(spec.inputs);
|
|
3784
|
-
case 'queueItem': return spec.inputs?.wait ? NODE_TYPE.queueCreateAndWait : NODE_TYPE.queueCreate;
|
|
3785
3664
|
case 'inlineAgent': return INLINE_AGENT_TYPE;
|
|
3786
3665
|
case 'subflow':
|
|
3787
3666
|
case 'summarize':
|
|
@@ -5118,10 +4997,6 @@ export function serialize(built, opts = {}) {
|
|
|
5118
4997
|
return 'default';
|
|
5119
4998
|
if (type === NODE_TYPE.loop)
|
|
5120
4999
|
return 'success';
|
|
5121
|
-
// Both queue definitions declare exactly one source handle, `success` — and
|
|
5122
|
-
// the shipped `sample-flows/queue-operations.flow` wires its edges to it.
|
|
5123
|
-
if (type === NODE_TYPE.queueCreate || type === NODE_TYPE.queueCreateAndWait)
|
|
5124
|
-
return 'success';
|
|
5125
5000
|
// Every human-task definition declares one static source handle, `completed`.
|
|
5126
5001
|
// It is the real exit only where the product draws it: action-app,
|
|
5127
5002
|
// document-validation, and a task with no outcomes. A base or quick-form task
|
|
@@ -5243,6 +5118,7 @@ export function serialize(built, opts = {}) {
|
|
|
5243
5118
|
mint: (seed) => stableId(`${built.id}:${id}:${seed}`),
|
|
5244
5119
|
bind: (b) => { bound.push(b); },
|
|
5245
5120
|
definition: (typeName, version) => bundledDefinition(typeName, version),
|
|
5121
|
+
bindings: resourceBindings,
|
|
5246
5122
|
};
|
|
5247
5123
|
const bound = [];
|
|
5248
5124
|
const contribution = impl.serialize(spec, ctx);
|
|
@@ -6003,42 +5879,6 @@ export function serialize(built, opts = {}) {
|
|
|
6003
5879
|
addEdge(scope, t, id);
|
|
6004
5880
|
return [{ node: id, port: successPort(def.nodeType) }];
|
|
6005
5881
|
}
|
|
6006
|
-
if (spec.kind === 'queueItem') {
|
|
6007
|
-
const s = spec.inputs;
|
|
6008
|
-
// The bindings first: two steps on the same queue share one pair, and the
|
|
6009
|
-
// node's `model.context` has to name the ids that actually exist.
|
|
6010
|
-
const { ids, entries } = queueItemBindings(s, resourceBindings);
|
|
6011
|
-
for (const b of entries)
|
|
6012
|
-
resourceBindings.set(b.id, b);
|
|
6013
|
-
const def = queueItemDef(s, step.name, ids, step.options?.version);
|
|
6014
|
-
const id = stepUid(scope, step.name);
|
|
6015
|
-
// The result is read as `$vars.<step>.output`, like every other family: the
|
|
6016
|
-
// node's own output block maps the runtime `response` onto the variable
|
|
6017
|
-
// `output` (`source: "=response", var: "output"`), and the product honours
|
|
6018
|
-
// that mapping for both queue variants. (An alias to `.response` lived here
|
|
6019
|
-
// from #273 until #891; a live debug run on 2026-10-01 measured
|
|
6020
|
-
// `.output.Key` populated and `.response` undefined.)
|
|
6021
|
-
const node = makeNode(def.nodeType, id, step.name, { parentId, requestedVersion: step.options?.version, def });
|
|
6022
|
-
// The node KEEPS its copy of the model here, unlike the rpa families. Two
|
|
6023
|
-
// reasons: it is what the one queue instance the repo has carries, and it is
|
|
6024
|
-
// what `makeNode` does for every other core action node with a model (http,
|
|
6025
|
-
// script, transform). The model resolves from either place since #94, and a
|
|
6026
|
-
// bindings lookup reads node-first for the same reason.
|
|
6027
|
-
node.inputs = {
|
|
6028
|
-
queue: { name: s.queue, folderPath: s.folderPath, key: s.key },
|
|
6029
|
-
// `itemData`, not `item`: the surface's name is friendlier, the node's is
|
|
6030
|
-
// the platform's. The reference documents the mapping.
|
|
6031
|
-
itemData: renderMap(s.item ?? {}, scope.rename),
|
|
6032
|
-
priority: s.priority ?? 'Normal',
|
|
6033
|
-
reference: s.reference === undefined ? '' : renderValue(s.reference, scope.rename),
|
|
6034
|
-
deferDate: s.deferDate === undefined ? '' : renderValue(s.deferDate, scope.rename),
|
|
6035
|
-
dueDate: s.dueDate === undefined ? '' : renderValue(s.dueDate, scope.rename),
|
|
6036
|
-
};
|
|
6037
|
-
scope.nodes.push(node);
|
|
6038
|
-
for (const t of tails)
|
|
6039
|
-
addEdge(scope, t, id);
|
|
6040
|
-
return [{ node: id, port: successPort(def.nodeType) }];
|
|
6041
|
-
}
|
|
6042
5882
|
if (spec.kind === 'conversationalAgent') {
|
|
6043
5883
|
// The text CONVERSATIONAL agent: the inline agent's cluster shape (a
|
|
6044
5884
|
// minted `source` plus an `agent.json` sidecar) with the family's own
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uipath/maestro-builder-sdk",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.21.0",
|
|
4
4
|
"description": "Build UiPath Flow, Case, and BPMN artifacts by writing TypeScript.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://docs.uipath.com/maestro",
|
|
@@ -92,5 +92,5 @@
|
|
|
92
92
|
"@types/node": "^22.7.0",
|
|
93
93
|
"esbuild": "^0.28.1"
|
|
94
94
|
},
|
|
95
|
-
"gitref": "
|
|
95
|
+
"gitref": "c72d3cea4a18fc9bad9e6a10a817f7534b6de674"
|
|
96
96
|
}
|
|
File without changes
|
|
File without changes
|