@uipath/maestro-builder-sdk 6.32.0 → 6.32.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
@@ -57,13 +57,13 @@ could hand you spans for a version you do not have.
57
57
  | `apiWorkflow` | function | `dist/core/actions.d.ts:1715-1749` | Actions | Invoke a deployed API workflow — a coded workflow published to Orchestrator, run as a serverless job rather than by a… |
58
58
  | `ApiWorkflowInputs` | interface | `dist/core/actions.d.ts:468-499` | Option shapes | 5 field(s) |
59
59
  | `AppRef` | interface | `dist/nodes/hitl/flow/spec.d.ts:140-185` | Supporting types | A deployed Action App that supplies a human task's form — the `'action-app'` variant's subject. |
60
- | `ArmBuilder` | class | `dist/flow-sdk.d.ts:1252-1275` | Builders | The sub-builder an ARM callback receives — a `StepList` that can also name itself with `.label(...)`. |
60
+ | `ArmBuilder` | class | `dist/flow-sdk.d.ts:1267-1290` | Builders | The sub-builder an ARM callback receives — a `StepList` that can also name itself with `.label(...)`. |
61
61
  | `AskedField` | interface | `dist/core/actions.d.ts:126-141` | Supporting types | A value the reviewer FILLS IN: read downstream with `out('<step>', '<id>')`. |
62
62
  | `batchTransform` | function | `dist/nodes/ai-patterns/flow/factories.d.ts:49-83` | Actions | Add AI-generated columns to a CSV — the platform's **Batch transform** node, `uipath.pattern.batch-transform` (service… |
63
63
  | `BatchTransformInputs` | interface | `dist/nodes/ai-patterns/flow/spec.d.ts:48-63` | Option shapes | 4 field(s) |
64
64
  | `BindingContribution` | interface | `dist/core/node-classes.d.ts:80-101` | Supporting types | A resource binding a contribution hoists to the flow's top-level `bindings` array — the shape the `.flow` format… |
65
- | `BuiltEntryPoint` | interface | `dist/flow-sdk.d.ts:728-740` | Supporting types | One additional flow root, built by `.entryPoint()`. |
66
- | `BuiltFlow` | interface | `dist/flow-sdk.d.ts:741-788` | Supporting types | 17 field(s) |
65
+ | `BuiltEntryPoint` | interface | `dist/flow-sdk.d.ts:731-743` | Supporting types | One additional flow root, built by `.entryPoint()`. |
66
+ | `BuiltFlow` | interface | `dist/flow-sdk.d.ts:744-791` | Supporting types | 17 field(s) |
67
67
  | `BuiltinToolName` | type | `dist/core/actions.d.ts:1123-1124` | Supporting types | The three platform-shipped built-in tools (fixed registry types). |
68
68
  | `BuiltinToolRef` | interface | `dist/core/actions.d.ts:1256-1276` | Supporting types | A platform built-in tool. |
69
69
  | `BuiltInValidatorGuardrail` | interface | `dist/core/actions.d.ts:819-860` | Supporting types | A platform-shipped validator, configured by parameters. |
@@ -113,10 +113,10 @@ could hand you spans for a version you do not have.
113
113
  | `documentClassify` | function | `dist/nodes/document/flow/factories.d.ts:8-16` | Actions | Classify a document into a document type (`uipath.document.classify`). |
114
114
  | `DocumentClassifyInputs` | interface | `dist/nodes/document/flow/spec.d.ts:9-18` | Option shapes | 4 field(s) |
115
115
  | `DocValidationInputs` | interface | `dist/nodes/hitl/flow/spec.d.ts:70-93` | Option shapes | The Document Validation task's subject — `variant: 'document-validation'` only. |
116
- | `DoWhileOptions` | interface | `dist/flow-sdk.d.ts:507-516` | Option shapes | Do-while options. |
116
+ | `DoWhileOptions` | interface | `dist/flow-sdk.d.ts:510-519` | Option shapes | Do-while options. |
117
117
  | `dynamicExtract` | function | `dist/nodes/document/flow/factories.d.ts:17-27` | Actions | Extract fields from a document with an INLINE schema — Dynamic Extract (`uipath.ixp.extract-document-builder`), the… |
118
118
  | `DynamicExtractInputs` | interface | `dist/nodes/document/flow/spec.d.ts:19-53` | Option shapes | 5 field(s) |
119
- | `EdgeRoute` | interface | `dist/flow-sdk.d.ts:652-666` | Supporting types | One edge's route: user-dragged bends and/or the auto-router's waypoints. |
119
+ | `EdgeRoute` | interface | `dist/flow-sdk.d.ts:655-669` | Supporting types | One edge's route: user-dragged bends and/or the auto-router's waypoints. |
120
120
  | `endCall` | function | `dist/core/actions.d.ts:1792-1799` | Actions | Hang up (`uipath.conversational.voice.end-call`). |
121
121
  | `EndCallInputs` | interface | `dist/core/actions.d.ts:246-253` | Option shapes | 1 field(s) |
122
122
  | `entryInput` | function | `dist/core/expr.d.ts:62-72` | Expressions and types | Reference an ENTRY POINT's scoped input: `entryInput('nightly', 'batchDate')` reads `$vars.nightly.output.batchDate` —… |
@@ -130,12 +130,12 @@ could hand you spans for a version you do not have.
130
130
  | `FilterCondition` | type | `dist/nodes/transform/flow/spec.d.ts:10-11` | Supporting types | Comparison a filter rule applies to a field. |
131
131
  | `FilterMatch` | type | `dist/nodes/transform/flow/spec.d.ts:8-9` | Supporting types | How a filter combines its rules: every rule must match, or any one. |
132
132
  | `FilterRule` | interface | `dist/nodes/transform/flow/spec.d.ts:12-24` | Supporting types | 3 field(s) |
133
- | `flow` | function | `dist/flow-sdk.d.ts:1640-1655` | Flow construction | Start building a flow with the given id. |
133
+ | `flow` | function | `dist/flow-sdk.d.ts:1655-1670` | Flow construction | Start building a flow with the given id. |
134
134
  | `FlowAction` | class | `dist/core/node-classes.d.ts:162-168` | Supporting types | A node placed as a step — pass an instance to `.step(name, …)`. |
135
135
  | `FlowActionSpec` | type | `dist/flow-sdk.d.ts:53-54` | Supporting types | What `.step()` accepts here: the shared actions plus this SDK's subflow. |
136
136
  | `FlowActionSpecs` | interface | `dist/core/actions.d.ts:1500-1577` | Supporting types | Every action kind, keyed by kind, to the body of its spec — the arm's fields other than `kind`. |
137
- | `FlowBuilder` | class | `dist/flow-sdk.d.ts:1276-1639` | Builders | 15 member(s) |
138
- | `FlowLayout` | interface | `dist/flow-sdk.d.ts:714-727` | Supporting types | Designer layout for a flow, keyed by AUTHOR-level ids: node entries by step name (plus the trigger id and `end`), edge… |
137
+ | `FlowBuilder` | class | `dist/flow-sdk.d.ts:1291-1654` | Builders | 15 member(s) |
138
+ | `FlowLayout` | interface | `dist/flow-sdk.d.ts:717-730` | Supporting types | Designer layout for a flow, keyed by AUTHOR-level ids: node entries by step name (plus the trigger id and `end`), edge… |
139
139
  | `FlowNode` | class | `dist/core/node-classes.d.ts:126-161` | Supporting types | The abstract root of every definition-backed node the builder can place. |
140
140
  | `FlowResource` | class | `dist/core/node-classes.d.ts:176-183` | Supporting types | A node attached to another semantic node — an inline agent's tool, context, memory, or escalation. |
141
141
  | `FlowTrigger` | class | `dist/core/node-classes.d.ts:169-175` | Supporting types | A node that starts the flow — pass an instance to `.trigger(…)`. |
@@ -184,12 +184,12 @@ could hand you spans for a version you do not have.
184
184
  | `lookupSpecOf` | function | `dist/core/lookups.d.ts:199-206` | Generated descriptors | The LookupSpec for one field, or `undefined` when it earns no helper. |
185
185
  | `LookupStrategy` | type | `dist/core/lookups.d.ts:1-10` | Generated descriptors | How `prepare` should retrieve the collection, chosen from the metadata. |
186
186
  | `LookupToken` | interface | `dist/core/lookups.d.ts:37-52` | Generated descriptors | An unresolved lookup: what `.byEmail(…)` returns. |
187
- | `LoopOptions` | interface | `dist/flow-sdk.d.ts:482-506` | Option shapes | Loop-specific options. |
187
+ | `LoopOptions` | interface | `dist/flow-sdk.d.ts:485-509` | Option shapes | Loop-specific options. |
188
188
  | `manual` | function | `dist/flow-sdk.d.ts:181-190` | Flow construction | The manual trigger, explicitly. |
189
189
  | `McpToolRef` | interface | `dist/core/actions.d.ts:1135-1163` | Supporting types | An MCP server the agent may call tools on. |
190
190
  | `mock` | function | `dist/nodes/mock/flow/factories.d.ts:6-45` | Actions | Declare a PLACEHOLDER step — "a real node goes here later". |
191
191
  | `NodeContribution` | interface | `dist/core/node-classes.d.ts:102-125` | Supporting types | One validated construct, returned by FlowNode.contribute. |
192
- | `NodeLayout` | interface | `dist/flow-sdk.d.ts:637-651` | Supporting types | One node's designer layout: canvas position, and optionally size and collapsed state. |
192
+ | `NodeLayout` | interface | `dist/flow-sdk.d.ts:640-654` | Supporting types | One node's designer layout: canvas position, and optionally size and collapsed state. |
193
193
  | `NodeOptions` | interface | `dist/flow-sdk.d.ts:391-444` | Option shapes | Options shared by every builder method that creates a definition-backed node: `version` selects the exact node… |
194
194
  | `onEvent` | function | `dist/flow-sdk.d.ts:191-229` | Flow construction | Start the flow when a connector event fires — e.g. an email arriving in a mailbox folder. |
195
195
  | `onEvent` | function | `dist/flow-sdk.d.ts:230-237` | Flow construction | Stringly form, for an event with no prepared module. |
@@ -212,7 +212,7 @@ could hand you spans for a version you do not have.
212
212
  | `resolvedValue` | function | `dist/core/lookups.d.ts:172-179` | Generated descriptors | The recorded id for a token, or `undefined`. |
213
213
  | `resolveEventWhere` | function | `dist/core/lookups.d.ts:207-224` | Generated descriptors | An event subscription's `where` with every lookup token swapped for the id `registry prepare --resolve` recorded, or a… |
214
214
  | `ReturnFieldType` | type | `dist/core/actions.d.ts:736-753` | Supporting types | A JSON-schema-ish type for one field of a step's declared `returns`. |
215
- | `ReturnOptions` | interface | `dist/flow-sdk.d.ts:445-481` | Option shapes | `.return(...)`-specific options. |
215
+ | `ReturnOptions` | interface | `dist/flow-sdk.d.ts:445-484` | Option shapes | `.return(...)`-specific options. |
216
216
  | `rpaWorkflow` | function | `dist/core/actions.d.ts:1670-1714` | Actions | Invoke a deployed RPA (robotic process automation) workflow — a classic UI-automation process, published to… |
217
217
  | `RpaWorkflowInputs` | interface | `dist/core/actions.d.ts:409-467` | Option shapes | 7 field(s) |
218
218
  | `SCHEDULE_PRESETS` | const | `dist/flow-sdk.d.ts:128-135` | Flow construction | The eight intervals the designer offers in its Frequency dropdown. |
@@ -227,12 +227,12 @@ could hand you spans for a version you do not have.
227
227
  | `sendMessage` | function | `dist/nodes/conversation/flow/factories.d.ts:8-26` | Actions | Post an assistant message into a live conversation (`uipath.conversational.send-message`). |
228
228
  | `SendMessageInputs` | interface | `dist/nodes/conversation/flow/spec.d.ts:8-27` | Option shapes | 4 field(s) |
229
229
  | `ShownField` | interface | `dist/core/actions.d.ts:105-125` | Supporting types | A value the reviewer READS: shown on the form, filled in from the flow. |
230
- | `Step` | type | `dist/flow-sdk.d.ts:517-636` | Supporting types | |
231
- | `StepList` | class | `dist/flow-sdk.d.ts:789-1251` | Builders | Collects a sequence of steps. |
232
- | `STICKY_NOTE_COLORS` | const | `dist/flow-sdk.d.ts:667-672` | Flow construction | The designer's sticky-note palette. |
233
- | `StickyNote` | interface | `dist/flow-sdk.d.ts:679-713` | Supporting types | A canvas sticky note — free text pinned to the diagram, for the humans reading it. |
234
- | `StickyNoteColor` | type | `dist/flow-sdk.d.ts:673-678` | Supporting types | A sticky note's swatch. |
235
- | `subflow` | function | `dist/flow-sdk.d.ts:1656-1695` | Flow construction | Run another flow as one step, and read back what it returns. |
230
+ | `Step` | type | `dist/flow-sdk.d.ts:520-639` | Supporting types | |
231
+ | `StepList` | class | `dist/flow-sdk.d.ts:792-1266` | Builders | Collects a sequence of steps. |
232
+ | `STICKY_NOTE_COLORS` | const | `dist/flow-sdk.d.ts:670-675` | Flow construction | The designer's sticky-note palette. |
233
+ | `StickyNote` | interface | `dist/flow-sdk.d.ts:682-716` | Supporting types | A canvas sticky note — free text pinned to the diagram, for the humans reading it. |
234
+ | `StickyNoteColor` | type | `dist/flow-sdk.d.ts:676-681` | Supporting types | A sticky note's swatch. |
235
+ | `subflow` | function | `dist/flow-sdk.d.ts:1671-1710` | Flow construction | Run another flow as one step, and read back what it returns. |
236
236
  | `SubflowSpec` | interface | `dist/flow-sdk.d.ts:45-52` | Supporting types | A step that runs a child flow. |
237
237
  | `summarize` | function | `dist/nodes/ai-patterns/flow/factories.d.ts:8-48` | Actions | Summarize a document with citations — the platform's **Summarize** node. |
238
238
  | `SummarizeInputs` | interface | `dist/nodes/ai-patterns/flow/spec.d.ts:8-40` | Option shapes | 3 field(s) |
@@ -66,7 +66,7 @@ not find it either.
66
66
  | `app` | property | `HumanTaskOpts` | `dist/bpmn/bpmn-sdk.d.ts:1337-1338` |
67
67
  | `appSystemName` | property | `AppRef` | `dist/nodes/hitl/flow/spec.d.ts:170-175` |
68
68
  | `appVersion` | property | `HumanTaskOpts` | `dist/bpmn/bpmn-sdk.d.ts:1339-1340` |
69
- | `armLabel` | property | `ArmBuilder` | `dist/flow-sdk.d.ts:1264` |
69
+ | `armLabel` | property | `ArmBuilder` | `dist/flow-sdk.d.ts:1279` |
70
70
  | `assignee` | property | `HitlRecipient` | `dist/nodes/hitl/flow/spec.d.ts:52-63` |
71
71
  | `async` | property | `OrchestratorAsyncOpts` | `dist/bpmn/bpmn-sdk.d.ts:1281-1285` |
72
72
  | `atRiskPercentage` | property | `EscalationOpts` | `dist/case/case-sdk.d.ts:132-137` |
@@ -97,14 +97,14 @@ not find it either.
97
97
  | `body` | property | `TypedContextRow` | `dist/bpmn/typed-node.d.ts:176-181` |
98
98
  | `body` | property | `TypedInputRow` | `dist/bpmn/typed-node.d.ts:207-208` |
99
99
  | `boundaryEvent` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2239-2246` |
100
- | `branch` | method | `StepList` | `dist/flow-sdk.d.ts:988-1006` |
100
+ | `branch` | method | `StepList` | `dist/flow-sdk.d.ts:991-1009` |
101
101
  | `branches` | property | `HttpInputsBase` | `dist/nodes/http/flow/spec.d.ts:25-30` |
102
- | `break` | method | `StepList` | `dist/flow-sdk.d.ts:1123-1132` |
103
- | `breakEnabled` | property | `DoWhileOptions` | `dist/flow-sdk.d.ts:514-515` |
104
- | `breakEnabled` | property | `LoopOptions` | `dist/flow-sdk.d.ts:501-505` |
102
+ | `break` | method | `StepList` | `dist/flow-sdk.d.ts:1126-1135` |
103
+ | `breakEnabled` | property | `DoWhileOptions` | `dist/flow-sdk.d.ts:517-518` |
104
+ | `breakEnabled` | property | `LoopOptions` | `dist/flow-sdk.d.ts:504-508` |
105
105
  | `build` | method | `BpmnBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3483-3488` |
106
106
  | `build` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1269-1274` |
107
- | `build` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1632-1638` |
107
+ | `build` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1647-1653` |
108
108
  | `businessRule` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2527-2573` |
109
109
  | `by` | property | `LookupResolution` | `dist/core/lookups.d.ts:164` |
110
110
  | `by` | property | `LookupSpec` | `dist/core/lookups.d.ts:27-28` |
@@ -126,13 +126,13 @@ not find it either.
126
126
  | `code` | property | `ErrorDecl` | `dist/bpmn/bpmn-sdk.d.ts:439-440` |
127
127
  | `code` | property | `ErrorMappingRow` | `dist/bpmn/bpmn-sdk.d.ts:299-307` |
128
128
  | `code` | property | `ScriptInputs` | `dist/nodes/script/flow/spec.d.ts:8-9` |
129
- | `collapsed` | property | `NodeLayout` | `dist/flow-sdk.d.ts:649-650` |
129
+ | `collapsed` | property | `NodeLayout` | `dist/flow-sdk.d.ts:652-653` |
130
130
  | `collection` | property | `LoopSpec` | `dist/bpmn/bpmn-sdk.d.ts:79-80` |
131
131
  | `collection` | property | `TransformInputs` | `dist/nodes/transform/flow/spec.d.ts:85-95` |
132
- | `color` | property | `StickyNote` | `dist/flow-sdk.d.ts:703-704` |
132
+ | `color` | property | `StickyNote` | `dist/flow-sdk.d.ts:706-707` |
133
133
  | `completeWhen` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1249-1259` |
134
134
  | `completion` | property | `LoopSpec` | `dist/bpmn/bpmn-sdk.d.ts:85-86` |
135
- | `completionCondition` | property | `LoopOptions` | `dist/flow-sdk.d.ts:496-500` |
135
+ | `completionCondition` | property | `LoopOptions` | `dist/flow-sdk.d.ts:499-503` |
136
136
  | `condition` | property | `BpmnFlow` | `dist/bpmn/bpmn-sdk.d.ts:350-351` |
137
137
  | `condition` | property | `ErrorMappingRow` | `dist/bpmn/bpmn-sdk.d.ts:314-320` |
138
138
  | `condition` | property | `FilterRule` | `dist/nodes/transform/flow/spec.d.ts:15` |
@@ -164,7 +164,7 @@ not find it either.
164
164
  | `connectorKey` | property | `HttpOpts` | `dist/bpmn/bpmn-sdk.d.ts:1184-1190` |
165
165
  | `connectorKey` | property | `WaitConnectorPlaceholderSpec` | `dist/case/case-sdk.d.ts:366-367` |
166
166
  | `content` | property | `SendMessageInputs` | `dist/nodes/conversation/flow/spec.d.ts:20-21` |
167
- | `content` | property | `StickyNote` | `dist/flow-sdk.d.ts:701-702` |
167
+ | `content` | property | `StickyNote` | `dist/flow-sdk.d.ts:704-705` |
168
168
  | `contentType` | property | `HttpInputsBase` | `dist/nodes/http/flow/spec.d.ts:36` |
169
169
  | `context` | property | `ActivityNodeOpts` | `dist/bpmn/bpmn-sdk.d.ts:1526-1527` |
170
170
  | `context` | property | `ConversationalAgentSettings` | `dist/core/actions.d.ts:179-180` |
@@ -172,7 +172,7 @@ not find it either.
172
172
  | `context` | property | `RegistryTypeSpec` | `dist/bpmn/typed-node.d.ts:87` |
173
173
  | `contextRows` | property | `ActivityNodeOpts` | `dist/bpmn/bpmn-sdk.d.ts:1528-1535` |
174
174
  | `contextVerbatim` | property | `ActivityNodeOpts` | `dist/bpmn/bpmn-sdk.d.ts:1600-1605` |
175
- | `continue` | method | `StepList` | `dist/flow-sdk.d.ts:1133-1147` |
175
+ | `continue` | method | `StepList` | `dist/flow-sdk.d.ts:1136-1150` |
176
176
  | `contribute` | method | `FlowNode` | `dist/core/node-classes.d.ts:144-153` |
177
177
  | `conversationalAgent` | property | `FlowActionSpecs` | `dist/core/actions.d.ts:1536-1539` |
178
178
  | `conversationContext` | property | `FlowActionSpecs` | `dist/nodes/conversation/flow/spec.d.ts:55-58` |
@@ -207,13 +207,13 @@ not find it either.
207
207
  | `defaultOf` | property | `PendingExit` | `dist/bpmn/bpmn-sdk.d.ts:1924-1925` |
208
208
  | `deferDate` | property | `QueueItemInputs` | `dist/nodes/queue/flow/spec.d.ts:48-49` |
209
209
  | `definition` | property | `NodeContribution` | `dist/core/node-classes.d.ts:111-112` |
210
- | `definitions` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:767-772` |
211
- | `definitions` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1493-1533` |
210
+ | `definitions` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:770-775` |
211
+ | `definitions` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1508-1548` |
212
212
  | `delay` | property | `FlowActionSpecs` | `dist/nodes/delay/flow/spec.d.ts:38-41` |
213
213
  | `dependsOn` | property | `LookupSpec` | `dist/core/lookups.d.ts:34-35` |
214
214
  | `description` | property | `AgentMemoryRef` | `dist/core/actions.d.ts:1244` |
215
215
  | `description` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:633` |
216
- | `description` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:744-745` |
216
+ | `description` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:747-748` |
217
217
  | `description` | property | `BuiltinToolRef` | `dist/core/actions.d.ts:1264-1265` |
218
218
  | `description` | property | `BuiltInValidatorGuardrail` | `dist/core/actions.d.ts:825` |
219
219
  | `description` | property | `BuiltStage` | `dist/case/case-sdk.d.ts:525` |
@@ -225,7 +225,7 @@ not find it either.
225
225
  | `description` | property | `CustomGuardrail` | `dist/core/actions.d.ts:812` |
226
226
  | `description` | property | `EscalationRef` | `dist/core/actions.d.ts:1406-1407` |
227
227
  | `description` | property | `EventTriggerOpts` | `dist/case/case-sdk.d.ts:241` |
228
- | `description` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1302-1309` |
228
+ | `description` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1317-1324` |
229
229
  | `description` | property | `HttpRequestToolRef` | `dist/core/actions.d.ts:1211` |
230
230
  | `description` | property | `IxpExtractInputs` | `dist/core/actions.d.ts:394-401` |
231
231
  | `description` | property | `IxpToolRef` | `dist/core/actions.d.ts:1384-1385` |
@@ -267,12 +267,12 @@ not find it either.
267
267
  | `document` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:285-289` |
268
268
  | `documentClassify` | property | `FlowActionSpecs` | `dist/nodes/document/flow/spec.d.ts:56-59` |
269
269
  | `documentId` | property | `DocValidationInputs` | `dist/nodes/hitl/flow/spec.d.ts:84-85` |
270
- | `doWhile` | method | `StepList` | `dist/flow-sdk.d.ts:1098-1122` |
270
+ | `doWhile` | method | `StepList` | `dist/flow-sdk.d.ts:1101-1125` |
271
271
  | `dueDate` | property | `QueueItemInputs` | `dist/nodes/queue/flow/spec.d.ts:50-51` |
272
272
  | `duration` | property | `TimerSpec` | `dist/bpmn/bpmn-sdk.d.ts:33-34` |
273
273
  | `dynamicExtract` | property | `FlowActionSpecs` | `dist/nodes/document/flow/spec.d.ts:60-63` |
274
274
  | `dynamicFewShotLearning` | property | `AgentMemoryRef` | `dist/core/actions.d.ts:1247-1248` |
275
- | `edges` | property | `FlowLayout` | `dist/flow-sdk.d.ts:725-726` |
275
+ | `edges` | property | `FlowLayout` | `dist/flow-sdk.d.ts:728-729` |
276
276
  | `element` | property | `PlainTaskOpts` | `dist/bpmn/bpmn-sdk.d.ts:1619-1620` |
277
277
  | `element` | property | `RegistryTypeSpec` | `dist/bpmn/typed-node.d.ts:80-81` |
278
278
  | `elementId` | property | `BpmnVarDecl` | `dist/bpmn/bpmn-sdk.d.ts:378-385` |
@@ -291,12 +291,12 @@ not find it either.
291
291
  | `entity` | property | `DataServiceOpts` | `dist/bpmn/bpmn-sdk.d.ts:1090-1091` |
292
292
  | `entry` | property | `BuiltStage` | `dist/case/case-sdk.d.ts:528` |
293
293
  | `entry` | property | `BuiltTask` | `dist/case/case-sdk.d.ts:520` |
294
- | `entryPoint` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1368-1418` |
294
+ | `entryPoint` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1383-1433` |
295
295
  | `entryPointId` | property | `ProcessMetadata` | `dist/bpmn/bpmn-sdk.d.ts:534-539` |
296
- | `entryPoints` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:773-774` |
296
+ | `entryPoints` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:776-777` |
297
297
  | `entryWhen` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1004-1011` |
298
298
  | `entryWhen` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:947-956` |
299
- | `err` | method | `StepList` | `dist/flow-sdk.d.ts:797-822` |
299
+ | `err` | method | `StepList` | `dist/flow-sdk.d.ts:800-825` |
300
300
  | `error` | property | `BoundaryOpts` | `dist/bpmn/bpmn-sdk.d.ts:750-754` |
301
301
  | `error` | property | `EndOpts` | `dist/bpmn/bpmn-sdk.d.ts:696-706` |
302
302
  | `error` | property | `EventSubProcessOpts` | `dist/bpmn/bpmn-sdk.d.ts:1842-1847` |
@@ -417,7 +417,7 @@ not find it either.
417
417
  | `headers` | property | `HttpOpts` | `dist/bpmn/bpmn-sdk.d.ts:1138-1139` |
418
418
  | `headers` | property | `HttpRequestToolRef` | `dist/core/actions.d.ts:1216-1220` |
419
419
  | `height` | property | `CaseNodeLayout` | `dist/case/case-sdk.d.ts:606-607` |
420
- | `height` | property | `StickyNote` | `dist/flow-sdk.d.ts:711-712` |
420
+ | `height` | property | `StickyNote` | `dist/flow-sdk.d.ts:714-715` |
421
421
  | `hidden` | property | `RegistryContextField` | `dist/bpmn/typed-node.d.ts:27` |
422
422
  | `hidden` | property | `RegistryInputField` | `dist/bpmn/typed-node.d.ts:61` |
423
423
  | `hitl` | property | `FlowActionSpecs` | `dist/nodes/hitl/flow/spec.d.ts:293-296` |
@@ -433,8 +433,8 @@ not find it either.
433
433
  | `id` | property | `BpmnVarDecl` | `dist/bpmn/bpmn-sdk.d.ts:368-369` |
434
434
  | `id` | property | `BuiltBpmn` | `dist/bpmn/bpmn-sdk.d.ts:491-492` |
435
435
  | `id` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:624` |
436
- | `id` | property | `BuiltEntryPoint` | `dist/flow-sdk.d.ts:730-731` |
437
- | `id` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:742` |
436
+ | `id` | property | `BuiltEntryPoint` | `dist/flow-sdk.d.ts:733-734` |
437
+ | `id` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:745` |
438
438
  | `id` | property | `BuiltInValidatorGuardrail` | `dist/core/actions.d.ts:821-822` |
439
439
  | `id` | property | `CaseAppSection` | `dist/case/case-sdk.d.ts:576-577` |
440
440
  | `id` | property | `ContextIndexRef` | `dist/core/actions.d.ts:1475-1480` |
@@ -450,7 +450,7 @@ not find it either.
450
450
  | `id` | property | `PinnedFlowId` | `dist/bpmn/bpmn-sdk.d.ts:1630-1631` |
451
451
  | `id` | property | `SchemaEntry` | `dist/bpmn/bpmn-sdk.d.ts:1001-1002` |
452
452
  | `id` | property | `ShownField` | `dist/core/actions.d.ts:107-108` |
453
- | `id` | property | `StickyNote` | `dist/flow-sdk.d.ts:691-700` |
453
+ | `id` | property | `StickyNote` | `dist/flow-sdk.d.ts:694-703` |
454
454
  | `id` | property | `SwitchArm` | `dist/flow-sdk.d.ts:369-375` |
455
455
  | `id` | property | `VarEntry` | `dist/bpmn/bpmn-sdk.d.ts:992-993` |
456
456
  | `identifier` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:634` |
@@ -462,7 +462,7 @@ not find it either.
462
462
  | `inclusiveGateway` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2266-2273` |
463
463
  | `inlineAgent` | property | `FlowActionSpecs` | `dist/core/actions.d.ts:1548-1551` |
464
464
  | `input` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1160-1185` |
465
- | `input` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1573-1585` |
465
+ | `input` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1588-1600` |
466
466
  | `input` | property | `HumanTaskOpts` | `dist/bpmn/bpmn-sdk.d.ts:1355-1356` |
467
467
  | `input` | property | `OrchestratorOpts` | `dist/bpmn/bpmn-sdk.d.ts:1241-1242` |
468
468
  | `input` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3068-3076` |
@@ -475,8 +475,8 @@ not find it either.
475
475
  | `inputs` | property | `AgentInputs` | `dist/core/actions.d.ts:680-697` |
476
476
  | `inputs` | property | `ApiWorkflowInputs` | `dist/core/actions.d.ts:481-485` |
477
477
  | `inputs` | property | `AppRef` | `dist/nodes/hitl/flow/spec.d.ts:176-184` |
478
- | `inputs` | property | `BuiltEntryPoint` | `dist/flow-sdk.d.ts:736-737` |
479
- | `inputs` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:754` |
478
+ | `inputs` | property | `BuiltEntryPoint` | `dist/flow-sdk.d.ts:739-740` |
479
+ | `inputs` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:757` |
480
480
  | `inputs` | property | `BuiltTask` | `dist/case/case-sdk.d.ts:516-517` |
481
481
  | `inputs` | property | `ClientSideToolRef` | `dist/core/actions.d.ts:1196-1197` |
482
482
  | `inputs` | property | `ExternalTaskOptions` | `dist/case/case-sdk.d.ts:399-400` |
@@ -535,7 +535,7 @@ not find it either.
535
535
  | `kind` | property | `SubflowSpec` | `dist/flow-sdk.d.ts:47` |
536
536
  | `kind` | property | `WhenExpression` | `dist/case/case-sdk.d.ts:99-100` |
537
537
  | `kValue` | property | `AgentMemoryRef` | `dist/core/actions.d.ts:1251-1252` |
538
- | `label` | method | `ArmBuilder` | `dist/flow-sdk.d.ts:1265-1274` |
538
+ | `label` | method | `ArmBuilder` | `dist/flow-sdk.d.ts:1280-1289` |
539
539
  | `label` | property | `AskedField` | `dist/core/actions.d.ts:130-131` |
540
540
  | `label` | property | `BuiltStage` | `dist/case/case-sdk.d.ts:523` |
541
541
  | `label` | property | `FormFieldOption` | `dist/core/actions.d.ts:102-103` |
@@ -548,12 +548,12 @@ not find it either.
548
548
  | `labels` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:228-229` |
549
549
  | `lanes` | property | `BuiltStage` | `dist/case/case-sdk.d.ts:527` |
550
550
  | `layout` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:646-647` |
551
- | `layout` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:763-764` |
551
+ | `layout` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:766-767` |
552
552
  | `layout` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1139-1159` |
553
- | `layout` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1310-1320` |
553
+ | `layout` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1325-1335` |
554
554
  | `legacyCompleted` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:252-284` |
555
555
  | `limit` | property | `DataFabricReadInputs` | `dist/nodes/data-fabric/flow/spec.d.ts:95-100` |
556
- | `limit` | property | `DoWhileOptions` | `dist/flow-sdk.d.ts:512-513` |
556
+ | `limit` | property | `DoWhileOptions` | `dist/flow-sdk.d.ts:515-516` |
557
557
  | `literal` | property | `Expr` | `dist/core/expr.d.ts:18` |
558
558
  | `location` | property | `AgenticProcessInputsBase` | `dist/core/actions.d.ts:550-560` |
559
559
  | `location` | property | `AgentInputs` | `dist/core/actions.d.ts:656-661` |
@@ -561,7 +561,7 @@ not find it either.
561
561
  | `lookups` | property | `ConnectorMeta` | `dist/core/connectors.d.ts:76-87` |
562
562
  | `loop` | property | `ActivityNodeFields` | `dist/bpmn/bpmn-sdk.d.ts:335-336` |
563
563
  | `loop` | property | `ActivityOpts` | `dist/bpmn/bpmn-sdk.d.ts:832-833` |
564
- | `loop` | method | `StepList` | `dist/flow-sdk.d.ts:1086-1097` |
564
+ | `loop` | method | `StepList` | `dist/flow-sdk.d.ts:1089-1100` |
565
565
  | `managed` | property | `HttpInputsBase` | `dist/nodes/http/flow/spec.d.ts:37-67` |
566
566
  | `marksCaseComplete` | property | `BuiltCaseExitCondition` | `dist/case/case-sdk.d.ts:354` |
567
567
  | `marksStageComplete` | property | `BuiltExitCondition` | `dist/case/case-sdk.d.ts:321` |
@@ -630,7 +630,7 @@ not find it either.
630
630
  | `name` | property | `BpmnVarDecl` | `dist/bpmn/bpmn-sdk.d.ts:370-371` |
631
631
  | `name` | property | `BuiltBpmn` | `dist/bpmn/bpmn-sdk.d.ts:493-494` |
632
632
  | `name` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:625` |
633
- | `name` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:743` |
633
+ | `name` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:746` |
634
634
  | `name` | property | `BuiltInValidatorGuardrail` | `dist/core/actions.d.ts:824` |
635
635
  | `name` | property | `BuiltTask` | `dist/case/case-sdk.d.ts:501-502` |
636
636
  | `name` | property | `BuiltTrigger` | `dist/case/case-sdk.d.ts:198-199` |
@@ -650,7 +650,7 @@ not find it either.
650
650
  | `name` | property | `EventSubProcessOpts` | `dist/bpmn/bpmn-sdk.d.ts:1840-1841` |
651
651
  | `name` | property | `EventTriggerOpts` | `dist/case/case-sdk.d.ts:240` |
652
652
  | `name` | property | `ExternalTaskOpts` | `dist/bpmn/bpmn-sdk.d.ts:1499-1500` |
653
- | `name` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1294-1301` |
653
+ | `name` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1309-1316` |
654
654
  | `name` | property | `FlowOpts` | `dist/bpmn/bpmn-sdk.d.ts:1637-1638` |
655
655
  | `name` | property | `GatewayOpts` | `dist/bpmn/bpmn-sdk.d.ts:760-761` |
656
656
  | `name` | property | `HandlerOpts` | `dist/bpmn/bpmn-sdk.d.ts:1735-1736` |
@@ -678,7 +678,7 @@ not find it either.
678
678
  | `name` | property | `RegistryOutput` | `dist/bpmn/typed-node.d.ts:72` |
679
679
  | `name` | property | `RemoteA2aToolRef` | `dist/core/actions.d.ts:1171-1172` |
680
680
  | `name` | property | `ResolvedEventTriggerOpts` | `dist/case/case-sdk.d.ts:266-267` |
681
- | `name` | property | `ReturnOptions` | `dist/flow-sdk.d.ts:460-480` |
681
+ | `name` | property | `ReturnOptions` | `dist/flow-sdk.d.ts:460-483` |
682
682
  | `name` | property | `RpaWorkflowInputs` | `dist/core/actions.d.ts:421-422` |
683
683
  | `name` | property | `ScriptTaskOpts` | `dist/bpmn/bpmn-sdk.d.ts:844-845` |
684
684
  | `name` | property | `SplitOpts` | `dist/bpmn/bpmn-sdk.d.ts:1830-1831` |
@@ -695,7 +695,7 @@ not find it either.
695
695
  | `name` | property | `VarDecl` | `dist/flow-sdk.d.ts:60` |
696
696
  | `name` | property | `VarOpts` | `dist/bpmn/bpmn-sdk.d.ts:1644-1645` |
697
697
  | `nodes` | property | `BuiltBpmn` | `dist/bpmn/bpmn-sdk.d.ts:503-504` |
698
- | `nodes` | property | `FlowLayout` | `dist/flow-sdk.d.ts:723-724` |
698
+ | `nodes` | property | `FlowLayout` | `dist/flow-sdk.d.ts:726-727` |
699
699
  | `nodes` | property | `ScopeStorage` | `dist/bpmn/bpmn-sdk.d.ts:1935-1936` |
700
700
  | `nodeType` | property | `ConnectorMeta` | `dist/core/connectors.d.ts:62` |
701
701
  | `nodeType` | property | `LookupResolution` | `dist/core/lookups.d.ts:162` |
@@ -712,13 +712,13 @@ not find it either.
712
712
  | `onError` | method | `ActivityBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3259-3266` |
713
713
  | `onError` | method | `ActivityBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3267-3274` |
714
714
  | `onError` | method | `ActivityBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3275-3283` |
715
- | `onError` | method | `StepList` | `dist/flow-sdk.d.ts:877-937` |
715
+ | `onError` | method | `StepList` | `dist/flow-sdk.d.ts:880-940` |
716
716
  | `onMessage` | method | `ActivityBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3302-3310` |
717
717
  | `onMessage` | method | `ActivityBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3311-3319` |
718
718
  | `onTimer` | method | `ActivityBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3284-3292` |
719
719
  | `onTimer` | method | `ActivityBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3293-3301` |
720
- | `openTails` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:782-787` |
721
- | `openTails` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1534-1572` |
720
+ | `openTails` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:785-790` |
721
+ | `openTails` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1549-1587` |
722
722
  | `operation` | property | `Aggregation` | `dist/nodes/transform/flow/spec.d.ts:37` |
723
723
  | `operation` | property | `ConnectorToolRef` | `dist/core/actions.d.ts:1287-1288` |
724
724
  | `operation` | property | `WaitConnectorPlaceholderSpec` | `dist/case/case-sdk.d.ts:368-369` |
@@ -726,7 +726,7 @@ not find it either.
726
726
  | `operator` | property | `DataFabricFilter` | `dist/nodes/data-fabric/flow/spec.d.ts:29-30` |
727
727
  | `options` | property | `ActionField` | `dist/case/case-sdk.d.ts:445-449` |
728
728
  | `options` | property | `AskedField` | `dist/core/actions.d.ts:134-138` |
729
- | `options` | property | `BuiltEntryPoint` | `dist/flow-sdk.d.ts:734-735` |
729
+ | `options` | property | `BuiltEntryPoint` | `dist/flow-sdk.d.ts:737-738` |
730
730
  | `options` | property | `InOutField` | `dist/core/actions.d.ts:155-159` |
731
731
  | `options` | property | `ShownField` | `dist/core/actions.d.ts:113-117` |
732
732
  | `or` | property | `DataFabricFilter` | `dist/nodes/data-fabric/flow/spec.d.ts:38-50` |
@@ -735,7 +735,7 @@ not find it either.
735
735
  | `outcomes` | property | `EscalationRef` | `dist/core/actions.d.ts:1452-1457` |
736
736
  | `outcomes` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:211-225` |
737
737
  | `output` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1186-1198` |
738
- | `output` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1586-1621` |
738
+ | `output` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1601-1636` |
739
739
  | `output` | property | `RegistryTypeSpec` | `dist/bpmn/typed-node.d.ts:90` |
740
740
  | `output` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3077-3085` |
741
741
  | `outputColumns` | property | `BatchTransformInputs` | `dist/nodes/ai-patterns/flow/spec.d.ts:56-60` |
@@ -744,7 +744,7 @@ not find it either.
744
744
  | `outputRows` | property | `ScriptTaskOpts` | `dist/bpmn/bpmn-sdk.d.ts:909-918` |
745
745
  | `outputs` | property | `ActionSpecData` | `dist/case/case-sdk.d.ts:464-465` |
746
746
  | `outputs` | property | `ActivityNodeOpts` | `dist/bpmn/bpmn-sdk.d.ts:1564-1565` |
747
- | `outputs` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:755` |
747
+ | `outputs` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:758` |
748
748
  | `outputs` | property | `BuiltTask` | `dist/case/case-sdk.d.ts:518-519` |
749
749
  | `outputs` | property | `ConnectorEventOpts` | `dist/bpmn/bpmn-sdk.d.ts:1483-1493` |
750
750
  | `outputs` | property | `EventTriggerOpts` | `dist/case/case-sdk.d.ts:248-262` |
@@ -770,8 +770,8 @@ not find it either.
770
770
  | `pageRange` | property | `DocumentClassifyInputs` | `dist/nodes/document/flow/spec.d.ts:12-13` |
771
771
  | `pageRange` | property | `DynamicExtractInputs` | `dist/nodes/document/flow/spec.d.ts:49-50` |
772
772
  | `pageRange` | property | `IxpExtractInputs` | `dist/core/actions.d.ts:383-384` |
773
- | `parallel` | property | `LoopOptions` | `dist/flow-sdk.d.ts:494-495` |
774
- | `parallel` | method | `StepList` | `dist/flow-sdk.d.ts:1050-1085` |
773
+ | `parallel` | property | `LoopOptions` | `dist/flow-sdk.d.ts:497-498` |
774
+ | `parallel` | method | `StepList` | `dist/flow-sdk.d.ts:1053-1088` |
775
775
  | `parallelGateway` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2256-2265` |
776
776
  | `parameters` | property | `ConnectorEventOpts` | `dist/bpmn/bpmn-sdk.d.ts:1479-1480` |
777
777
  | `parameters` | property | `HttpOpts` | `dist/bpmn/bpmn-sdk.d.ts:1140-1145` |
@@ -790,7 +790,7 @@ not find it either.
790
790
  | `pinnedFlowIds` | property | `SugarRegistry` | `dist/bpmn/bpmn-sdk.d.ts:1951-1958` |
791
791
  | `plainTask` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2302-2331` |
792
792
  | `position` | property | `CaseNodeLayout` | `dist/case/case-sdk.d.ts:592-596` |
793
- | `position` | property | `NodeLayout` | `dist/flow-sdk.d.ts:639-643` |
793
+ | `position` | property | `NodeLayout` | `dist/flow-sdk.d.ts:642-646` |
794
794
  | `preservation` | property | `BuiltBpmn` | `dist/bpmn/bpmn-sdk.d.ts:511-512` |
795
795
  | `preserve` | method | `BpmnBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3332-3347` |
796
796
  | `priority` | property | `ActionSpecData` | `dist/case/case-sdk.d.ts:453` |
@@ -870,7 +870,7 @@ not find it either.
870
870
  | `retry` | property | `ActivityOpts` | `dist/bpmn/bpmn-sdk.d.ts:830-831` |
871
871
  | `retryable` | property | `ErrorMappingRow` | `dist/bpmn/bpmn-sdk.d.ts:308-309` |
872
872
  | `retryCount` | property | `HttpInputsBase` | `dist/nodes/http/flow/spec.d.ts:109-123` |
873
- | `return` | method | `StepList` | `dist/flow-sdk.d.ts:1241-1250` |
873
+ | `return` | method | `StepList` | `dist/flow-sdk.d.ts:1256-1265` |
874
874
  | `returnCitations` | property | `SummarizeInputs` | `dist/nodes/ai-patterns/flow/spec.d.ts:34-39` |
875
875
  | `returns` | property | `AgentInputs` | `dist/core/actions.d.ts:698-717` |
876
876
  | `returns` | property | `ApiWorkflowInputs` | `dist/core/actions.d.ts:486-498` |
@@ -886,7 +886,7 @@ not find it either.
886
886
  | `role` | property | `FlowNode` | `dist/core/node-classes.d.ts:142-143` |
887
887
  | `role` | property | `FlowResource` | `dist/core/node-classes.d.ts:181-182` |
888
888
  | `role` | property | `FlowTrigger` | `dist/core/node-classes.d.ts:173-174` |
889
- | `routedWaypoints` | property | `EdgeRoute` | `dist/flow-sdk.d.ts:660-665` |
889
+ | `routedWaypoints` | property | `EdgeRoute` | `dist/flow-sdk.d.ts:663-668` |
890
890
  | `rpa` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:751-760` |
891
891
  | `rpaWorkflow` | property | `FlowActionSpecs` | `dist/core/actions.d.ts:1512-1515` |
892
892
  | `rule` | property | `CaseRule` | `dist/case/case-sdk.d.ts:80` |
@@ -909,9 +909,9 @@ not find it either.
909
909
  | `schemas` | method | `BpmnBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3433-3443` |
910
910
  | `schemas` | property | `BuiltBpmn` | `dist/bpmn/bpmn-sdk.d.ts:509-510` |
911
911
  | `schemaVersion` | method | `BpmnBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3375-3404` |
912
- | `schemaVersion` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:747-753` |
912
+ | `schemaVersion` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:750-756` |
913
913
  | `schemaVersion` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1068-1094` |
914
- | `schemaVersion` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1453-1492` |
914
+ | `schemaVersion` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1468-1507` |
915
915
  | `scope` | property | `EscalationRecipient` | `dist/case/case-sdk.d.ts:121` |
916
916
  | `scopes` | property | `GuardrailSelector` | `dist/core/actions.d.ts:758` |
917
917
  | `script` | property | `FlowActionSpecs` | `dist/nodes/script/flow/spec.d.ts:47-50` |
@@ -937,7 +937,7 @@ not find it either.
937
937
  | `severity` | property | `ContributionDiagnostic` | `dist/core/node-classes.d.ts:31-32` |
938
938
  | `shared` | property | `VarDecl` | `dist/flow-sdk.d.ts:69-70` |
939
939
  | `shared` | property | `VarSpec` | `dist/flow-sdk.d.ts:94-126` |
940
- | `size` | property | `NodeLayout` | `dist/flow-sdk.d.ts:644-648` |
940
+ | `size` | property | `NodeLayout` | `dist/flow-sdk.d.ts:647-651` |
941
941
  | `skip` | property | `BuiltTask` | `dist/case/case-sdk.d.ts:515` |
942
942
  | `skip` | property | `DataFabricReadInputs` | `dist/nodes/data-fabric/flow/spec.d.ts:101-102` |
943
943
  | `skipCondition` | property | `ActivityNodeOpts` | `dist/bpmn/bpmn-sdk.d.ts:1598-1599` |
@@ -983,16 +983,16 @@ not find it either.
983
983
  | `startName` | property | `EventSubProcessOpts` | `dist/bpmn/bpmn-sdk.d.ts:1887-1888` |
984
984
  | `startPayload` | property | `EventSubProcessOpts` | `dist/bpmn/bpmn-sdk.d.ts:1889-1890` |
985
985
  | `startProcess` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2459-2478` |
986
- | `step` | method | `StepList` | `dist/flow-sdk.d.ts:823-833` |
987
- | `steps` | property | `BuiltEntryPoint` | `dist/flow-sdk.d.ts:738-739` |
988
- | `steps` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:757` |
989
- | `steps` | property | `StepList` | `dist/flow-sdk.d.ts:791` |
990
- | `stepSwitch` | method | `StepList` | `dist/flow-sdk.d.ts:834-876` |
991
- | `stepToList` | method | `StepList` | `dist/flow-sdk.d.ts:951-979` |
992
- | `stepToRef` | method | `StepList` | `dist/flow-sdk.d.ts:1179-1219` |
993
- | `stepToRef` | method | `StepList` | `dist/flow-sdk.d.ts:1220-1240` |
994
- | `stickyNotes` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:765-766` |
995
- | `stickyNotes` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1321-1346` |
986
+ | `step` | method | `StepList` | `dist/flow-sdk.d.ts:826-836` |
987
+ | `steps` | property | `BuiltEntryPoint` | `dist/flow-sdk.d.ts:741-742` |
988
+ | `steps` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:760` |
989
+ | `steps` | property | `StepList` | `dist/flow-sdk.d.ts:794` |
990
+ | `stepSwitch` | method | `StepList` | `dist/flow-sdk.d.ts:837-879` |
991
+ | `stepToList` | method | `StepList` | `dist/flow-sdk.d.ts:954-982` |
992
+ | `stepToRef` | method | `StepList` | `dist/flow-sdk.d.ts:1190-1234` |
993
+ | `stepToRef` | method | `StepList` | `dist/flow-sdk.d.ts:1235-1255` |
994
+ | `stickyNotes` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:768-769` |
995
+ | `stickyNotes` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1336-1361` |
996
996
  | `storageBucket` | property | `DocValidationInputs` | `dist/nodes/hitl/flow/spec.d.ts:82-83` |
997
997
  | `strategy` | property | `LookupSpec` | `dist/core/lookups.d.ts:33` |
998
998
  | `style` | property | `CaseNodeLayout` | `dist/case/case-sdk.d.ts:597-598` |
@@ -1005,7 +1005,7 @@ not find it either.
1005
1005
  | `subType` | property | `VarSpec` | `dist/flow-sdk.d.ts:84-85` |
1006
1006
  | `summarize` | property | `FlowActionSpecs` | `dist/nodes/ai-patterns/flow/spec.d.ts:66-69` |
1007
1007
  | `summary` | property | `CaseAppConfig` | `dist/case/case-sdk.d.ts:585-586` |
1008
- | `switch` | method | `StepList` | `dist/flow-sdk.d.ts:1007-1049` |
1008
+ | `switch` | method | `StepList` | `dist/flow-sdk.d.ts:1010-1052` |
1009
1009
  | `systemPrompt` | property | `ConversationalAgentInputs` | `dist/core/actions.d.ts:191-196` |
1010
1010
  | `systemPrompt` | property | `InlineAgentInputs` | `dist/core/actions.d.ts:871-920` |
1011
1011
  | `systemPrompt` | property | `VoiceAgentInputs` | `dist/core/actions.d.ts:278-283` |
@@ -1030,7 +1030,7 @@ not find it either.
1030
1030
  | `temperature` | property | `InlineAgentInputs` | `dist/core/actions.d.ts:981-982` |
1031
1031
  | `temperature` | property | `VoiceSettings` | `dist/core/actions.d.ts:270-271` |
1032
1032
  | `terminate` | property | `EndOpts` | `dist/bpmn/bpmn-sdk.d.ts:692-693` |
1033
- | `terminate` | method | `StepList` | `dist/flow-sdk.d.ts:1148-1178` |
1033
+ | `terminate` | method | `StepList` | `dist/flow-sdk.d.ts:1151-1189` |
1034
1034
  | `threshold` | property | `ContextIndexRef` | `dist/core/actions.d.ts:1495-1496` |
1035
1035
  | `timeCycle` | property | `BuiltTrigger` | `dist/case/case-sdk.d.ts:201-202` |
1036
1036
  | `timeout` | property | `HttpInputsBase` | `dist/nodes/http/flow/spec.d.ts:91-108` |
@@ -1050,16 +1050,16 @@ not find it either.
1050
1050
  | `tools` | property | `InlineAgentInputs` | `dist/core/actions.d.ts:1072-1094` |
1051
1051
  | `transform` | property | `FlowActionSpecs` | `dist/nodes/transform/flow/spec.d.ts:111-114` |
1052
1052
  | `transformation` | property | `FieldMapping` | `dist/nodes/transform/flow/spec.d.ts:30-31` |
1053
- | `trigger` | property | `BuiltEntryPoint` | `dist/flow-sdk.d.ts:732-733` |
1054
- | `trigger` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:758-760` |
1053
+ | `trigger` | property | `BuiltEntryPoint` | `dist/flow-sdk.d.ts:735-736` |
1054
+ | `trigger` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:761-763` |
1055
1055
  | `trigger` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1224-1232` |
1056
1056
  | `trigger` | property | `EscalationOpts` | `dist/case/case-sdk.d.ts:128-129` |
1057
- | `trigger` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1347-1367` |
1057
+ | `trigger` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1362-1382` |
1058
1058
  | `trigger` | property | `StartOpts` | `dist/bpmn/bpmn-sdk.d.ts:624-671` |
1059
1059
  | `triggeredByEvent` | property | `SubProcessOpts` | `dist/bpmn/bpmn-sdk.d.ts:976-977` |
1060
- | `triggerId` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:775-781` |
1061
- | `triggerId` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1419-1438` |
1062
- | `triggerOptions` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:761-762` |
1060
+ | `triggerId` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:778-784` |
1061
+ | `triggerId` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1434-1453` |
1062
+ | `triggerOptions` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:764-765` |
1063
1063
  | `triggers` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:644-645` |
1064
1064
  | `triggers` | property | `CaseLayout` | `dist/case/case-sdk.d.ts:620-621` |
1065
1065
  | `type` | property | `ActionField` | `dist/case/case-sdk.d.ts:435-436` |
@@ -1115,7 +1115,7 @@ not find it either.
1115
1115
  | `value` | property | `TypedInputRow` | `dist/bpmn/typed-node.d.ts:205-206` |
1116
1116
  | `values` | property | `DataFabricCreateInputs` | `dist/nodes/data-fabric/flow/spec.d.ts:132-137` |
1117
1117
  | `var` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1199-1223` |
1118
- | `var` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1622-1631` |
1118
+ | `var` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1637-1646` |
1119
1119
  | `var` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3059-3067` |
1120
1120
  | `var` | property | `TaskOutputBinding` | `dist/case/case-sdk.d.ts:494-495` |
1121
1121
  | `var` | property | `TypedOutputRow` | `dist/bpmn/typed-node.d.ts:251-252` |
@@ -1125,12 +1125,12 @@ not find it either.
1125
1125
  | `variant` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:187-191` |
1126
1126
  | `variant` | property | `TransformInputs` | `dist/nodes/transform/flow/spec.d.ts:96-105` |
1127
1127
  | `vars` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:640` |
1128
- | `vars` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:756` |
1128
+ | `vars` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:759` |
1129
1129
  | `vars` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3086-3111` |
1130
1130
  | `vars` | property | `ScopeStorage` | `dist/bpmn/bpmn-sdk.d.ts:1939-1940` |
1131
1131
  | `varSchema` | property | `TypedOutputRow` | `dist/bpmn/typed-node.d.ts:257-271` |
1132
1132
  | `version` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:626-632` |
1133
- | `version` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:746` |
1133
+ | `version` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:749` |
1134
1134
  | `version` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1057-1067` |
1135
1135
  | `version` | property | `ConnectorEventOpts` | `dist/bpmn/bpmn-sdk.d.ts:1435-1436` |
1136
1136
  | `version` | property | `ConnectorMeta` | `dist/core/connectors.d.ts:63` |
@@ -1138,7 +1138,7 @@ not find it either.
1138
1138
  | `version` | property | `ConnectorToolRef` | `dist/core/actions.d.ts:1289-1290` |
1139
1139
  | `version` | property | `EventSubscription` | `dist/core/actions.d.ts:2173` |
1140
1140
  | `version` | property | `ExternalTaskOpts` | `dist/bpmn/bpmn-sdk.d.ts:1507-1508` |
1141
- | `version` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1439-1452` |
1141
+ | `version` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1454-1467` |
1142
1142
  | `version` | property | `NodeOptions` | `dist/flow-sdk.d.ts:397-404` |
1143
1143
  | `version` | property | `TriggerMeta` | `dist/core/connectors.d.ts:126` |
1144
1144
  | `version` | property | `TriggerOptions` | `dist/core/actions.d.ts:2130-2131` |
@@ -1155,13 +1155,13 @@ not find it either.
1155
1155
  | `waitForEvent` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2688-2729` |
1156
1156
  | `waitForMessage` | property | `FlowActionSpecs` | `dist/nodes/conversation/flow/spec.d.ts:51-54` |
1157
1157
  | `waitForTimer` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:877-883` |
1158
- | `waypoints` | property | `EdgeRoute` | `dist/flow-sdk.d.ts:654-659` |
1158
+ | `waypoints` | property | `EdgeRoute` | `dist/flow-sdk.d.ts:657-662` |
1159
1159
  | `when` | property | `SlaOpts` | `dist/case/case-sdk.d.ts:176-182` |
1160
1160
  | `when` | property | `SwitchArm` | `dist/flow-sdk.d.ts:362-367` |
1161
1161
  | `where` | property | `EventSubscription` | `dist/core/actions.d.ts:2139-2157` |
1162
1162
  | `where` | property | `TriggerOptions` | `dist/core/actions.d.ts:2092-2109` |
1163
1163
  | `width` | property | `CaseNodeLayout` | `dist/case/case-sdk.d.ts:604-605` |
1164
- | `width` | property | `StickyNote` | `dist/flow-sdk.d.ts:709-710` |
1165
- | `x` | property | `StickyNote` | `dist/flow-sdk.d.ts:705-706` |
1166
- | `y` | property | `StickyNote` | `dist/flow-sdk.d.ts:707-708` |
1164
+ | `width` | property | `StickyNote` | `dist/flow-sdk.d.ts:712-713` |
1165
+ | `x` | property | `StickyNote` | `dist/flow-sdk.d.ts:708-709` |
1166
+ | `y` | property | `StickyNote` | `dist/flow-sdk.d.ts:710-711` |
1167
1167
  | `zIndex` | property | `CaseNodeLayout` | `dist/case/case-sdk.d.ts:608-609` |
package/dist/check.js CHANGED
@@ -26,6 +26,8 @@ import { compareSchemaVersions, schemaVersionRefusal } from './schema-version.js
26
26
  import { planFlowGlobals, planSharedInputs, sharedInputRoots } from './flow-variables.js';
27
27
  import { planOutputBacking } from './flow-output-backing.js';
28
28
  import { ownEntry } from './core/own-entry.js';
29
+ import { terminateStepClashMessage, terminateTwiceMessage } from './flow-terminate-names.js';
30
+ import { endContentKey } from './flow-end-content.js';
29
31
  import { FLOW_NODE_TYPES } from './flow-node-registry.js';
30
32
  import { stepExits } from './flow-step-exits.js';
31
33
  import { plainHttpOnErrorMessage } from './nodes/http/flow/family.js';
@@ -270,8 +272,24 @@ function checkFlow(built, ancestors, opts = {}) {
270
272
  // referenceable — registering it would report DUP_STEP the second time one
271
273
  // appears. The port-edge kinds carry no name at all.
272
274
  if ('name' in s && s.kind !== 'return') {
273
- if (stepNames.has(s.name))
274
- diags.push({ level: 'error', code: 'DUP_STEP', message: `Duplicate step name "${s.name}".`, step: s.name });
275
+ if (stepNames.has(s.name)) {
276
+ // Two `.terminate('<name>')` calls are two Terminate nodes: the second
277
+ // would be renamed `<name>2`, so paths that all stop at ONE Terminate
278
+ // come back with an extra node (#1239). Same code as any step clash (a
279
+ // Terminate's name is a step name), with the remedy spelled out.
280
+ // A step and a Terminate sharing a name (either order) get the same
281
+ // words serialize throws for them: rename one.
282
+ const twoTerminates = s.kind === 'terminate' && terminateNames.has(s.name);
283
+ const oneTerminate = (s.kind === 'terminate') !== terminateNames.has(s.name);
284
+ diags.push({
285
+ level: 'error', code: 'DUP_STEP', step: s.name,
286
+ message: twoTerminates
287
+ ? terminateTwiceMessage(s.name)
288
+ : oneTerminate
289
+ ? terminateStepClashMessage(s.name)
290
+ : `Duplicate step name "${s.name}".`,
291
+ });
292
+ }
275
293
  stepNames.add(s.name);
276
294
  declared.add(s.name); // a step's output is referenceable by name
277
295
  }
@@ -4566,17 +4584,40 @@ function checkStepRefs(built, diags) {
4566
4584
  * two nodes share is refused rather than wired to whichever came first.
4567
4585
  */
4568
4586
  const endNames = new Map();
4587
+ /**
4588
+ * Per scope and End name, the content of each distinct `.return` asking for it.
4589
+ * Two `.return`s with the same name AND the same values, label, version and
4590
+ * updates are one End reached from two paths (serialize joins them); only a
4591
+ * repeat that differs is a second End. Keyed by `endContentKey`, the key
4592
+ * serialize joins on, so the two cannot disagree.
4593
+ */
4594
+ const endContents = new Map();
4569
4595
  const stepNamesSeen = new Set();
4596
+ /**
4597
+ * Every `.terminate('<name>')`. A Terminate is a step-named node (two with one
4598
+ * name are DUP_STEP), and, like an End, it runs nothing after itself, so it is
4599
+ * a ref target from any path, another port's path included (#1239).
4600
+ */
4601
+ const terminateNames = new Set();
4570
4602
  let seq = 0;
4571
4603
  const index = (steps, portList, scope, arm) => {
4572
4604
  for (const s of steps) {
4573
4605
  // A `return`'s own `name` is synthetic; its End is named by `options.name`.
4574
4606
  const name = s.kind === 'return' ? s.options?.name : 'name' in s ? s.name : undefined;
4575
4607
  if (name !== undefined) {
4576
- if (s.kind === 'return')
4577
- endNames.set(name, (endNames.get(name) ?? 0) + 1);
4608
+ if (s.kind === 'return') {
4609
+ const key = JSON.stringify([scope, name]);
4610
+ const content = endContentKey(s);
4611
+ const seen = endContents.get(key) ?? endContents.set(key, new Set()).get(key);
4612
+ if (!seen.has(content)) {
4613
+ seen.add(content);
4614
+ endNames.set(name, (endNames.get(name) ?? 0) + 1);
4615
+ }
4616
+ }
4578
4617
  else
4579
4618
  stepNamesSeen.add(name);
4619
+ if (s.kind === 'terminate')
4620
+ terminateNames.add(name);
4580
4621
  // Exactly the step rule from before, for steps. A named End only fills a
4581
4622
  // name nothing has claimed; a clash is REF_AMBIGUOUS_TARGET below.
4582
4623
  if (s.kind !== 'return' || !order.has(name)) {
@@ -4592,6 +4633,15 @@ function checkStepRefs(built, diags) {
4592
4633
  seq++;
4593
4634
  if (s.kind === 'stepToList')
4594
4635
  index(s.body, true, scope, arm);
4636
+ // A `.stepSwitch` routes EVERY declared exit, as `.switch` routes every
4637
+ // case, so its arms are not side paths: they inherit `portList`, as a
4638
+ // `.switch` case does. So a ref into a step of an arm is legal from another
4639
+ // arm AND from outside the `.stepSwitch` (before #1231 an arm step was not
4640
+ // indexed, so a ref from outside was REF_UNKNOWN_TARGET even though
4641
+ // serialize wired it). Walked so their Ends count toward DUP_END_NAME and
4642
+ // are ref targets (#1231).
4643
+ else if (s.kind === 'stepSwitch')
4644
+ s.cases.forEach((c) => index(c.body, portList, scope, arm));
4595
4645
  else if (s.kind === 'branch') {
4596
4646
  index(s.then, portList, scope, arm);
4597
4647
  index(s.otherwise, portList, scope, arm);
@@ -4608,12 +4658,31 @@ function checkStepRefs(built, diags) {
4608
4658
  }
4609
4659
  };
4610
4660
  index(built.steps, false, '', undefined);
4661
+ // An entry-point prefix is a path of its own that may end at the shared body's
4662
+ // End, so its Ends count toward the duplicate-name rule below (#1231).
4663
+ for (const ep of built.entryPoints ?? [])
4664
+ index(ep.steps, false, '', undefined);
4665
+ // Two `.return`s asking for the same End name with different content are two
4666
+ // End nodes, which compile refuses rather than renaming the second `<name>2`
4667
+ // (#1231). One End shared by several paths is spelled once, with every other
4668
+ // path ending at it by `.stepToRef('<name>')`, or repeated identically.
4669
+ for (const [name, count] of endNames) {
4670
+ if (count < 2)
4671
+ continue;
4672
+ diags.push({
4673
+ level: 'error', code: 'DUP_END_NAME', step: name,
4674
+ message: `${count} different \`.return({}, { name: '${name}' })\` calls ask for the same End (their values, label, `
4675
+ + `version or updates differ, or they sit in different scopes), so they would be ${count} End nodes with one id. `
4676
+ + `To end several paths at one End, keep one \`.return({}, { name: '${name}' })\` and end the other paths with `
4677
+ + `\`.stepToRef('${name}')\`; to have separate Ends, give each its own name.`,
4678
+ });
4679
+ }
4611
4680
  /** Every ref, with where it sits. */
4612
4681
  const found = [];
4613
4682
  const collect = (steps, from, scope, arm, enclosing = []) => {
4614
4683
  let source = from;
4615
4684
  for (const [i, s] of steps.entries()) {
4616
- if (s.kind === 'action')
4685
+ if (s.kind === 'action' || s.kind === 'stepSwitch')
4617
4686
  source = s.name;
4618
4687
  if (s.kind === 'stepToRef') {
4619
4688
  found.push({
@@ -4626,6 +4695,8 @@ function checkStepRefs(built, diags) {
4626
4695
  }
4627
4696
  if (s.kind === 'stepToList')
4628
4697
  collect(s.body, source, scope, arm, enclosing);
4698
+ else if (s.kind === 'stepSwitch')
4699
+ s.cases.forEach((c) => collect(c.body, s.name, scope, arm, enclosing));
4629
4700
  else if (s.kind === 'branch') {
4630
4701
  collect(s.then, source, scope, arm, enclosing);
4631
4702
  collect(s.otherwise, source, scope, arm, enclosing);
@@ -4641,6 +4712,8 @@ function checkStepRefs(built, diags) {
4641
4712
  }
4642
4713
  };
4643
4714
  collect(built.steps, undefined, '', undefined);
4715
+ for (const ep of built.entryPoints ?? [])
4716
+ collect(ep.steps, ep.id, '', undefined);
4644
4717
  for (const { target, from, after, scope, arm, enclosing } of found) {
4645
4718
  const where = from ? `after "${from}"` : 'at the start of the flow';
4646
4719
  const say = (level, code, message, suggestion) => {
@@ -4649,17 +4722,31 @@ function checkStepRefs(built, diags) {
4649
4722
  if (!order.has(target)) {
4650
4723
  const near = [...order.keys()].find((n) => n.toLowerCase() === target.toLowerCase());
4651
4724
  say('error', 'REF_UNKNOWN_TARGET', `.stepToRef('${target}') ${where} names a step this flow does not have`
4652
- + `${near ? ` (did you mean "${near}"?)` : ''}. It takes the same name you passed to .step(), or the `
4653
- + `\`name\` of a \`.return({}, { name })\` End.`, near ? `.stepToRef('${near}')` : undefined);
4725
+ + `${near ? ` (did you mean "${near}"?)` : ''}. It takes the same name you passed to .step() or `
4726
+ + `.terminate(), or the \`name\` of a \`.return({}, { name })\` End.`, near ? `.stepToRef('${near}')` : undefined);
4654
4727
  continue;
4655
4728
  }
4656
4729
  const ends = endNames.get(target) ?? 0;
4657
- if (ends > 0 && ends + (stepNamesSeen.has(target) ? 1 : 0) > 1) {
4658
- say('error', 'REF_AMBIGUOUS_TARGET', `.stepToRef('${target}') ${where} names ${stepNamesSeen.has(target) ? 'both a step and an End' : `${ends} Ends`} `
4659
- + `called "${target}", so it is not clear which one the path should go to. Give each \`.return({}, { name })\` `
4660
- + `a name no other step or End uses.`);
4730
+ // Two Ends sharing the name are DUP_END_NAME above, reported once whether or
4731
+ // not a ref names them; this is the step-and-End clash.
4732
+ if (ends > 1)
4733
+ continue;
4734
+ if (ends > 0 && stepNamesSeen.has(target)) {
4735
+ say('error', 'REF_AMBIGUOUS_TARGET', `.stepToRef('${target}') ${where} names both a step and an End called "${target}", so it is not clear which `
4736
+ + `one the path should go to. Give the \`.return({}, { name })\` a name no step uses.`);
4661
4737
  continue;
4662
4738
  }
4739
+ /**
4740
+ * The target is an End and nothing else. An End has no "runs only when its
4741
+ * port fired" meaning past itself: it ends the run, whichever path arrives.
4742
+ * So a ref into an End that sits inside another port's path (two HTTP
4743
+ * branches, two outcomes, a prefix and a branch, all ending at one End) is
4744
+ * the product's own shape, one End with several incoming edges (#1231).
4745
+ * A Terminate is the same: it stops the run whichever path arrives, so two
4746
+ * side paths stopping at one Terminate is one node with two incoming edges
4747
+ * (#1239). A step sharing a Terminate's name is DUP_STEP, reported apart.
4748
+ */
4749
+ const terminal = ends > 0 || terminateNames.has(target);
4663
4750
  // A ref to a container the path is INSIDE names it as a step, so the edge
4664
4751
  // enters it from its outer input: it starts the loop over from its first
4665
4752
  // item, while the iteration the path was in never finishes. What the author
@@ -4670,10 +4757,11 @@ function checkStepRefs(built, diags) {
4670
4757
  + `next iteration, or .break() to leave the loop.`, '.continue()');
4671
4758
  continue;
4672
4759
  }
4673
- if (inPortList.has(target)) {
4760
+ if (inPortList.has(target) && !terminal) {
4674
4761
  say('error', 'REF_INTO_PORT_LIST', `.stepToRef('${target}') ${where} targets a step inside another port's path. That path runs only when ITS `
4675
4762
  + `port fired — it is not somewhere another edge can jump into. Point at a step on the main path, or end `
4676
- + `this one with .return() / .terminate().`);
4763
+ + `this one with .return() / .terminate(). (A named End or a Terminate is the exception: any path may end `
4764
+ + `there.)`);
4677
4765
  continue;
4678
4766
  }
4679
4767
  const targetScope = scopeOf.get(target) ?? '';
@@ -4701,7 +4789,10 @@ function checkStepRefs(built, diags) {
4701
4789
  // Best effort from here: the mechanism is understood, the runtime's behaviour
4702
4790
  // is not measured, so these WARN and leave the verdict to `validate`.
4703
4791
  const targetArm = armOf.get(target);
4704
- if (targetArm !== arm) {
4792
+ // A Terminate stops the whole run, every branch with it, so no Merge is left
4793
+ // waiting: a ref into or out of an arm that ends at one cannot hang a join
4794
+ // (#1239). An End stops only its own path, so it keeps the warnings.
4795
+ if (targetArm !== arm && !terminateNames.has(target)) {
4705
4796
  if (targetArm !== undefined) {
4706
4797
  say('warning', 'REF_INTO_PARALLEL_ARM', `.stepToRef('${target}') ${where} points INTO a parallel arm from outside it. The Merge those arms join `
4707
4798
  + `on is a bpmn:ParallelGateway, which waits for every branch it forked — an extra token arriving inside `
package/dist/decompile.js CHANGED
@@ -1910,6 +1910,17 @@ function emitTrigger(e, depth, trigger, imp, o, inputNames = new Set()) {
1910
1910
  // and loop bodies. Non-reducible / non-reconverging graphs fall back to a marker
1911
1911
  // rather than a hard failure (a validating flow must still yield usable code).
1912
1912
  const EXIT = '#EXIT#';
1913
+ /**
1914
+ * Every End more than one edge enters. A second path can reach one after its
1915
+ * `.return(...)` is already written, and that path then ends there with a
1916
+ * `.stepToRef` (#1231). Only a NAMED End is a ref target, so these are named up
1917
+ * front (`Ctx.refTargets`), the default id `end` included.
1918
+ */
1919
+ function sharedEnds(flow, graph) {
1920
+ return new Set((flow.nodes ?? [])
1921
+ .filter((n) => n.type === T.end && graph.inEdges(n.id).length > 1)
1922
+ .map((n) => n.id));
1923
+ }
1913
1924
  /** The node ids in a scope: the `parentId` group (root scope = no `parentId`). */
1914
1925
  function scopeIds(nodes, parentId) {
1915
1926
  return new Set(nodes.filter((n) => (n.parentId ?? undefined) === parentId).map((n) => n.id));
@@ -2386,11 +2397,20 @@ function region(cursor, stop, scope, ipdom, ctx, refInto) {
2386
2397
  break;
2387
2398
  // A ref backward or sideways: this path has arrived somewhere already emitted.
2388
2399
  // Before, the walk simply stopped here — which silently dropped the rest of a
2389
- // cycle, and a backward edge is now something the builder can author. Ends and
2390
- // terminates are excluded: each path emitting its own is a valid flow. (A
2391
- // side path into the MAIN path's End is the lookahead above, #1223; an End
2392
- // emitted earlier may be unnamed, so it is not a ref target here.)
2393
- if (ctx.emitted.has(cursor) && node.type !== T.end && node.type !== T.terminate) {
2400
+ // cycle, and a backward edge is now something the builder can author.
2401
+ //
2402
+ // That includes an End another path already ended at (#1231): two HTTP
2403
+ // branches, two outcomes, or an entry-point prefix and a branch that all run
2404
+ // into ONE End. A second `.return(...)` there compiled to a second End
2405
+ // (`<id>2`); a ref names the one End. `decompile()` seeded `ctx.refTargets`
2406
+ // with every End more than one edge enters, so the `.return(...)` emitted
2407
+ // first already carries the End's `name` (only a named End is a ref target).
2408
+ //
2409
+ // And a Terminate another path already stopped at (#1239). A Terminate is
2410
+ // always named (its id is its `.terminate('<name>')`), so it needs no
2411
+ // seeding: a second `.terminate(...)` there compiled to a second Terminate
2412
+ // (`<id>2`), or failed check as DUP_STEP; a ref names the one Terminate.
2413
+ if (ctx.emitted.has(cursor) && (node.type !== T.end || ctx.refTargets?.has(cursor))) {
2394
2414
  segs.push(`.stepToRef(${tsLiteral(cursor)})`);
2395
2415
  return segs;
2396
2416
  }
@@ -3079,6 +3099,7 @@ function emitChildFlow(name, child, ctx) {
3079
3099
  emitted: new Set(),
3080
3100
  o: ctx.o,
3081
3101
  };
3102
+ childCtx.refTargets = sharedEnds(child, childCtx.graph);
3082
3103
  const parts = [`${ctx.imp.use('flow')}(${tsLiteral(name)})`];
3083
3104
  // As for the root flow (emitFlow): every End is explicit, so nothing is implicit.
3084
3105
  parts.push('.openTails()');
@@ -3323,7 +3344,9 @@ export function decompile(flow, options = {}) {
3323
3344
  }
3324
3345
  emitVariables(e, d, flow, imp, new Set(triggerNodes.filter((t) => t !== trigger).map((t) => t.id)), shared);
3325
3346
  // Reconstruct the body: structured control flow recovered from the graph.
3326
- const ctx = { graph, flow, imp, inputNames, o: options, emitted: new Set(), shared };
3347
+ const ctx = {
3348
+ graph, flow, imp, inputNames, o: options, emitted: new Set(), shared, refTargets: sharedEnds(flow, graph),
3349
+ };
3327
3350
  const scope = scopeIds(flow.nodes ?? [], undefined);
3328
3351
  const startId = trigger?.id ?? 'start';
3329
3352
  // Walked from the trigger's successors together: a `.parallel` placed first
@@ -0,0 +1,16 @@
1
+ import { type Expr } from './core/expr.js';
2
+ import type { ReturnOptions } from './flow-sdk.js';
3
+ /**
4
+ * What makes two `.return({}, { name })` calls the SAME End: their values,
5
+ * label, version and updates, in the source form serialize writes. Two calls
6
+ * with one name and one key are one End reached from two paths; a repeat with
7
+ * a different key is DUP_END_NAME (#1231).
8
+ *
9
+ * `check` and `serialize` both key on this, so they cannot disagree about which
10
+ * repeats join (#1238 review). An empty `updates` is the same as none: both
11
+ * write no update.
12
+ */
13
+ export declare function endContentKey(step: {
14
+ values: Record<string, Expr>;
15
+ options?: ReturnOptions;
16
+ }): string;
@@ -0,0 +1,25 @@
1
+ import { toExpr } from './core/expr.js';
2
+ /** The source form of one value, as the End's mapping or update writes it (before any rename). */
3
+ function source(val) {
4
+ const e = toExpr(val);
5
+ return e.literal ? '=js:' + JSON.stringify(e.value) : '=js:' + e.js;
6
+ }
7
+ /**
8
+ * What makes two `.return({}, { name })` calls the SAME End: their values,
9
+ * label, version and updates, in the source form serialize writes. Two calls
10
+ * with one name and one key are one End reached from two paths; a repeat with
11
+ * a different key is DUP_END_NAME (#1231).
12
+ *
13
+ * `check` and `serialize` both key on this, so they cannot disagree about which
14
+ * repeats join (#1238 review). An empty `updates` is the same as none: both
15
+ * write no update.
16
+ */
17
+ export function endContentKey(step) {
18
+ const o = step.options;
19
+ return JSON.stringify([
20
+ Object.entries(step.values).map(([k, v]) => [k, source(v)]),
21
+ o?.label ?? null,
22
+ o?.version ?? null,
23
+ Object.entries(o?.updates ?? {}).map(([k, v]) => [k, source(v)]),
24
+ ]);
25
+ }
@@ -464,12 +464,15 @@ export interface ReturnOptions extends NodeOptions {
464
464
  * @remarks
465
465
  * Like a step name this is identity, not decoration: use {@link NodeOptions.label}
466
466
  * for what the canvas shows. Two Ends in one scope asking for `done` with the
467
- * same values, label and version are one End reached from both paths; Ends that
468
- * differ are de-duplicated to `done` and `done2`.
467
+ * same values, label, version and updates are one End reached from both paths.
468
+ * Two that differ in any of these, or that sit in different scopes (a loop body
469
+ * and the main path), are refused (`check`: DUP_END_NAME; `compile --no-check`
470
+ * throws) rather than renamed `done2`.
469
471
  *
470
472
  * A named End is also a {@link StepList.stepToRef} target: another path can
471
- * end at this End rather than at one of its own. `check` refuses the ref
472
- * (REF_AMBIGUOUS_TARGET) when the name is shared by another End or a step.
473
+ * end at this End rather than at one of its own, from anywhere in the flow,
474
+ * including another port's path (an End runs nothing after itself). `check`
475
+ * refuses the ref (REF_AMBIGUOUS_TARGET) when a step has the same name.
473
476
  *
474
477
  * ```ts
475
478
  * .branch('checkTemperature', js`${input('tempF')} > 60`,
@@ -1160,6 +1163,14 @@ declare class StepList {
1160
1163
  * What aborts, what the run reports, and what each local rung can prove:
1161
1164
  * `references/terminate.md`.
1162
1165
  *
1166
+ * The name is a step name, so a Terminate is also a {@link StepList.stepToRef}
1167
+ * target: another path can stop at this Terminate rather than at one of its
1168
+ * own, from anywhere in the flow, including another port's path. To stop
1169
+ * several paths at one Terminate, spell its `.terminate` once and end the
1170
+ * other paths with `.stepToRef('<name>')`. Two `.terminate`s asking for the
1171
+ * same name are refused (`check`: DUP_STEP; `compile --no-check` throws)
1172
+ * rather than renamed `<name>2`.
1173
+ *
1163
1174
  * @example
1164
1175
  * **Abort the sibling arm from inside a parallel**
1165
1176
  * ```ts
@@ -1202,7 +1213,11 @@ declare class StepList {
1202
1213
  *
1203
1214
  * The target may also be a NAMED End, `.return({…}, { name })`: the path then
1204
1215
  * ends at that End node instead of one of its own, so one End has several
1205
- * incoming edges, as the canvas draws it.
1216
+ * incoming edges, as the canvas draws it. Unlike a step, an End inside another
1217
+ * port's path is a valid target: two HTTP branches or two outcomes can end at
1218
+ * one End. To end several paths at one End, spell its `.return` once and end
1219
+ * the other paths with `.stepToRef('<name>')`. A `.terminate('<name>')` is a
1220
+ * target in the same way: any path may stop at it.
1206
1221
  *
1207
1222
  * ```ts
1208
1223
  * .step('fetch', http({ …, branches: [{ name: 'missing', condition: … }] }))
@@ -1211,8 +1226,8 @@ declare class StepList {
1211
1226
  * .return({}, { name: 'done' }) // both paths end at this one End
1212
1227
  * ```
1213
1228
  *
1214
- * @param target - The step to continue at, named as it was in `.step(...)`, or
1215
- * the `name` of a `.return(...)` End.
1229
+ * @param target - The step to continue at, named as it was in `.step(...)` or
1230
+ * `.terminate(...)`, or the `name` of a `.return(...)` End.
1216
1231
  * @returns This builder. Nothing may follow: the path has been handed off.
1217
1232
  * @see stepToList
1218
1233
  */
@@ -1232,8 +1247,8 @@ declare class StepList {
1232
1247
  * ```
1233
1248
  *
1234
1249
  * @param port - The port of this step to leave, e.g. `'error'`.
1235
- * @param target - The step to continue at, named as it was in `.step(...)`, or
1236
- * the `name` of a `.return(...)` End.
1250
+ * @param target - The step to continue at, named as it was in `.step(...)` or
1251
+ * `.terminate(...)`, or the `name` of a `.return(...)` End.
1237
1252
  * @returns This builder, so calls chain — a side exit ends nothing.
1238
1253
  * @see stepToList
1239
1254
  */
package/dist/flow-sdk.js CHANGED
@@ -816,6 +816,14 @@ class StepList {
816
816
  * What aborts, what the run reports, and what each local rung can prove:
817
817
  * `references/terminate.md`.
818
818
  *
819
+ * The name is a step name, so a Terminate is also a {@link StepList.stepToRef}
820
+ * target: another path can stop at this Terminate rather than at one of its
821
+ * own, from anywhere in the flow, including another port's path. To stop
822
+ * several paths at one Terminate, spell its `.terminate` once and end the
823
+ * other paths with `.stepToRef('<name>')`. Two `.terminate`s asking for the
824
+ * same name are refused (`check`: DUP_STEP; `compile --no-check` throws)
825
+ * rather than renamed `<name>2`.
826
+ *
819
827
  * @example
820
828
  * **Abort the sibling arm from inside a parallel**
821
829
  * ```ts
@@ -0,0 +1,9 @@
1
+ /**
2
+ * The words for a `.terminate('<name>')` whose name is already taken (#1239).
3
+ * `check` (DUP_STEP) and `serialize` (the `--no-check` backstop) both use them,
4
+ * so one clash gets one explanation whichever reports it.
5
+ */
6
+ /** Two `.terminate('<name>')` calls: keep one and end the other paths at it. */
7
+ export declare function terminateTwiceMessage(name: string): string;
8
+ /** A step and a `.terminate('<name>')` share a name: they are different nodes, so rename one. */
9
+ export declare function terminateStepClashMessage(name: string): string;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The words for a `.terminate('<name>')` whose name is already taken (#1239).
3
+ * `check` (DUP_STEP) and `serialize` (the `--no-check` backstop) both use them,
4
+ * so one clash gets one explanation whichever reports it.
5
+ */
6
+ /** Two `.terminate('<name>')` calls: keep one and end the other paths at it. */
7
+ export function terminateTwiceMessage(name) {
8
+ return `Duplicate step name "${name}": two \`.terminate('${name}')\` calls ask for the same Terminate. Each `
9
+ + `\`.terminate\` makes a Terminate node of its own. To stop several paths at one Terminate, keep one `
10
+ + `\`.terminate('${name}')\` and end the other paths with \`.stepToRef('${name}')\`; to have separate `
11
+ + `Terminates, give each its own name.`;
12
+ }
13
+ /** A step and a `.terminate('<name>')` share a name: they are different nodes, so rename one. */
14
+ export function terminateStepClashMessage(name) {
15
+ return `Duplicate step name "${name}": a step and a \`.terminate('${name}')\` both use it, and a node id names `
16
+ + `one node. Rename one of them.`;
17
+ }
package/dist/serialize.js CHANGED
@@ -65,6 +65,8 @@ import { resourceNodeSortOrder } from './core/process-resource-sort-order.js';
65
65
  import { types } from './core/expr.js';
66
66
  import { SUBFLOW_START_LABEL } from './core/subflow-start.js';
67
67
  import { ownEntry } from './core/own-entry.js';
68
+ import { endContentKey } from './flow-end-content.js';
69
+ import { terminateStepClashMessage, terminateTwiceMessage } from './flow-terminate-names.js';
68
70
  import { jsonClone } from './core/json-clone.js';
69
71
  // core-definitions.json is an object keyed by "<nodeType>@<version>".
70
72
  const DEFS = BUNDLED_DEFINITIONS;
@@ -4367,6 +4369,8 @@ export function serialize(built, opts = {}) {
4367
4369
  const takenIds = new Set([built.triggerId ?? 'start']);
4368
4370
  /** Per scope, each named `.return` End emitted so far and its content. */
4369
4371
  const namedEnds = new Map();
4372
+ /** Per scope, the names a `.terminate` claimed: which remedy a later clash gets (#1239). */
4373
+ const terminateNames = new Map();
4370
4374
  let edgeSeq = 0;
4371
4375
  /** Claim a globally unique node id, honouring the scope's rename map. */
4372
4376
  function uid(scope, base) {
@@ -6424,6 +6428,20 @@ export function serialize(built, opts = {}) {
6424
6428
  // version and its handleConfiguration has exactly one TARGET handle. Its
6425
6429
  // terminal flow-output mappings are separate metadata required by the
6426
6430
  // product validator; they do not create a readable node output.
6431
+ //
6432
+ // A Terminate is a `.stepToRef` target (its name is a step name), so a
6433
+ // second `.terminate` asking for a name this scope already holds is
6434
+ // refused, not renamed `<name>2`: that rename turned one Terminate two
6435
+ // paths share into two Terminates with no word said (#1239). `check`
6436
+ // reports it first as DUP_STEP; this is the backstop for `--no-check`.
6437
+ // The remedy depends on what holds the name: another Terminate (end the
6438
+ // other paths at it) or a step of another kind (rename one).
6439
+ if (scope.stepNodeId.has(step.name)) {
6440
+ throw new Error(terminateNames.get(scope)?.has(step.name)
6441
+ ? terminateTwiceMessage(step.name)
6442
+ : terminateStepClashMessage(step.name));
6443
+ }
6444
+ (terminateNames.get(scope) ?? terminateNames.set(scope, new Set()).get(scope)).add(step.name);
6427
6445
  const id = stepUid(scope, step.name);
6428
6446
  const node = makeNode(NODE_TYPE.terminate, id, step.options?.label ?? step.label ?? step.name, { parentId, requestedVersion: step.options?.version });
6429
6447
  node.inputs = {};
@@ -6496,13 +6514,24 @@ export function serialize(built, opts = {}) {
6496
6514
  // Decompile writes one `.return` per path into an End that several paths
6497
6515
  // share, so a repeat of an earlier named End in this scope, with the same
6498
6516
  // content, is that End reached again rather than a second one.
6499
- const sig = JSON.stringify([parentId ?? null, step.options?.label ?? null, step.options?.version ?? null, explicit, updates]);
6517
+ // `endContentKey` is the key `check` counts DUP_END_NAME on, so `check`
6518
+ // and `compile --no-check` agree on which repeats join.
6519
+ const sig = JSON.stringify([parentId ?? null, endContentKey(step)]);
6500
6520
  const prior = name === undefined ? undefined : namedEnds.get(scope)?.get(name);
6501
6521
  if (prior?.sig === sig) {
6502
6522
  for (const t of tails)
6503
6523
  addEdge(scope, t, prior.id);
6504
6524
  }
6505
6525
  else {
6526
+ // A repeat that DIFFERS is refused, not renamed `<name>2`: the rename
6527
+ // turned one End shared by two paths into two Ends with no word said
6528
+ // (#1231). `check` reports it first as DUP_END_NAME; this is the
6529
+ // backstop for `--no-check`.
6530
+ if (prior) {
6531
+ throw new Error(`Two .return({}, { name: '${name}' }) calls ask for the same End with different values, label, version, updates or scope. `
6532
+ + `To end several paths at one End, keep one .return and end the others with .stepToRef('${name}'); `
6533
+ + `to have separate Ends, give each its own name.`);
6534
+ }
6506
6535
  const id = uid(scope, name ?? 'end');
6507
6536
  emitEnd(scope, id, tails, { label: step.options?.label, parentId, requestedVersion: step.options?.version, explicit });
6508
6537
  if (updates.length)
@@ -6511,8 +6540,6 @@ export function serialize(built, opts = {}) {
6511
6540
  (namedEnds.get(scope) ?? namedEnds.set(scope, new Map()).get(scope)).set(name, { id, sig });
6512
6541
  // A NAMED End can be a `.stepToRef` target (#1223); an unnamed one
6513
6542
  // cannot, since its id (`end`, `end2`, …) depends on emission order.
6514
- // First wins, like `stepUid`: two Ends sharing a name with different
6515
- // content are `check`'s REF_AMBIGUOUS_TARGET when a ref names them.
6516
6543
  scope.endNodeId.set(name, id);
6517
6544
  }
6518
6545
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uipath/maestro-builder-sdk",
3
- "version": "6.32.0",
3
+ "version": "6.32.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",
@@ -93,5 +93,5 @@
93
93
  "@types/node": "^22.7.0",
94
94
  "esbuild": "^0.28.1"
95
95
  },
96
- "gitref": "83ae5bb02e8784f1a445c0377a09daae9ffc5b26"
96
+ "gitref": "c5c161d5160cc033040ad150154c4fb55e9bada8"
97
97
  }