@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.
Files changed (134) hide show
  1. package/dist/api-index.md +185 -184
  2. package/dist/api-members.md +506 -473
  3. package/dist/check.js +358 -695
  4. package/dist/cli/commands/flow.js +3 -0
  5. package/dist/compile-cli.js +51 -0
  6. package/dist/core/actions.d.ts +132 -765
  7. package/dist/core/actions.js +1 -307
  8. package/dist/core/binding-identity.d.ts +22 -0
  9. package/dist/core/binding-identity.js +28 -0
  10. package/dist/core/context-index.d.ts +34 -0
  11. package/dist/core/context-index.js +38 -0
  12. package/dist/core/definitionless-node-types.d.ts +16 -0
  13. package/dist/core/definitionless-node-types.js +16 -0
  14. package/dist/core/error-port.d.ts +6 -0
  15. package/dist/core/error-port.js +9 -0
  16. package/dist/core/form-field-type.d.ts +33 -0
  17. package/dist/core/form-field-type.js +30 -0
  18. package/dist/core/hitl-routing.d.ts +8 -0
  19. package/dist/core/hitl-routing.js +17 -1
  20. package/dist/core/node-classes.d.ts +4 -63
  21. package/dist/core/node-classes.js +0 -112
  22. package/dist/core/nodes/family.d.ts +36 -0
  23. package/dist/core/nodes/family.js +1 -0
  24. package/dist/core/nodes/node-type.d.ts +136 -0
  25. package/dist/core/nodes/node-type.js +1 -0
  26. package/dist/core/nodes/registry.d.ts +57 -0
  27. package/dist/core/nodes/registry.js +122 -0
  28. package/dist/core/nodes/versioned.d.ts +50 -0
  29. package/dist/core/nodes/versioned.js +46 -0
  30. package/dist/core/process-resource-sort-order.d.ts +40 -0
  31. package/dist/core/process-resource-sort-order.js +44 -0
  32. package/dist/core/typed-raw-node.d.ts +13 -62
  33. package/dist/core/typed-raw-node.js +40 -154
  34. package/dist/core/wire-expr.d.ts +27 -0
  35. package/dist/core/wire-expr.js +34 -0
  36. package/dist/decompile-cli.js +11 -1
  37. package/dist/decompile.d.ts +8 -3
  38. package/dist/decompile.js +665 -354
  39. package/dist/flow-definitions.d.ts +10 -0
  40. package/dist/flow-definitions.js +35 -0
  41. package/dist/flow-expr-check.js +1 -1
  42. package/dist/flow-node-registry.d.ts +13 -0
  43. package/dist/flow-node-registry.js +19 -0
  44. package/dist/flow-node-type.d.ts +192 -0
  45. package/dist/flow-node-type.js +1 -0
  46. package/dist/flow-sdk.d.ts +40 -1
  47. package/dist/flow-sdk.js +29 -2
  48. package/dist/flow-step-tree.js +2 -1
  49. package/dist/index.d.ts +2 -1
  50. package/dist/index.js +1 -0
  51. package/dist/merge-cli.js +25 -8
  52. package/dist/merge-roundtrip.d.ts +81 -0
  53. package/dist/merge-roundtrip.js +404 -0
  54. package/dist/merge.d.ts +35 -6
  55. package/dist/merge.js +124 -24
  56. package/dist/node-placement.d.ts +93 -0
  57. package/dist/node-placement.js +163 -0
  58. package/dist/nodes/data-fabric/flow/check.d.ts +13 -0
  59. package/dist/nodes/data-fabric/flow/check.js +164 -0
  60. package/dist/nodes/data-fabric/flow/factories.d.ts +113 -0
  61. package/dist/nodes/data-fabric/flow/factories.js +134 -0
  62. package/dist/nodes/data-fabric/flow/family.d.ts +7 -0
  63. package/dist/nodes/data-fabric/flow/family.js +9 -0
  64. package/dist/nodes/data-fabric/flow/index.d.ts +8 -0
  65. package/dist/nodes/data-fabric/flow/index.js +8 -0
  66. package/dist/nodes/data-fabric/flow/raw.d.ts +32 -0
  67. package/dist/nodes/data-fabric/flow/raw.js +100 -0
  68. package/dist/nodes/data-fabric/flow/shared.d.ts +77 -0
  69. package/dist/nodes/data-fabric/flow/shared.js +174 -0
  70. package/dist/nodes/data-fabric/flow/spec.d.ts +238 -0
  71. package/dist/nodes/data-fabric/flow/spec.js +1 -0
  72. package/dist/nodes/data-fabric/flow/verbs.d.ts +29 -0
  73. package/dist/nodes/data-fabric/flow/verbs.js +239 -0
  74. package/dist/nodes/delay/flow/check.d.ts +16 -0
  75. package/dist/nodes/delay/flow/check.js +86 -0
  76. package/dist/nodes/delay/flow/factories.d.ts +28 -0
  77. package/dist/nodes/delay/flow/factories.js +38 -0
  78. package/dist/nodes/delay/flow/family.d.ts +3 -0
  79. package/dist/nodes/delay/flow/family.js +8 -0
  80. package/dist/nodes/delay/flow/index.d.ts +3 -0
  81. package/dist/nodes/delay/flow/index.js +3 -0
  82. package/dist/nodes/delay/flow/node-type.d.ts +13 -0
  83. package/dist/nodes/delay/flow/node-type.js +71 -0
  84. package/dist/nodes/delay/flow/spec.d.ts +43 -0
  85. package/dist/nodes/delay/flow/spec.js +16 -0
  86. package/dist/nodes/document/flow/factories.d.ts +27 -0
  87. package/dist/nodes/document/flow/factories.js +30 -0
  88. package/dist/nodes/document/flow/family.d.ts +3 -0
  89. package/dist/nodes/document/flow/family.js +7 -0
  90. package/dist/nodes/document/flow/index.d.ts +3 -0
  91. package/dist/nodes/document/flow/index.js +3 -0
  92. package/dist/nodes/document/flow/node-type.d.ts +14 -0
  93. package/dist/nodes/document/flow/node-type.js +150 -0
  94. package/dist/nodes/document/flow/spec.d.ts +65 -0
  95. package/dist/nodes/document/flow/spec.js +1 -0
  96. package/dist/nodes/mock/flow/factories.d.ts +51 -0
  97. package/dist/nodes/mock/flow/factories.js +47 -0
  98. package/dist/nodes/mock/flow/family.d.ts +3 -0
  99. package/dist/nodes/mock/flow/family.js +7 -0
  100. package/dist/nodes/mock/flow/index.d.ts +2 -0
  101. package/dist/nodes/mock/flow/index.js +2 -0
  102. package/dist/nodes/mock/flow/node-type.d.ts +11 -0
  103. package/dist/nodes/mock/flow/node-type.js +51 -0
  104. package/dist/nodes/script/flow/check.d.ts +19 -0
  105. package/dist/nodes/script/flow/check.js +49 -0
  106. package/dist/nodes/script/flow/factories.d.ts +14 -0
  107. package/dist/nodes/script/flow/factories.js +15 -0
  108. package/dist/nodes/script/flow/family.d.ts +3 -0
  109. package/dist/nodes/script/flow/family.js +8 -0
  110. package/dist/nodes/script/flow/index.d.ts +3 -0
  111. package/dist/nodes/script/flow/index.js +3 -0
  112. package/dist/nodes/script/flow/node-type.d.ts +7 -0
  113. package/dist/nodes/script/flow/node-type.js +125 -0
  114. package/dist/nodes/script/flow/spec.d.ts +52 -0
  115. package/dist/nodes/script/flow/spec.js +1 -0
  116. package/dist/nodes/transform/flow/check.d.ts +6 -0
  117. package/dist/nodes/transform/flow/check.js +229 -0
  118. package/dist/nodes/transform/flow/factories.d.ts +52 -0
  119. package/dist/nodes/transform/flow/factories.js +53 -0
  120. package/dist/nodes/transform/flow/family.d.ts +3 -0
  121. package/dist/nodes/transform/flow/family.js +8 -0
  122. package/dist/nodes/transform/flow/index.d.ts +3 -0
  123. package/dist/nodes/transform/flow/index.js +3 -0
  124. package/dist/nodes/transform/flow/node-type.d.ts +7 -0
  125. package/dist/nodes/transform/flow/node-type.js +245 -0
  126. package/dist/nodes/transform/flow/spec.d.ts +116 -0
  127. package/dist/nodes/transform/flow/spec.js +10 -0
  128. package/dist/raw-node-advice.d.ts +16 -0
  129. package/dist/raw-node-advice.js +36 -0
  130. package/dist/raw-node.d.ts +71 -0
  131. package/dist/raw-node.js +116 -0
  132. package/dist/registry/uip/pipeline-front-door.js +5 -3
  133. package/dist/serialize.js +246 -549
  134. package/package.json +2 -2
@@ -108,6 +108,7 @@ export function registerFlowCommands(program) {
108
108
  .option('--original <file>', '(required) original .flow path, the artifact to merge into')
109
109
  .option('-o, --output <file>', 'merged output path')
110
110
  .option('--baseline <file>', 'compiled pristine decompile')
111
+ .option('--strict', 'refuse when the no-edit round trip (--baseline) differs from the original')
111
112
  .allowExcessArguments()
112
113
  .action(async (_edited, options, command) => {
113
114
  const pair = namedOrLegacySecond(command, {
@@ -120,6 +121,8 @@ export function registerFlowCommands(program) {
120
121
  const argv = [original, edited];
121
122
  addValue(argv, '-o', options.output);
122
123
  addValue(argv, '--baseline', options.baseline);
124
+ if (options.strict)
125
+ argv.push('--strict');
123
126
  await invoke('flow merge', () => loadTool(import.meta.url, '../../merge-cli.js'), argv);
124
127
  });
125
128
  }
@@ -167,7 +167,14 @@ export async function run(argv) {
167
167
  // families the SDK cannot into the same directory (including `internal`
168
168
  // built-ins such as `load-attachments`), so anything else found there is
169
169
  // someone else's and is left alone.
170
+ //
171
+ // Owning the TYPE is not owning the FILE, though. Decompile keeps a canvas
172
+ // agent's `source` directory, so compiling decompiled source to another `.flow`
173
+ // in the same project writes into the ORIGINAL flow's agent directory, and the
174
+ // canvas resources there are still that flow's. A resource another
175
+ // `.flow` beside this one references by `inputs.source` is never pruned.
170
176
  const removedResources = [];
177
+ const referencedElsewhere = resourceSourcesOfOtherFlows(outDir, resolve(out));
171
178
  const owned = new Set(sidecars
172
179
  .filter((s) => /\/resources\/[^/]+\/resource\.json$/.test(s.path))
173
180
  .map((s) => resolve(outDir, s.path)));
@@ -182,6 +189,11 @@ export async function run(argv) {
182
189
  const file = join(resourcesDir, entry, 'resource.json');
183
190
  if (!existsSync(file) || owned.has(file))
184
191
  continue;
192
+ const user = referencedElsewhere.get(entry);
193
+ if (user !== undefined) {
194
+ console.log(`compile: kept ${join('resources', entry, 'resource.json')}: ${user} still references it`);
195
+ continue;
196
+ }
185
197
  let body;
186
198
  try {
187
199
  body = JSON.parse(readFileSync(file, 'utf8'));
@@ -248,3 +260,42 @@ function serializeWarningDiagnostic(w) {
248
260
  return { level: 'warning', code: w.code, message: w.message };
249
261
  }
250
262
  runWhenInvokedDirectly(import.meta.url, 'compile', run);
263
+ /**
264
+ * The `inputs.source` uuids the OTHER `.flow` files in `dir` reference, each
265
+ * mapped to the first file that does. `dir` is the namespace sidecar paths are
266
+ * relative to, so these are the agent resources another flow still uses. The
267
+ * flow being written (`self`) is left out: what it no longer references is what
268
+ * pruning is for. Subflow bodies are included; an unreadable file contributes
269
+ * nothing.
270
+ */
271
+ function resourceSourcesOfOtherFlows(dir, self) {
272
+ const users = new Map();
273
+ let entries;
274
+ try {
275
+ entries = readdirSync(dir).filter((f) => f.endsWith('.flow') && resolve(dir, f) !== self);
276
+ }
277
+ catch {
278
+ return users;
279
+ }
280
+ for (const f of entries) {
281
+ let flow;
282
+ try {
283
+ flow = JSON.parse(readFileSync(join(dir, f), 'utf8'));
284
+ }
285
+ catch {
286
+ continue;
287
+ }
288
+ const walk = (scope) => {
289
+ const s = scope;
290
+ for (const n of Array.isArray(s?.nodes) ? s.nodes : []) {
291
+ const src = n?.inputs?.source;
292
+ if (typeof src === 'string' && !users.has(src))
293
+ users.set(src, f);
294
+ }
295
+ if (s?.subflows && typeof s.subflows === 'object')
296
+ Object.values(s.subflows).forEach(walk);
297
+ };
298
+ walk(flow);
299
+ }
300
+ return users;
301
+ }