@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.
@@ -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.20.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": "124c0cac0f49d9974da5619817458d4d8760a91f"
95
+ "gitref": "c72d3cea4a18fc9bad9e6a10a817f7534b6de674"
96
96
  }