@uipath/maestro-builder-sdk 6.32.7 → 6.32.8

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.
@@ -3,6 +3,7 @@ import { tsLiteral, tsNumber } from '../core/ts-literal.js';
3
3
  import { CASE_FORMAT_PROFILE, CASE_SCHEMA_VERSIONS } from './format-profile.js';
4
4
  import { preserveSchemaVersion } from '../schema-version.js';
5
5
  import { ownEntry } from '../core/own-entry.js';
6
+ import { isUnrestorableSlotId } from './preserve.js';
6
7
  const TASK_KIND_METHOD = {
7
8
  process: 'process',
8
9
  agent: 'agent',
@@ -932,6 +933,8 @@ function slaIdentity(sla) {
932
933
  * has that id.
933
934
  * - empty collections — there is nothing to align.
934
935
  * - `nodeOrder` with fewer than two ids — ordering one node is identity.
936
+ * - an `inputs` / `outputs` slot id copied verbatim from its name; the
937
+ * serializer will not restore it, and the minted id replaces it.
935
938
  *
936
939
  * Everything else stays. A designer document orders stages before its trigger,
937
940
  * carries ids no label seeding reproduces, and needs every one of them.
@@ -943,6 +946,11 @@ function prunePreservation(preservation, plan) {
943
946
  delete identities.id;
944
947
  if (identities.triggers?.length === 1 && identities.triggers[0]?.id === 'trigger_1')
945
948
  delete identities.triggers;
949
+ for (const lane of ['inputs', 'outputs']) {
950
+ const rows = identities.variables?.[lane];
951
+ if (Array.isArray(rows))
952
+ identities.variables[lane] = rows.filter((row) => !isUnrestorableSlotId(lane, row));
953
+ }
946
954
  for (const key of ['triggers', 'stages', 'caseExitRules', 'slaRules'])
947
955
  if (Array.isArray(identities[key]) && identities[key].length === 0)
948
956
  delete identities[key];
@@ -1,5 +1,13 @@
1
1
  import type { BuiltCase } from './case-sdk.js';
2
2
  export type PreservedVariableLane = 'inputs' | 'outputs' | 'inputOutputs';
3
+ /**
4
+ * A preserved `inputs[]` / `outputs[]` slot id copied verbatim from its name is
5
+ * the STRICT_FORMAL_ARG_ID defect, not an identity to keep; the minted id stands.
6
+ */
7
+ export declare function isUnrestorableSlotId(lane: string, row: {
8
+ name: string;
9
+ id?: string;
10
+ }): boolean;
3
11
  /** One platform-owned node retained at its original position in `nodes[]`. */
4
12
  export interface PreservedCaseNode {
5
13
  /** Original zero-based position in the top-level `nodes[]` array. */
@@ -1,3 +1,10 @@
1
+ /**
2
+ * A preserved `inputs[]` / `outputs[]` slot id copied verbatim from its name is
3
+ * the STRICT_FORMAL_ARG_ID defect, not an identity to keep; the minted id stands.
4
+ */
5
+ export function isUnrestorableSlotId(lane, row) {
6
+ return lane !== 'inputOutputs' && typeof row.id === 'string' && row.id === row.name;
7
+ }
1
8
  const preserved = new WeakMap();
2
9
  /** Attach decompiler-owned, non-authoring wire data to a built case. */
3
10
  export function preserveCaseJson(built, payload) {
@@ -9,6 +9,7 @@
9
9
  * name) are resolved here to the generated ids.
10
10
  */
11
11
  import { IdGen } from './ids.js';
12
+ import { isUnrestorableSlotId } from './preserve.js';
12
13
  import { buildConnectorInputs, nestConnectorBody, transportHttpMethod } from '../core/connector-inputs.js';
13
14
  import { EQUALS_EXPR_DIALECT } from '../core/connector-checks.js';
14
15
  import { bindingLabelRefusal } from '../core/binding-messages.js';
@@ -502,7 +503,11 @@ function applyPreservedIdentities(result, preservation) {
502
503
  takeSlas(metadata.slaRules, identities.slaRules);
503
504
  const variables = result.variables;
504
505
  for (const [lane, rows] of Object.entries(identities.variables ?? {}))
505
- (rows ?? []).forEach((row) => take(variables[lane]?.find((candidate) => candidate.name === row.name), row.id));
506
+ (rows ?? []).forEach((row) => {
507
+ if (isUnrestorableSlotId(lane, row))
508
+ return;
509
+ take(variables[lane]?.find((candidate) => candidate.name === row.name), row.id);
510
+ });
506
511
  const replace = (value) => {
507
512
  if (replacements.has(value))
508
513
  return replacements.get(value);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uipath/maestro-builder-sdk",
3
- "version": "6.32.7",
3
+ "version": "6.32.8",
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",
@@ -93,5 +93,5 @@
93
93
  "@types/node": "^22.7.0",
94
94
  "esbuild": "^0.28.1"
95
95
  },
96
- "gitref": "25920074d219f5839f57dd1e8ef96af291415168"
96
+ "gitref": "fad79d44a992f72b8a8d0ba0f9c61d8ea5705ed7"
97
97
  }