@uipath/maestro-builder-sdk 6.15.0 → 6.15.2

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 CHANGED
@@ -118,8 +118,8 @@ could hand you spans for a version you do not have.
118
118
  | `endCall` | function | `dist/core/actions.d.ts:2935-2942` | Actions | Hang up (`uipath.conversational.voice.end-call`). |
119
119
  | `EndCallInputs` | interface | `dist/core/actions.d.ts:729-736` | Option shapes | 1 field(s) |
120
120
  | `entryInput` | function | `dist/core/expr.d.ts:56-66` | Expressions and types | Reference an ENTRY POINT's scoped input: `entryInput('nightly', 'batchDate')` reads `$vars.nightly.output.batchDate` —… |
121
- | `err` | function | `dist/core/expr.d.ts:148-235` | Expressions and types | Reference a FAILED step's error → `$vars.<step>.error[.<field>]`. |
122
- | `ErrorEnvelopeField` | type | `dist/core/expr.d.ts:137-147` | Supporting types | The fields a failure envelope carries. |
121
+ | `err` | function | `dist/core/expr.d.ts:147-234` | Expressions and types | Reference a FAILED step's error → `$vars.<step>.error[.<field>]`. |
122
+ | `ErrorEnvelopeField` | type | `dist/core/expr.d.ts:136-146` | Supporting types | The fields a failure envelope carries. |
123
123
  | `EscalationRef` | interface | `dist/core/actions.d.ts:1912-1966` | Supporting types | One escalation an inline agent may raise — an Action Center app task a human completes (the `coded-action-app` variant,… |
124
124
  | `EventFilter` | type | `dist/core/actions.d.ts:3343-3384` | Supporting types | One filter condition on the event payload. |
125
125
  | `EventSubscription` | interface | `dist/core/actions.d.ts:3430-3468` | Option shapes | What a connector event subscribes to. |
@@ -166,7 +166,7 @@ could hand you spans for a version you do not have.
166
166
  | `ixpExtract` | function | `dist/core/actions.d.ts:2645-2699` | Actions | Extract fields from a document with a published IxP project — the platform's **Extract** node (`uipath.ixp.*`, service… |
167
167
  | `IxpExtractInputs` | interface | `dist/core/actions.d.ts:867-941` | Option shapes | 9 field(s) |
168
168
  | `IxpToolRef` | interface | `dist/core/actions.d.ts:1873-1911` | Supporting types | A published IxP (Intelligent eXtraction Platform) project as a tool — the agent decides when to extract a document and… |
169
- | `js` | function | `dist/core/expr.d.ts:236-247` | Expressions and types | Build a raw JS *expression* (a condition or computation). |
169
+ | `js` | function | `dist/core/expr.d.ts:235-246` | Expressions and types | Build a raw JS *expression* (a condition or computation). |
170
170
  | `lit` | function | `dist/core/expr.d.ts:22-28` | Expressions and types | A constant value baked directly into a node input. |
171
171
  | `lookup` | function | `dist/core/lookups.d.ts:95-102` | Generated descriptors | Begin resolving a lookup field on a generated descriptor. |
172
172
  | `lookup` | function | `dist/core/lookups.d.ts:103-122` | Generated descriptors | Begin resolving a lookup field addressed by connector key and action. |
@@ -189,7 +189,7 @@ could hand you spans for a version you do not have.
189
189
  | `NodeOptions` | interface | `dist/flow-sdk.d.ts:308-353` | Option shapes | Options shared by every builder method that creates a definition-backed node: `version` selects the exact node… |
190
190
  | `onEvent` | function | `dist/flow-sdk.d.ts:140-177` | Flow construction | Start the flow when a connector event fires — e.g. an email arriving in a mailbox folder. |
191
191
  | `onEvent` | function | `dist/flow-sdk.d.ts:178-185` | Flow construction | Stringly form, for an event with no prepared module. |
192
- | `out` | function | `dist/core/expr.d.ts:67-89` | Expressions and types | Reference an upstream step's output → `$vars.<step>.output[.<path>]`. |
192
+ | `out` | function | `dist/core/expr.d.ts:67-88` | Expressions and types | Reference an upstream step's output → `$vars.<step>.output[.<path>]`. |
193
193
  | `Outcome` | type | `dist/core/actions.d.ts:465-476` | Supporting types | One completion button. |
194
194
  | `OutputColumn` | interface | `dist/core/actions.d.ts:827-833` | Supporting types | One column Batch Transform appends to the CSV. |
195
195
  | `PortArm` | interface | `dist/flow-sdk.d.ts:295-307` | Supporting types | One arm of a built `.stepSwitch` — the same shape as SwitchArm, but `value` names an exit the ACTION declares (a… |
@@ -200,7 +200,7 @@ could hand you spans for a version you do not have.
200
200
  | `queueItem` | function | `dist/core/actions.d.ts:3256-3301` | Actions | Declare an Orchestrator QUEUE ITEM step. |
201
201
  | `QueueItemInputs` | interface | `dist/core/actions.d.ts:2004-2077` | Option shapes | 10 field(s) |
202
202
  | `QueuePriority` | type | `dist/core/actions.d.ts:2002-2003` | Supporting types | The three priorities an Orchestrator queue item can carry. |
203
- | `ran` | function | `dist/core/expr.d.ts:90-136` | Expressions and types | Did this step run? |
203
+ | `ran` | function | `dist/core/expr.d.ts:89-135` | Expressions and types | Did this step run? |
204
204
  | `rawNode` | function | `dist/core/node-classes.d.ts:180-242` | Supporting types | Place a node this SDK has no factory for, carrying its definition verbatim (`uipath.exotic.thing@2.1` and the manifest… |
205
205
  | `RawReference` | type | `dist/core/lookups.d.ts:190-198` | Supporting types | |
206
206
  | `refuseLookupToken` | function | `dist/core/lookups.d.ts:207-226` | Generated descriptors | Refuse a lookup token where the family cannot resolve one. |
@@ -232,7 +232,7 @@ could hand you spans for a version you do not have.
232
232
  | `summarize` | function | `dist/core/actions.d.ts:2569-2609` | Actions | Summarize a document with citations — the platform's **Summarize** node. |
233
233
  | `SummarizeInputs` | interface | `dist/core/actions.d.ts:794-826` | Option shapes | 3 field(s) |
234
234
  | `SwitchArm` | interface | `dist/flow-sdk.d.ts:289-294` | Supporting types | One arm of a built `.switch` (the serializer's view: body already collected). |
235
- | `tmpl` | function | `dist/core/expr.d.ts:248-258` | Expressions and types | Build a JS *string template* (for URLs, messages, etc.). |
235
+ | `tmpl` | function | `dist/core/expr.d.ts:247-257` | Expressions and types | Build a JS *string template* (for URLs, messages, etc.). |
236
236
  | `ToolRef` | type | `dist/core/actions.d.ts:1639-1648` | Supporting types | One tool on an inline agent — a discriminated union over the kinds the tenant's registry actually serves… |
237
237
  | `transform` | function | `dist/core/actions.d.ts:2471-2516` | Actions | Declare a Transform action — a chain of declarative operations over a collection. |
238
238
  | `Transformation` | type | `dist/core/actions.d.ts:245-246` | Supporting types | What a map does to a field's value. |
@@ -244,8 +244,8 @@ could hand you spans for a version you do not have.
244
244
  | `TriggerMeta` | interface | `dist/core/connectors.d.ts:120-129` | Generated descriptors | Runtime metadata a generated trigger descriptor carries. |
245
245
  | `TriggerOptions` | interface | `dist/core/actions.d.ts:3385-3429` | Option shapes | The typed `onEvent`/`waitForEvent` options — everything an EventSubscription carries except `connector`/`event`, which… |
246
246
  | `TriggerSpec` | type | `dist/flow-sdk.d.ts:111-129` | Supporting types | What starts the flow. |
247
- | `TypeDesc` | type | `dist/core/expr.d.ts:323` | Supporting types | |
248
- | `types` | const | `dist/core/expr.d.ts:307-322` | Expressions and types | Variable type descriptors (map to Flow variable `type` values). |
247
+ | `TypeDesc` | type | `dist/core/expr.d.ts:322` | Supporting types | |
248
+ | `types` | const | `dist/core/expr.d.ts:306-321` | Expressions and types | Variable type descriptors (map to Flow variable `type` values). |
249
249
  | `unresolvedLookupMessage` | function | `dist/core/lookups.d.ts:180-189` | Generated descriptors | The message for a lookup nothing has resolved — the command that fixes it. |
250
250
  | `v` | function | `dist/core/expr.d.ts:29-35` | Expressions and types | Reference a flow-level variable or input by name → `$vars.<name>`. |
251
251
  | `VarDecl` | interface | `dist/flow-sdk.d.ts:47-57` | Supporting types | 6 field(s) |
@@ -337,7 +337,7 @@ could hand you spans for a version you do not have.
337
337
  | `TriggerDescriptor` | type | `dist/core/connectors.d.ts:130-138` | Supporting types | A generated, typed connector-trigger descriptor: TriggerMeta branded with phantom `where`/output types. |
338
338
  | `TriggerMeta` | interface | `dist/core/connectors.d.ts:120-129` | Supporting types | Runtime metadata a generated trigger descriptor carries. |
339
339
  | `TriggerOptions` | interface | `dist/core/actions.d.ts:3385-3429` | Option shapes | The typed `onEvent`/`waitForEvent` options — everything an EventSubscription carries except `connector`/`event`, which… |
340
- | `TypeDesc` | type | `dist/core/expr.d.ts:323` | Supporting types | |
340
+ | `TypeDesc` | type | `dist/core/expr.d.ts:322` | Supporting types | |
341
341
  | `UnresolvedReferenceTaskKind` | type | `dist/case/case-sdk.d.ts:358-359` | Supporting types | Published-resource task kinds that the Case schema permits as unresolved skeletons. |
342
342
  | `WaitConnectorPlaceholderSpec` | interface | `dist/case/case-sdk.d.ts:360-370` | Supporting types | A `wait-for-connector` subscription: suspend on an Integration Service event. |
343
343
  | `WaitConnectorSpec` | type | `dist/case/case-sdk.d.ts:371-375` | Supporting types | A placeholder connector/operation pair, or a library-resolved event subscription using the same symbolic shape as Flow… |
@@ -435,7 +435,7 @@ could hand you spans for a version you do not have.
435
435
  | `TimerLike` | type | `dist/bpmn/bpmn-sdk.d.ts:39-40` | Supporting types | A timer as an ISO-8601 duration string (shorthand for `{ duration }`) or a full spec. |
436
436
  | `TimerSpec` | interface | `dist/bpmn/bpmn-sdk.d.ts:30-38` | Supporting types | ISO-8601 timer specification (one of duration / date / cycle). |
437
437
  | `TypedContextRow` | interface | `dist/bpmn/typed-node.d.ts:155-186` | Supporting types | One `uipath:context` input row, spelled out. |
438
- | `TypeDesc` | type | `dist/core/expr.d.ts:323` | Supporting types | |
438
+ | `TypeDesc` | type | `dist/core/expr.d.ts:322` | Supporting types | |
439
439
  | `TypedInputRow` | interface | `dist/bpmn/typed-node.d.ts:187-209` | Supporting types | One `uipath:input` payload row spelled out — the `separateInputs` counterpart of TypedContextRow. |
440
440
  | `TypedOutputRow` | interface | `dist/bpmn/typed-node.d.ts:246-285` | Supporting types | 9 field(s) |
441
441
  | `VarDirection` | type | `dist/bpmn/bpmn-sdk.d.ts:358-362` | Supporting types | How a variable is exposed: `'input'` (read-only entry input), `'output'` (a return value), or `'inputOutput'` (a mutable… |
@@ -23,9 +23,9 @@
23
23
  */
24
24
  import { reportResult } from '../cli-result.js';
25
25
  import { typeStripDecision } from '../node-runtime.js';
26
- import { readFileSync, writeFileSync } from 'node:fs';
26
+ import { readFileSync } from 'node:fs';
27
27
  import { basename, resolve } from 'node:path';
28
- import { defaultSourceOut } from '../workdir.js';
28
+ import { defaultSourceOut, writeSource } from '../workdir.js';
29
29
  import { runWhenInvokedDirectly } from '../cli-run.js';
30
30
  import { decompile } from './decompile.js';
31
31
  import { sameGraph } from './lift-verify.js';
@@ -104,7 +104,7 @@ export async function run(argv) {
104
104
  }
105
105
  const base = basename(input).replace(/\.bpmn$/, '');
106
106
  const out = opt(argv, '-o') ?? defaultSourceOut(`${base}.bpmn.ts`);
107
- writeFileSync(out, source);
107
+ writeSource(out, source);
108
108
  console.log(`decompile: wrote ${out}`);
109
109
  if (pruned.length) {
110
110
  // Never silent: these are declarations the source had and the output does not.
@@ -19,7 +19,7 @@ import { reportResult } from '../cli-result.js';
19
19
  import { mkdirSync, existsSync, readFileSync, writeFileSync } from 'node:fs';
20
20
  import { resolveLibraryDir } from '../registry/cache.js';
21
21
  import { basename, join, resolve } from 'node:path';
22
- import { defaultSourceOut, workDirBeside } from '../workdir.js';
22
+ import { defaultSourceOut, workDirBeside, writeSource } from '../workdir.js';
23
23
  import { runWhenInvokedDirectly } from '../cli-run.js';
24
24
  import { Library } from '../core/library.js';
25
25
  import { decompileWithDiagnostics } from './decompile.js';
@@ -66,7 +66,7 @@ export function run(argv) {
66
66
  bestEffort,
67
67
  });
68
68
  const out = opt(argv, '-o') ?? defaultSourceOut(`${baseName(plan)}.case.ts`);
69
- writeFileSync(out, result.source);
69
+ writeSource(out, result.source);
70
70
  console.log(`decompile: wrote ${basename(out)}`);
71
71
  reportResult({ path: resolve(out), diagnostics: result.diagnostics.map((d) => ({ code: d.code, location: d.location, message: d.message })) });
72
72
  for (const diagnostic of result.diagnostics) {
package/dist/check.js CHANGED
@@ -894,20 +894,17 @@ function checkFlow(built, ancestors, opts = {}) {
894
894
  // Both forms resolve at run time — measured, `$vars.call["output"].x` and
895
895
  // `$vars["call"].output.x` both returned the value — so this is not a broken
896
896
  // read. It is an unrewritable one. Every reference the SDK emits goes through
897
- // `renameRefs`, whose regex matches the DOTTED form only, and three separate
897
+ // `renameRefs`, whose regex matches the DOTTED form only, and two separate
898
898
  // rewrites ride on it:
899
899
  //
900
900
  // * a subflow copy renames node ids (`rename.nodeIds`), so a bracketed read
901
901
  // keeps pointing at the uncopied name;
902
- // * the queue family publishes its result as `<step>.response`, not
903
- // `<step>.output` (`rename.runtimeOutputs`), so the two spellings read
904
- // DIFFERENT variables;
905
902
  // * a failure envelope resolves per node family (`rename.errorEnvelopes`).
906
903
  //
907
- // So the bracketed spelling is correct only for as long as none of those
904
+ // So the bracketed spelling is correct only for as long as neither of those
908
905
  // applies to the step — and it fails silently when one starts to. This is the
909
906
  // shape an eval agent actually wrote (`$vars.enqueue["output"].Key` on a queue
910
- // step, where the emitted read had to be `.response.Key`).
907
+ // step, at a time when the SDK still aliased queue reads to `.response`, #891).
911
908
  //
912
909
  // Deeper brackets are untouched: `$vars.rows.output["odd key"]` is ordinary
913
910
  // data access, it is the only way to spell a key that is not an identifier,
@@ -916,16 +913,15 @@ function checkFlow(built, ancestors, opts = {}) {
916
913
  const flag = (name, read, key) => {
917
914
  const suggestion = key === 'error'
918
915
  ? `err('${name}', 'message')`
919
- : key && key !== 'output' && key !== 'response'
916
+ : key && key !== 'output'
920
917
  ? `out('${name}', '${key}')`
921
918
  : `out('${name}')`;
922
919
  diags.push({
923
920
  level: 'error',
924
921
  code: 'VARS_BRACKET_READ',
925
922
  message: `"${read}" in "${step}" reaches step "${name}" through a bracket. It resolves today, but only the `
926
- + `DOTTED form is rewritten on the way out: a subflow copy renames node ids, the queue family publishes `
927
- + `its result as "${name}.response" rather than "${name}.output", and a failure envelope resolves per node `
928
- + `family. A bracketed read opts out of all three and goes silently stale when one applies.`,
923
+ + `DOTTED form is rewritten on the way out: a subflow copy renames node ids, and a failure envelope `
924
+ + `resolves per node family. A bracketed read opts out of both and goes silently stale when one applies.`,
929
925
  step,
930
926
  suggestion,
931
927
  });
@@ -72,10 +72,9 @@ export declare function entryInput(entryPointId: string, name: string): Expr;
72
72
  * Write the reference this way, or dotted by hand — never through a bracket
73
73
  * (`$vars.fetchRate["output"]`, `$vars["fetchRate"].output`). Both of those
74
74
  * resolve at run time, so the mistake is invisible, but only the DOTTED form is
75
- * rewritten on the way out: a subflow copy renames node ids, the queue family
76
- * publishes its result as `<step>.response`, and a failure envelope resolves per
77
- * node family. A bracketed read opts out of all three and goes stale the moment
78
- * one applies. `path` may still bracket INTO the value — `out('rows', 'items')`
75
+ * rewritten on the way out: a subflow copy renames node ids, and a failure
76
+ * envelope resolves per node family. A bracketed read opts out of both and goes
77
+ * stale the moment one applies. `path` may still bracket INTO the value — `out('rows', 'items')`
79
78
  * then `["odd key"]` — because nothing rewrites past the runtime variable.
80
79
  *
81
80
  * @param step - The step whose result to read, named as it was in `.step(...)`.
package/dist/core/expr.js CHANGED
@@ -92,10 +92,9 @@ export function entryInput(entryPointId, name) {
92
92
  * Write the reference this way, or dotted by hand — never through a bracket
93
93
  * (`$vars.fetchRate["output"]`, `$vars["fetchRate"].output`). Both of those
94
94
  * resolve at run time, so the mistake is invisible, but only the DOTTED form is
95
- * rewritten on the way out: a subflow copy renames node ids, the queue family
96
- * publishes its result as `<step>.response`, and a failure envelope resolves per
97
- * node family. A bracketed read opts out of all three and goes stale the moment
98
- * one applies. `path` may still bracket INTO the value — `out('rows', 'items')`
95
+ * rewritten on the way out: a subflow copy renames node ids, and a failure
96
+ * envelope resolves per node family. A bracketed read opts out of both and goes
97
+ * stale the moment one applies. `path` may still bracket INTO the value — `out('rows', 'items')`
99
98
  * then `["odd key"]` — because nothing rewrites past the runtime variable.
100
99
  *
101
100
  * @param step - The step whose result to read, named as it was in `.step(...)`.
@@ -20,7 +20,7 @@
20
20
  import { reportResult } from './cli-result.js';
21
21
  import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
22
22
  import { basename, join, resolve } from 'node:path';
23
- import { defaultSourceOut, workDirBeside } from './workdir.js';
23
+ import { defaultSourceOut, workDirBeside, writeSource } from './workdir.js';
24
24
  import { decompile } from './decompile.js';
25
25
  import { resolveFlowRefs } from './ref-resolve.js';
26
26
  import { runWhenInvokedDirectly } from './cli-run.js';
@@ -67,7 +67,7 @@ export function run(argv) {
67
67
  warn: (message) => console.error(`flow-decompile: warning: ${message}`),
68
68
  });
69
69
  const out = opt(argv, '-o') ?? defaultSourceOut(`${baseName(flow)}.flow.ts`);
70
- writeFileSync(out, ts);
70
+ writeSource(out, ts);
71
71
  console.log(`flow-decompile: wrote ${basename(out)}`);
72
72
  reportResult({ path: resolve(out) });
73
73
  if (!argv.includes('--no-pipeline')) {
package/dist/serialize.js CHANGED
@@ -3284,7 +3284,7 @@ function clone(x) {
3284
3284
  function subNodeId(obj, nodeId) {
3285
3285
  return JSON.parse(JSON.stringify(obj).split('{nodeId}').join(nodeId));
3286
3286
  }
3287
- const NO_RENAME = { nodeIds: new Map(), runtimeOutputs: new Map(), errorEnvelopes: new Map() };
3287
+ const NO_RENAME = { nodeIds: new Map(), errorEnvelopes: new Map() };
3288
3288
  /**
3289
3289
  * Which runtime variable holds a failed node's envelope, by node type.
3290
3290
  *
@@ -3944,7 +3944,7 @@ function newScope(outputs, vars = []) {
3944
3944
  ...outputs.map((o) => [o.name, o.type]),
3945
3945
  ...vars.map((vd) => [vd.name, vd.type]),
3946
3946
  ]),
3947
- rename: { nodeIds: new Map(), runtimeOutputs: new Map(), errorEnvelopes: new Map() },
3947
+ rename: { nodeIds: new Map(), errorEnvelopes: new Map() },
3948
3948
  pending: new Map(),
3949
3949
  agentSchemas: [],
3950
3950
  stepNodeId: new Map(),
@@ -4190,22 +4190,18 @@ function terminateOutputs(scope) {
4190
4190
  * same name (an error in its own right — DUP_STEP).
4191
4191
  */
4192
4192
  function renameRefs(text, rename) {
4193
- if (rename.nodeIds.size === 0 && rename.runtimeOutputs.size === 0 && rename.errorEnvelopes.size === 0)
4193
+ if (rename.nodeIds.size === 0 && rename.errorEnvelopes.size === 0)
4194
4194
  return text;
4195
4195
  // `.error` matches only with a FIELD behind it: a bare `$vars.<step>.error` is
4196
4196
  // the boolean "did this fail" (`err('<step>')`), which is truthy on every
4197
4197
  // family — the envelope object included — and must be left alone.
4198
- return text.replace(/\$vars\.([A-Za-z0-9_]+)(\.output\b|\.error(?=\.[A-Za-z0-9_]))?/g, (m, name, tail) => {
4198
+ return text.replace(/\$vars\.([A-Za-z0-9_]+)(\.error(?=\.[A-Za-z0-9_]))?/g, (m, name, tail) => {
4199
4199
  const to = rename.nodeIds.get(name);
4200
4200
  const nodeId = to && to.length > 0 ? to[0] : name;
4201
4201
  if (!tail)
4202
4202
  return nodeId === name ? m : `$vars.${nodeId}`;
4203
- if (tail === '.error') {
4204
- const envelope = rename.errorEnvelopes.get(name) ?? 'error';
4205
- return `$vars.${nodeId}.${envelope}`;
4206
- }
4207
- const runtimeOutput = rename.runtimeOutputs.get(name) ?? 'output';
4208
- return `$vars.${nodeId}.${runtimeOutput}`;
4203
+ const envelope = rename.errorEnvelopes.get(name) ?? 'error';
4204
+ return `$vars.${nodeId}.${envelope}`;
4209
4205
  });
4210
4206
  }
4211
4207
  /** Every step name a flow declares in its own scope (not its children's). */
@@ -5310,12 +5306,12 @@ export function serialize(built, opts = {}) {
5310
5306
  resourceBindings.set(b.id, b);
5311
5307
  const def = queueItemDef(s, step.name, ids);
5312
5308
  const id = stepUid(scope, step.name);
5313
- // Queue manifests describe the logical result as `output`, which is what
5314
- // out('step', path) type-checks against. The product's BPMN serializer,
5315
- // however, publishes both queue variants under `$vars.<step>.response`.
5316
- // Record that boundary alias once so every SDK expression renderer uses
5317
- // the runtime path while the public output contract stays unchanged.
5318
- scope.rename.runtimeOutputs.set(step.name, 'response');
5309
+ // The result is read as `$vars.<step>.output`, like every other family: the
5310
+ // node's own output block maps the runtime `response` onto the variable
5311
+ // `output` (`source: "=response", var: "output"`), and the product honours
5312
+ // that mapping for both queue variants. (An alias to `.response` lived here
5313
+ // from #273 until #891; a live debug run on 2026-10-01 measured
5314
+ // `.output.Key` populated and `.response` undefined.)
5319
5315
  const node = makeNode(def.nodeType, id, step.name, { parentId, requestedVersion: step.options?.version, def });
5320
5316
  // The node KEEPS its copy of the model here, unlike the rpa families. Two
5321
5317
  // reasons: it is what the one queue instance the repo has carries, and it is
@@ -5856,7 +5852,7 @@ export function serialize(built, opts = {}) {
5856
5852
  // Record the failure-envelope boundary BEFORE any expression is rendered, so
5857
5853
  // a handler that reads this step resolves against the right variable. The
5858
5854
  // handler is emitted after the step it guards, so recording it here is early
5859
- // enough — the same ordering the queue family's `runtimeOutputs` alias relies on.
5855
+ // enough.
5860
5856
  const envelope = errorEnvelopeVar(type);
5861
5857
  if (envelope)
5862
5858
  scope.rename.errorEnvelopes.set(step.name, envelope);
package/dist/workdir.d.ts CHANGED
@@ -33,3 +33,13 @@ export declare function ensureWorkDir(cwd?: string): void;
33
33
  export declare function workDirBeside(path: string): string;
34
34
  /** The default path of a decompiled source named `file`, creating the work directory. */
35
35
  export declare function defaultSourceOut(file: string): string;
36
+ /**
37
+ * Write a decompiled source to `path`, creating its folder first if it is
38
+ * missing (`recursive: true`: an existing folder is not an error).
39
+ *
40
+ * `-o .flow-sdk/Order.flow.ts` on a fresh workspace has no `.flow-sdk/` yet;
41
+ * only the default path ({@link defaultSourceOut}) used to create it, so the
42
+ * documented explicit form failed with ENOENT and the author had to
43
+ * `mkdir -p` and retry.
44
+ */
45
+ export declare function writeSource(path: string, text: string): void;
package/dist/workdir.js CHANGED
@@ -24,7 +24,7 @@
24
24
  * rather than split across two places. When both exist, `.flow-sdk/` wins and
25
25
  * stderr says the root one is ignored.
26
26
  */
27
- import { existsSync, mkdirSync } from 'node:fs';
27
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
28
28
  import { basename, dirname, join } from 'node:path';
29
29
  /** The hidden directory, relative to the current directory. */
30
30
  export const WORK_DIR = '.flow-sdk';
@@ -94,3 +94,16 @@ export function defaultSourceOut(file) {
94
94
  ensureWorkDir();
95
95
  return inWorkDir(file);
96
96
  }
97
+ /**
98
+ * Write a decompiled source to `path`, creating its folder first if it is
99
+ * missing (`recursive: true`: an existing folder is not an error).
100
+ *
101
+ * `-o .flow-sdk/Order.flow.ts` on a fresh workspace has no `.flow-sdk/` yet;
102
+ * only the default path ({@link defaultSourceOut}) used to create it, so the
103
+ * documented explicit form failed with ENOENT and the author had to
104
+ * `mkdir -p` and retry.
105
+ */
106
+ export function writeSource(path, text) {
107
+ mkdirSync(dirname(path), { recursive: true });
108
+ writeFileSync(path, text);
109
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uipath/maestro-builder-sdk",
3
- "version": "6.15.0",
3
+ "version": "6.15.2",
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": "53decf03bc03a94d1e1ff7d17d07fcc195a16846"
95
+ "gitref": "0b7e3bb5985faa13fef763c45e3d69ef07a4d346"
96
96
  }