@uipath/maestro-builder-sdk 6.25.0 → 6.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api-index.md +6 -6
- package/dist/api-members.md +39 -37
- package/dist/case/compile-cli.js +58 -2
- package/dist/check.js +36 -13
- package/dist/core/carried-definitions.d.ts +33 -0
- package/dist/core/carried-definitions.js +63 -0
- package/dist/core/nodes/versioned.d.ts +35 -0
- package/dist/core/nodes/versioned.js +35 -0
- package/dist/decompile.js +117 -12
- package/dist/flow-node-type.d.ts +8 -3
- package/dist/flow-sdk.d.ts +48 -0
- package/dist/flow-sdk.js +49 -0
- package/dist/merge.js +2 -1
- package/dist/serialize.js +70 -26
- package/package.json +2 -2
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:1658-1692` | 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:411-442` | 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:
|
|
60
|
+
| `ArmBuilder` | class | `dist/flow-sdk.d.ts:1193-1216` | 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:79-89` | 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
65
|
| `BuiltEntryPoint` | interface | `dist/flow-sdk.d.ts:695-707` | Supporting types | One additional flow root, built by `.entryPoint()`. |
|
|
66
|
-
| `BuiltFlow` | interface | `dist/flow-sdk.d.ts:708-
|
|
66
|
+
| `BuiltFlow` | interface | `dist/flow-sdk.d.ts:708-749` | Supporting types | 16 field(s) |
|
|
67
67
|
| `BuiltinToolName` | type | `dist/core/actions.d.ts:1066-1067` | Supporting types | The three platform-shipped built-in tools (fixed registry types). |
|
|
68
68
|
| `BuiltinToolRef` | interface | `dist/core/actions.d.ts:1199-1219` | Supporting types | A platform built-in tool. |
|
|
69
69
|
| `BuiltInValidatorGuardrail` | interface | `dist/core/actions.d.ts:762-803` | Supporting types | A platform-shipped validator, configured by parameters. |
|
|
@@ -128,11 +128,11 @@ could hand you spans for a version you do not have.
|
|
|
128
128
|
| `FilterCondition` | type | `dist/nodes/transform/flow/spec.d.ts:10-11` | Supporting types | Comparison a filter rule applies to a field. |
|
|
129
129
|
| `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. |
|
|
130
130
|
| `FilterRule` | interface | `dist/nodes/transform/flow/spec.d.ts:12-24` | Supporting types | 3 field(s) |
|
|
131
|
-
| `flow` | function | `dist/flow-sdk.d.ts:
|
|
131
|
+
| `flow` | function | `dist/flow-sdk.d.ts:1541-1556` | Flow construction | Start building a flow with the given id. |
|
|
132
132
|
| `FlowAction` | class | `dist/core/node-classes.d.ts:162-168` | Supporting types | A node placed as a step — pass an instance to `.step(name, …)`. |
|
|
133
133
|
| `FlowActionSpec` | type | `dist/flow-sdk.d.ts:53-54` | Supporting types | What `.step()` accepts here: the shared actions plus this SDK's subflow. |
|
|
134
134
|
| `FlowActionSpecs` | interface | `dist/core/actions.d.ts:1443-1520` | Supporting types | Every action kind, keyed by kind, to the body of its spec — the arm's fields other than `kind`. |
|
|
135
|
-
| `FlowBuilder` | class | `dist/flow-sdk.d.ts:
|
|
135
|
+
| `FlowBuilder` | class | `dist/flow-sdk.d.ts:1217-1540` | Builders | 14 member(s) |
|
|
136
136
|
| `FlowLayout` | interface | `dist/flow-sdk.d.ts:681-694` | 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
137
|
| `FlowNode` | class | `dist/core/node-classes.d.ts:126-161` | Supporting types | The abstract root of every definition-backed node the builder can place. |
|
|
138
138
|
| `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. |
|
|
@@ -225,11 +225,11 @@ could hand you spans for a version you do not have.
|
|
|
225
225
|
| `SendMessageInputs` | interface | `dist/nodes/conversation/flow/spec.d.ts:8-27` | Option shapes | 4 field(s) |
|
|
226
226
|
| `ShownField` | interface | `dist/core/actions.d.ts:63-78` | Supporting types | A value the reviewer READS: shown on the form, filled in from the flow. |
|
|
227
227
|
| `Step` | type | `dist/flow-sdk.d.ts:484-603` | Supporting types | |
|
|
228
|
-
| `StepList` | class | `dist/flow-sdk.d.ts:
|
|
228
|
+
| `StepList` | class | `dist/flow-sdk.d.ts:750-1192` | Builders | Collects a sequence of steps. |
|
|
229
229
|
| `STICKY_NOTE_COLORS` | const | `dist/flow-sdk.d.ts:634-639` | Flow construction | The designer's sticky-note palette. |
|
|
230
230
|
| `StickyNote` | interface | `dist/flow-sdk.d.ts:646-680` | Supporting types | A canvas sticky note — free text pinned to the diagram, for the humans reading it. |
|
|
231
231
|
| `StickyNoteColor` | type | `dist/flow-sdk.d.ts:640-645` | Supporting types | A sticky note's swatch. |
|
|
232
|
-
| `subflow` | function | `dist/flow-sdk.d.ts:
|
|
232
|
+
| `subflow` | function | `dist/flow-sdk.d.ts:1557-1596` | Flow construction | Run another flow as one step, and read back what it returns. |
|
|
233
233
|
| `SubflowSpec` | interface | `dist/flow-sdk.d.ts:45-52` | Supporting types | A step that runs a child flow. |
|
|
234
234
|
| `summarize` | function | `dist/nodes/ai-patterns/flow/factories.d.ts:8-48` | Actions | Summarize a document with citations — the platform's **Summarize** node. |
|
|
235
235
|
| `SummarizeInputs` | interface | `dist/nodes/ai-patterns/flow/spec.d.ts:8-40` | Option shapes | 3 field(s) |
|
package/dist/api-members.md
CHANGED
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
|
|
6
6
|
# Maestro Builder SDK — member index
|
|
7
7
|
|
|
8
|
-
**A lookup table of
|
|
8
|
+
**A lookup table of 1115 rows — match one name in it, do not read it.**
|
|
9
9
|
Grep or search for the member you have; the row it lands on is the whole
|
|
10
10
|
answer. Reading top to bottom costs ~20x what the one row does and tells you
|
|
11
11
|
nothing you asked for.
|
|
12
12
|
|
|
13
|
-
Every field and method of every exported shape —
|
|
13
|
+
Every field and method of every exported shape — 1115 across
|
|
14
14
|
200 interfaces and classes — keyed by the MEMBER's own name.
|
|
15
15
|
|
|
16
16
|
**Use this when the name you have is a field or a method**, which is usually
|
|
@@ -28,7 +28,7 @@ truncated summary would, for less. Read the span.
|
|
|
28
28
|
Member names repeat across shapes (`name` is declared on 69 of them), so the
|
|
29
29
|
`Declared on` column is what makes a match actionable. For the whole shape
|
|
30
30
|
rather than the one field, look that name up in [`api-index.md`](api-index.md) —
|
|
31
|
-
which is why its span is not repeated on all
|
|
31
|
+
which is why its span is not repeated on all 1115 rows here.
|
|
32
32
|
|
|
33
33
|
**A name that misses both indexes is probably not part of the API.** The one
|
|
34
34
|
that comes up is a RUNTIME output key — a human task's `Action`, a step'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:
|
|
69
|
+
| `armLabel` | property | `ArmBuilder` | `dist/flow-sdk.d.ts:1205` |
|
|
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:
|
|
100
|
+
| `branch` | method | `StepList` | `dist/flow-sdk.d.ts:949-967` |
|
|
101
101
|
| `branches` | property | `HttpInputsBase` | `dist/nodes/http/flow/spec.d.ts:25-30` |
|
|
102
|
-
| `break` | method | `StepList` | `dist/flow-sdk.d.ts:
|
|
102
|
+
| `break` | method | `StepList` | `dist/flow-sdk.d.ts:1077-1086` |
|
|
103
103
|
| `breakEnabled` | property | `DoWhileOptions` | `dist/flow-sdk.d.ts:481-482` |
|
|
104
104
|
| `breakEnabled` | property | `LoopOptions` | `dist/flow-sdk.d.ts:468-472` |
|
|
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:
|
|
107
|
+
| `build` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1533-1539` |
|
|
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` |
|
|
@@ -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:
|
|
175
|
+
| `continue` | method | `StepList` | `dist/flow-sdk.d.ts:1087-1101` |
|
|
176
176
|
| `contribute` | method | `FlowNode` | `dist/core/node-classes.d.ts:144-153` |
|
|
177
177
|
| `conversationalAgent` | property | `FlowActionSpecs` | `dist/core/actions.d.ts:1479-1482` |
|
|
178
178
|
| `conversationContext` | property | `FlowActionSpecs` | `dist/nodes/conversation/flow/spec.d.ts:55-58` |
|
|
@@ -207,6 +207,8 @@ 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:734-739` |
|
|
211
|
+
| `definitions` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1433-1473` |
|
|
210
212
|
| `delay` | property | `FlowActionSpecs` | `dist/nodes/delay/flow/spec.d.ts:38-41` |
|
|
211
213
|
| `dependsOn` | property | `LookupSpec` | `dist/core/lookups.d.ts:34-35` |
|
|
212
214
|
| `description` | property | `AgentMemoryRef` | `dist/core/actions.d.ts:1187` |
|
|
@@ -223,7 +225,7 @@ not find it either.
|
|
|
223
225
|
| `description` | property | `CustomGuardrail` | `dist/core/actions.d.ts:755` |
|
|
224
226
|
| `description` | property | `EscalationRef` | `dist/core/actions.d.ts:1349-1350` |
|
|
225
227
|
| `description` | property | `EventTriggerOpts` | `dist/case/case-sdk.d.ts:241` |
|
|
226
|
-
| `description` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:
|
|
228
|
+
| `description` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1242-1249` |
|
|
227
229
|
| `description` | property | `HttpRequestToolRef` | `dist/core/actions.d.ts:1154` |
|
|
228
230
|
| `description` | property | `IxpExtractInputs` | `dist/core/actions.d.ts:337-344` |
|
|
229
231
|
| `description` | property | `IxpToolRef` | `dist/core/actions.d.ts:1327-1328` |
|
|
@@ -265,7 +267,7 @@ not find it either.
|
|
|
265
267
|
| `document` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:252-256` |
|
|
266
268
|
| `documentClassify` | property | `FlowActionSpecs` | `dist/nodes/document/flow/spec.d.ts:56-59` |
|
|
267
269
|
| `documentId` | property | `DocValidationInputs` | `dist/nodes/hitl/flow/spec.d.ts:84-85` |
|
|
268
|
-
| `doWhile` | method | `StepList` | `dist/flow-sdk.d.ts:
|
|
270
|
+
| `doWhile` | method | `StepList` | `dist/flow-sdk.d.ts:1052-1076` |
|
|
269
271
|
| `dueDate` | property | `QueueItemInputs` | `dist/nodes/queue/flow/spec.d.ts:50-51` |
|
|
270
272
|
| `duration` | property | `TimerSpec` | `dist/bpmn/bpmn-sdk.d.ts:33-34` |
|
|
271
273
|
| `dynamicExtract` | property | `FlowActionSpecs` | `dist/nodes/document/flow/spec.d.ts:60-63` |
|
|
@@ -289,12 +291,12 @@ not find it either.
|
|
|
289
291
|
| `entity` | property | `DataServiceOpts` | `dist/bpmn/bpmn-sdk.d.ts:1090-1091` |
|
|
290
292
|
| `entry` | property | `BuiltStage` | `dist/case/case-sdk.d.ts:528` |
|
|
291
293
|
| `entry` | property | `BuiltTask` | `dist/case/case-sdk.d.ts:520` |
|
|
292
|
-
| `entryPoint` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:
|
|
294
|
+
| `entryPoint` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1308-1358` |
|
|
293
295
|
| `entryPointId` | property | `ProcessMetadata` | `dist/bpmn/bpmn-sdk.d.ts:534-539` |
|
|
294
|
-
| `entryPoints` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:
|
|
296
|
+
| `entryPoints` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:740-741` |
|
|
295
297
|
| `entryWhen` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1004-1011` |
|
|
296
298
|
| `entryWhen` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:947-956` |
|
|
297
|
-
| `err` | method | `StepList` | `dist/flow-sdk.d.ts:
|
|
299
|
+
| `err` | method | `StepList` | `dist/flow-sdk.d.ts:758-783` |
|
|
298
300
|
| `error` | property | `BoundaryOpts` | `dist/bpmn/bpmn-sdk.d.ts:750-754` |
|
|
299
301
|
| `error` | property | `EndOpts` | `dist/bpmn/bpmn-sdk.d.ts:696-706` |
|
|
300
302
|
| `error` | property | `EventSubProcessOpts` | `dist/bpmn/bpmn-sdk.d.ts:1842-1847` |
|
|
@@ -459,7 +461,7 @@ not find it either.
|
|
|
459
461
|
| `inclusiveGateway` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2266-2273` |
|
|
460
462
|
| `inlineAgent` | property | `FlowActionSpecs` | `dist/core/actions.d.ts:1491-1494` |
|
|
461
463
|
| `input` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1160-1185` |
|
|
462
|
-
| `input` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:
|
|
464
|
+
| `input` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1474-1486` |
|
|
463
465
|
| `input` | property | `HumanTaskOpts` | `dist/bpmn/bpmn-sdk.d.ts:1355-1356` |
|
|
464
466
|
| `input` | property | `OrchestratorOpts` | `dist/bpmn/bpmn-sdk.d.ts:1241-1242` |
|
|
465
467
|
| `input` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3068-3076` |
|
|
@@ -532,7 +534,7 @@ not find it either.
|
|
|
532
534
|
| `kind` | property | `SubflowSpec` | `dist/flow-sdk.d.ts:47` |
|
|
533
535
|
| `kind` | property | `WhenExpression` | `dist/case/case-sdk.d.ts:99-100` |
|
|
534
536
|
| `kValue` | property | `AgentMemoryRef` | `dist/core/actions.d.ts:1194-1195` |
|
|
535
|
-
| `label` | method | `ArmBuilder` | `dist/flow-sdk.d.ts:
|
|
537
|
+
| `label` | method | `ArmBuilder` | `dist/flow-sdk.d.ts:1206-1215` |
|
|
536
538
|
| `label` | property | `AskedField` | `dist/core/actions.d.ts:83-84` |
|
|
537
539
|
| `label` | property | `BuiltStage` | `dist/case/case-sdk.d.ts:523` |
|
|
538
540
|
| `label` | property | `InOutField` | `dist/core/actions.d.ts:99-100` |
|
|
@@ -546,7 +548,7 @@ not find it either.
|
|
|
546
548
|
| `layout` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:646-647` |
|
|
547
549
|
| `layout` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:730-731` |
|
|
548
550
|
| `layout` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1139-1159` |
|
|
549
|
-
| `layout` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:
|
|
551
|
+
| `layout` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1250-1260` |
|
|
550
552
|
| `limit` | property | `DataFabricReadInputs` | `dist/nodes/data-fabric/flow/spec.d.ts:95-100` |
|
|
551
553
|
| `limit` | property | `DoWhileOptions` | `dist/flow-sdk.d.ts:479-480` |
|
|
552
554
|
| `literal` | property | `Expr` | `dist/core/expr.d.ts:18` |
|
|
@@ -556,7 +558,7 @@ not find it either.
|
|
|
556
558
|
| `lookups` | property | `ConnectorMeta` | `dist/core/connectors.d.ts:76-87` |
|
|
557
559
|
| `loop` | property | `ActivityNodeFields` | `dist/bpmn/bpmn-sdk.d.ts:335-336` |
|
|
558
560
|
| `loop` | property | `ActivityOpts` | `dist/bpmn/bpmn-sdk.d.ts:832-833` |
|
|
559
|
-
| `loop` | method | `StepList` | `dist/flow-sdk.d.ts:
|
|
561
|
+
| `loop` | method | `StepList` | `dist/flow-sdk.d.ts:1040-1051` |
|
|
560
562
|
| `managed` | property | `HttpInputsBase` | `dist/nodes/http/flow/spec.d.ts:37-67` |
|
|
561
563
|
| `marksCaseComplete` | property | `BuiltCaseExitCondition` | `dist/case/case-sdk.d.ts:354` |
|
|
562
564
|
| `marksStageComplete` | property | `BuiltExitCondition` | `dist/case/case-sdk.d.ts:321` |
|
|
@@ -645,7 +647,7 @@ not find it either.
|
|
|
645
647
|
| `name` | property | `EventSubProcessOpts` | `dist/bpmn/bpmn-sdk.d.ts:1840-1841` |
|
|
646
648
|
| `name` | property | `EventTriggerOpts` | `dist/case/case-sdk.d.ts:240` |
|
|
647
649
|
| `name` | property | `ExternalTaskOpts` | `dist/bpmn/bpmn-sdk.d.ts:1499-1500` |
|
|
648
|
-
| `name` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:
|
|
650
|
+
| `name` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1234-1241` |
|
|
649
651
|
| `name` | property | `FlowOpts` | `dist/bpmn/bpmn-sdk.d.ts:1637-1638` |
|
|
650
652
|
| `name` | property | `GatewayOpts` | `dist/bpmn/bpmn-sdk.d.ts:760-761` |
|
|
651
653
|
| `name` | property | `HandlerOpts` | `dist/bpmn/bpmn-sdk.d.ts:1735-1736` |
|
|
@@ -707,7 +709,7 @@ not find it either.
|
|
|
707
709
|
| `onError` | method | `ActivityBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3259-3266` |
|
|
708
710
|
| `onError` | method | `ActivityBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3267-3274` |
|
|
709
711
|
| `onError` | method | `ActivityBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3275-3283` |
|
|
710
|
-
| `onError` | method | `StepList` | `dist/flow-sdk.d.ts:
|
|
712
|
+
| `onError` | method | `StepList` | `dist/flow-sdk.d.ts:838-898` |
|
|
711
713
|
| `onMessage` | method | `ActivityBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3302-3310` |
|
|
712
714
|
| `onMessage` | method | `ActivityBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3311-3319` |
|
|
713
715
|
| `onTimer` | method | `ActivityBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3284-3292` |
|
|
@@ -725,7 +727,7 @@ not find it either.
|
|
|
725
727
|
| `outcomes` | property | `EscalationRef` | `dist/core/actions.d.ts:1395-1400` |
|
|
726
728
|
| `outcomes` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:211-225` |
|
|
727
729
|
| `output` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1186-1198` |
|
|
728
|
-
| `output` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:
|
|
730
|
+
| `output` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1487-1522` |
|
|
729
731
|
| `output` | property | `RegistryTypeSpec` | `dist/bpmn/typed-node.d.ts:90` |
|
|
730
732
|
| `output` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3077-3085` |
|
|
731
733
|
| `outputColumns` | property | `BatchTransformInputs` | `dist/nodes/ai-patterns/flow/spec.d.ts:56-60` |
|
|
@@ -761,7 +763,7 @@ not find it either.
|
|
|
761
763
|
| `pageRange` | property | `DynamicExtractInputs` | `dist/nodes/document/flow/spec.d.ts:49-50` |
|
|
762
764
|
| `pageRange` | property | `IxpExtractInputs` | `dist/core/actions.d.ts:326-327` |
|
|
763
765
|
| `parallel` | property | `LoopOptions` | `dist/flow-sdk.d.ts:461-462` |
|
|
764
|
-
| `parallel` | method | `StepList` | `dist/flow-sdk.d.ts:
|
|
766
|
+
| `parallel` | method | `StepList` | `dist/flow-sdk.d.ts:1004-1039` |
|
|
765
767
|
| `parallelGateway` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2256-2265` |
|
|
766
768
|
| `parameters` | property | `ConnectorEventOpts` | `dist/bpmn/bpmn-sdk.d.ts:1479-1480` |
|
|
767
769
|
| `parameters` | property | `HttpOpts` | `dist/bpmn/bpmn-sdk.d.ts:1140-1145` |
|
|
@@ -860,7 +862,7 @@ not find it either.
|
|
|
860
862
|
| `retry` | property | `ActivityOpts` | `dist/bpmn/bpmn-sdk.d.ts:830-831` |
|
|
861
863
|
| `retryable` | property | `ErrorMappingRow` | `dist/bpmn/bpmn-sdk.d.ts:308-309` |
|
|
862
864
|
| `retryCount` | property | `HttpInputsBase` | `dist/nodes/http/flow/spec.d.ts:109-123` |
|
|
863
|
-
| `return` | method | `StepList` | `dist/flow-sdk.d.ts:
|
|
865
|
+
| `return` | method | `StepList` | `dist/flow-sdk.d.ts:1182-1191` |
|
|
864
866
|
| `returnCitations` | property | `SummarizeInputs` | `dist/nodes/ai-patterns/flow/spec.d.ts:34-39` |
|
|
865
867
|
| `returns` | property | `AgentInputs` | `dist/core/actions.d.ts:641-660` |
|
|
866
868
|
| `returns` | property | `ApiWorkflowInputs` | `dist/core/actions.d.ts:429-441` |
|
|
@@ -901,7 +903,7 @@ not find it either.
|
|
|
901
903
|
| `schemaVersion` | method | `BpmnBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3375-3404` |
|
|
902
904
|
| `schemaVersion` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:714-720` |
|
|
903
905
|
| `schemaVersion` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1068-1094` |
|
|
904
|
-
| `schemaVersion` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:
|
|
906
|
+
| `schemaVersion` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1393-1432` |
|
|
905
907
|
| `scope` | property | `EscalationRecipient` | `dist/case/case-sdk.d.ts:121` |
|
|
906
908
|
| `scopes` | property | `GuardrailSelector` | `dist/core/actions.d.ts:701` |
|
|
907
909
|
| `script` | property | `FlowActionSpecs` | `dist/nodes/script/flow/spec.d.ts:47-50` |
|
|
@@ -973,16 +975,16 @@ not find it either.
|
|
|
973
975
|
| `startName` | property | `EventSubProcessOpts` | `dist/bpmn/bpmn-sdk.d.ts:1887-1888` |
|
|
974
976
|
| `startPayload` | property | `EventSubProcessOpts` | `dist/bpmn/bpmn-sdk.d.ts:1889-1890` |
|
|
975
977
|
| `startProcess` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2459-2478` |
|
|
976
|
-
| `step` | method | `StepList` | `dist/flow-sdk.d.ts:
|
|
978
|
+
| `step` | method | `StepList` | `dist/flow-sdk.d.ts:784-794` |
|
|
977
979
|
| `steps` | property | `BuiltEntryPoint` | `dist/flow-sdk.d.ts:705-706` |
|
|
978
980
|
| `steps` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:724` |
|
|
979
|
-
| `steps` | property | `StepList` | `dist/flow-sdk.d.ts:
|
|
980
|
-
| `stepSwitch` | method | `StepList` | `dist/flow-sdk.d.ts:
|
|
981
|
-
| `stepToList` | method | `StepList` | `dist/flow-sdk.d.ts:
|
|
982
|
-
| `stepToRef` | method | `StepList` | `dist/flow-sdk.d.ts:
|
|
983
|
-
| `stepToRef` | method | `StepList` | `dist/flow-sdk.d.ts:
|
|
981
|
+
| `steps` | property | `StepList` | `dist/flow-sdk.d.ts:752` |
|
|
982
|
+
| `stepSwitch` | method | `StepList` | `dist/flow-sdk.d.ts:795-837` |
|
|
983
|
+
| `stepToList` | method | `StepList` | `dist/flow-sdk.d.ts:912-940` |
|
|
984
|
+
| `stepToRef` | method | `StepList` | `dist/flow-sdk.d.ts:1133-1161` |
|
|
985
|
+
| `stepToRef` | method | `StepList` | `dist/flow-sdk.d.ts:1162-1181` |
|
|
984
986
|
| `stickyNotes` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:732-733` |
|
|
985
|
-
| `stickyNotes` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:
|
|
987
|
+
| `stickyNotes` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1261-1286` |
|
|
986
988
|
| `storageBucket` | property | `DocValidationInputs` | `dist/nodes/hitl/flow/spec.d.ts:82-83` |
|
|
987
989
|
| `strategy` | property | `LookupSpec` | `dist/core/lookups.d.ts:33` |
|
|
988
990
|
| `style` | property | `CaseNodeLayout` | `dist/case/case-sdk.d.ts:597-598` |
|
|
@@ -995,7 +997,7 @@ not find it either.
|
|
|
995
997
|
| `subType` | property | `VarSpec` | `dist/flow-sdk.d.ts:84-85` |
|
|
996
998
|
| `summarize` | property | `FlowActionSpecs` | `dist/nodes/ai-patterns/flow/spec.d.ts:66-69` |
|
|
997
999
|
| `summary` | property | `CaseAppConfig` | `dist/case/case-sdk.d.ts:585-586` |
|
|
998
|
-
| `switch` | method | `StepList` | `dist/flow-sdk.d.ts:
|
|
1000
|
+
| `switch` | method | `StepList` | `dist/flow-sdk.d.ts:968-1003` |
|
|
999
1001
|
| `systemPrompt` | property | `ConversationalAgentInputs` | `dist/core/actions.d.ts:134-139` |
|
|
1000
1002
|
| `systemPrompt` | property | `InlineAgentInputs` | `dist/core/actions.d.ts:814-863` |
|
|
1001
1003
|
| `systemPrompt` | property | `VoiceAgentInputs` | `dist/core/actions.d.ts:221-226` |
|
|
@@ -1020,7 +1022,7 @@ not find it either.
|
|
|
1020
1022
|
| `temperature` | property | `InlineAgentInputs` | `dist/core/actions.d.ts:924-925` |
|
|
1021
1023
|
| `temperature` | property | `VoiceSettings` | `dist/core/actions.d.ts:213-214` |
|
|
1022
1024
|
| `terminate` | property | `EndOpts` | `dist/bpmn/bpmn-sdk.d.ts:692-693` |
|
|
1023
|
-
| `terminate` | method | `StepList` | `dist/flow-sdk.d.ts:
|
|
1025
|
+
| `terminate` | method | `StepList` | `dist/flow-sdk.d.ts:1102-1132` |
|
|
1024
1026
|
| `threshold` | property | `ContextIndexRef` | `dist/core/actions.d.ts:1438-1439` |
|
|
1025
1027
|
| `timeCycle` | property | `BuiltTrigger` | `dist/case/case-sdk.d.ts:201-202` |
|
|
1026
1028
|
| `timeout` | property | `HttpInputsBase` | `dist/nodes/http/flow/spec.d.ts:91-108` |
|
|
@@ -1044,11 +1046,11 @@ not find it either.
|
|
|
1044
1046
|
| `trigger` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:725-727` |
|
|
1045
1047
|
| `trigger` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1224-1232` |
|
|
1046
1048
|
| `trigger` | property | `EscalationOpts` | `dist/case/case-sdk.d.ts:128-129` |
|
|
1047
|
-
| `trigger` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:
|
|
1049
|
+
| `trigger` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1287-1307` |
|
|
1048
1050
|
| `trigger` | property | `StartOpts` | `dist/bpmn/bpmn-sdk.d.ts:624-671` |
|
|
1049
1051
|
| `triggeredByEvent` | property | `SubProcessOpts` | `dist/bpmn/bpmn-sdk.d.ts:976-977` |
|
|
1050
|
-
| `triggerId` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:
|
|
1051
|
-
| `triggerId` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:
|
|
1052
|
+
| `triggerId` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:742-748` |
|
|
1053
|
+
| `triggerId` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1359-1378` |
|
|
1052
1054
|
| `triggerOptions` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:728-729` |
|
|
1053
1055
|
| `triggers` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:644-645` |
|
|
1054
1056
|
| `triggers` | property | `CaseLayout` | `dist/case/case-sdk.d.ts:620-621` |
|
|
@@ -1104,7 +1106,7 @@ not find it either.
|
|
|
1104
1106
|
| `value` | property | `TypedInputRow` | `dist/bpmn/typed-node.d.ts:205-206` |
|
|
1105
1107
|
| `values` | property | `DataFabricCreateInputs` | `dist/nodes/data-fabric/flow/spec.d.ts:132-137` |
|
|
1106
1108
|
| `var` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1199-1223` |
|
|
1107
|
-
| `var` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:
|
|
1109
|
+
| `var` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1523-1532` |
|
|
1108
1110
|
| `var` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3059-3067` |
|
|
1109
1111
|
| `var` | property | `TaskOutputBinding` | `dist/case/case-sdk.d.ts:494-495` |
|
|
1110
1112
|
| `var` | property | `TypedOutputRow` | `dist/bpmn/typed-node.d.ts:251-252` |
|
|
@@ -1127,7 +1129,7 @@ not find it either.
|
|
|
1127
1129
|
| `version` | property | `ConnectorToolRef` | `dist/core/actions.d.ts:1232-1233` |
|
|
1128
1130
|
| `version` | property | `EventSubscription` | `dist/core/actions.d.ts:2116` |
|
|
1129
1131
|
| `version` | property | `ExternalTaskOpts` | `dist/bpmn/bpmn-sdk.d.ts:1507-1508` |
|
|
1130
|
-
| `version` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:
|
|
1132
|
+
| `version` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1379-1392` |
|
|
1131
1133
|
| `version` | property | `NodeOptions` | `dist/flow-sdk.d.ts:373-380` |
|
|
1132
1134
|
| `version` | property | `TriggerMeta` | `dist/core/connectors.d.ts:126` |
|
|
1133
1135
|
| `version` | property | `TriggerOptions` | `dist/core/actions.d.ts:2073-2074` |
|
package/dist/case/compile-cli.js
CHANGED
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
* Output defaults to the plan file the project in the working directory ships
|
|
11
11
|
* (`caseplan.case` for a project `uip maestro case init` scaffolded), else
|
|
12
12
|
* `caseplan.json`. An `-o` that names a different plan file than the project
|
|
13
|
-
* ships is refused (CASE_OUTPUT_NOT_SHIPPED)
|
|
13
|
+
* ships is refused (CASE_OUTPUT_NOT_SHIPPED), and so is a plan file written into
|
|
14
|
+
* a solution directory above its Case project (CASE_OUTPUT_OUTSIDE_PROJECT).
|
|
14
15
|
*/
|
|
15
16
|
import { reportDiagnostics, reportResult, thrownDiagnostic } from '../cli-result.js';
|
|
16
17
|
import { writeJsonFile } from '../core/json-file.js';
|
|
@@ -67,7 +68,7 @@ export async function run(argv) {
|
|
|
67
68
|
const out = flagValue(argv, '-o') ?? shippedCasePlanName('.') ?? 'caseplan.json';
|
|
68
69
|
const shadow = shadowedOutputDiagnostic(out);
|
|
69
70
|
if (shadow) {
|
|
70
|
-
console.error(` ✗ [${shadow.code}] ${shadow.message}
|
|
71
|
+
console.error(` ✗ [${shadow.code}] ${shadow.message} Fix: ${shadow.suggestion}.`);
|
|
71
72
|
reportDiagnostics([...diags, shadow]);
|
|
72
73
|
console.error('compile: 1 error(s); not emitting.');
|
|
73
74
|
return 1;
|
|
@@ -96,6 +97,9 @@ export async function run(argv) {
|
|
|
96
97
|
* `uip maestro case init` scaffolds `caseplan.case` since uipath-cli#5004.
|
|
97
98
|
*/
|
|
98
99
|
const CASE_PLAN_FILE_NAMES = ['caseplan.case', 'caseplan.json', 'case.stage.json', 'default.stage.json'];
|
|
100
|
+
/** The file that makes a directory a project, and the `ProjectType` a Case project declares in it. */
|
|
101
|
+
const PROJECT_FILE = 'project.uiproj';
|
|
102
|
+
const CASE_PROJECT_TYPE = 'CaseManagement';
|
|
99
103
|
/**
|
|
100
104
|
* The plan file the project in `dir` ships, or undefined when `dir` is not a
|
|
101
105
|
* Case project. Decided as the packager decides: the first plan file present in
|
|
@@ -126,6 +130,11 @@ function shadowedOutputDiagnostic(outPath) {
|
|
|
126
130
|
if (!CASE_PLAN_FILE_NAMES.includes(name.toLowerCase()))
|
|
127
131
|
return undefined;
|
|
128
132
|
const dir = dirname(outPath);
|
|
133
|
+
// First: a plan file already in a solution directory would otherwise make it
|
|
134
|
+
// look like a project that ships that file.
|
|
135
|
+
const outside = outsideProjectDiagnostic(outPath);
|
|
136
|
+
if (outside)
|
|
137
|
+
return outside;
|
|
129
138
|
const shipped = shippedCasePlanName(dir);
|
|
130
139
|
if (!shipped || shipped === name)
|
|
131
140
|
return undefined;
|
|
@@ -138,6 +147,53 @@ function shadowedOutputDiagnostic(outPath) {
|
|
|
138
147
|
suggestion: `compile with -o ${target}`,
|
|
139
148
|
};
|
|
140
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* A plan file in a non-project dir that holds Case projects (a solution dir) is
|
|
152
|
+
* packed by none. A directory that is itself a project, or holds no Case
|
|
153
|
+
* project, is not checked.
|
|
154
|
+
*/
|
|
155
|
+
function outsideProjectDiagnostic(outPath) {
|
|
156
|
+
const dir = dirname(outPath);
|
|
157
|
+
if (existsSync(join(dir, PROJECT_FILE)))
|
|
158
|
+
return undefined;
|
|
159
|
+
const projects = childCaseProjects(dir);
|
|
160
|
+
if (projects.length === 0)
|
|
161
|
+
return undefined;
|
|
162
|
+
const targets = projects.map((p) => join(dir, p, shippedCasePlanName(join(dir, p)) ?? CASE_PLAN_FILE_NAMES[0]));
|
|
163
|
+
return {
|
|
164
|
+
level: 'error',
|
|
165
|
+
code: 'CASE_OUTPUT_OUTSIDE_PROJECT',
|
|
166
|
+
message: `${outPath} is in a solution directory, not a Case project; no project packs it. ` +
|
|
167
|
+
`The Case project${projects.length > 1 ? 's here are' : ' here is'} ${projects.map((p) => join(dir, p)).join(', ')}.`,
|
|
168
|
+
suggestion: projects.length === 1 ? `compile with -o ${targets[0]}` : `compile with -o one of: ${targets.join(', ')}`,
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Subdirectories of `dir` (or links to one) whose `project.uiproj` declares a
|
|
173
|
+
* CaseManagement project.
|
|
174
|
+
*/
|
|
175
|
+
function childCaseProjects(dir) {
|
|
176
|
+
let entries;
|
|
177
|
+
try {
|
|
178
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
return [];
|
|
182
|
+
}
|
|
183
|
+
return entries
|
|
184
|
+
// A link counts: the read below fails for a link to a file.
|
|
185
|
+
.filter((e) => e.isDirectory() || e.isSymbolicLink())
|
|
186
|
+
.map((e) => e.name)
|
|
187
|
+
.filter((name) => {
|
|
188
|
+
try {
|
|
189
|
+
return JSON.parse(readFileSync(join(dir, name, PROJECT_FILE), 'utf8'))?.ProjectType === CASE_PROJECT_TYPE;
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
})
|
|
195
|
+
.sort();
|
|
196
|
+
}
|
|
141
197
|
/** The case file `package-descriptor.json` in `dir` ships, if it names one. */
|
|
142
198
|
function describedCaseFileName(dir) {
|
|
143
199
|
const descriptorPath = join(dir, 'package-descriptor.json');
|
package/dist/check.js
CHANGED
|
@@ -29,7 +29,7 @@ import { ownEntry } from './core/own-entry.js';
|
|
|
29
29
|
import { FLOW_NODE_TYPES } from './flow-node-registry.js';
|
|
30
30
|
import { stepExits } from './flow-step-exits.js';
|
|
31
31
|
import { plainHttpOnErrorMessage } from './nodes/http/flow/family.js';
|
|
32
|
-
import { resolveVersion } from './core/nodes/versioned.js';
|
|
32
|
+
import { resolveVersion, resolveVersionCarried } from './core/nodes/versioned.js';
|
|
33
33
|
import { declaredErrorPortRefusal } from './core/error-port.js';
|
|
34
34
|
export function check(built, opts = {}) {
|
|
35
35
|
let diags = [];
|
|
@@ -275,7 +275,7 @@ function checkFlow(built, ancestors, opts = {}) {
|
|
|
275
275
|
declared.add(s.name); // a step's output is referenceable by name
|
|
276
276
|
}
|
|
277
277
|
if ((s.kind === 'stepToList' || s.kind === 'stepToRef') && s.port === 'error')
|
|
278
|
-
checkOnError(s, prevPortSource, diags, prevPortSource && checkedSteps.get(prevPortSource.name));
|
|
278
|
+
checkOnError(s, prevPortSource, diags, prevPortSource && checkedSteps.get(prevPortSource.name), carriedLookup([built, ...ancestors]));
|
|
279
279
|
if ((s.kind === 'stepToList' || s.kind === 'stepToRef') && s.port.startsWith('branch-')) {
|
|
280
280
|
const want = s.port.slice('branch-'.length);
|
|
281
281
|
const prevSpec = prevAction?.spec;
|
|
@@ -381,7 +381,7 @@ function checkFlow(built, ancestors, opts = {}) {
|
|
|
381
381
|
prevPortSource = s;
|
|
382
382
|
const registered = registeredKind(s.spec);
|
|
383
383
|
if (registered) {
|
|
384
|
-
const { placed, checked } = checkRegisteredStep(registered, s, exprs, errorSource, opts, diags, typeOf, triggerId);
|
|
384
|
+
const { placed, checked } = checkRegisteredStep(registered, s, exprs, errorSource, opts, diags, typeOf, triggerId, carriedLookup([built, ...ancestors]));
|
|
385
385
|
checkedSteps.set(s.name, checked);
|
|
386
386
|
if (placed)
|
|
387
387
|
registeredSteps.set(s.name, checked);
|
|
@@ -3977,6 +3977,11 @@ const LOOP_FIELDS = new Set(['currentItem', 'currentIteration', 'collection', 'o
|
|
|
3977
3977
|
* before the 2.4 default (#868); its own fields are not audited here.
|
|
3978
3978
|
*/
|
|
3979
3979
|
const LOOP_FIELDS_1_0_0 = new Set(['currentItem', 'currentIndex', 'collection', 'output', 'error']);
|
|
3980
|
+
/** The {@link CarriedLookup} over `scopes` — the flow being checked first, then its ancestors. */
|
|
3981
|
+
function carriedLookup(scopes) {
|
|
3982
|
+
const all = scopes.flatMap((b) => b.definitions ?? []);
|
|
3983
|
+
return Object.assign((typeName, version) => all.find((d) => d.nodeType === typeName && d.version === version), { versions: (typeName) => [...new Set(all.filter((d) => d.nodeType === typeName).map((d) => String(d.version)))] });
|
|
3984
|
+
}
|
|
3980
3985
|
/** The registered node type for a spec's kind, or undefined (a custom FlowAction has no kind). */
|
|
3981
3986
|
function registeredKind(spec) {
|
|
3982
3987
|
const kind = spec?.kind;
|
|
@@ -3994,14 +3999,15 @@ function registeredKind(spec) {
|
|
|
3994
3999
|
* which serialize enforces (#942) and the type's tests pin; an author cannot
|
|
3995
4000
|
* cause the gap, so there is no author diagnostic to report.
|
|
3996
4001
|
*/
|
|
3997
|
-
function checkRegisteredStep(entry, s, exprs, errorSource, opts, diags, typeOf, triggerId) {
|
|
4002
|
+
function checkRegisteredStep(entry, s, exprs, errorSource, opts, diags, typeOf, triggerId, carried) {
|
|
3998
4003
|
const spec = s.spec;
|
|
3999
4004
|
/** The step's node-local rules and expressions, as `impl` defines them. */
|
|
4000
|
-
const runRules = (impl) => {
|
|
4005
|
+
const runRules = (impl, version = impl.version, carriedDef) => {
|
|
4001
4006
|
const ctx = {
|
|
4002
4007
|
step: s.name,
|
|
4003
|
-
version
|
|
4004
|
-
|
|
4008
|
+
// At a carried version, the version and definition serialize emits.
|
|
4009
|
+
version,
|
|
4010
|
+
definition: () => carriedDef ?? bundledDefinition(impl.typeName, impl.version),
|
|
4005
4011
|
report: (code, message, suggestion) => diags.push(catalogued(entry, s.name, code, message, suggestion)),
|
|
4006
4012
|
declaredRef: (js) => {
|
|
4007
4013
|
const name = declaredRefName(js, triggerId);
|
|
@@ -4024,8 +4030,14 @@ function checkRegisteredStep(entry, s, exprs, errorSource, opts, diags, typeOf,
|
|
|
4024
4030
|
return ctx;
|
|
4025
4031
|
};
|
|
4026
4032
|
let impl;
|
|
4033
|
+
let version;
|
|
4034
|
+
let carriedDef;
|
|
4027
4035
|
try {
|
|
4028
|
-
|
|
4036
|
+
// A pin the registry lacks but the flow carries resolves (#1128), as in serialize.
|
|
4037
|
+
const resolved = resolveVersionCarried(entry.type, spec, s.options?.version, `step "${s.name}"`, carried);
|
|
4038
|
+
impl = resolved.impl;
|
|
4039
|
+
version = resolved.version;
|
|
4040
|
+
carriedDef = resolved.carried;
|
|
4029
4041
|
}
|
|
4030
4042
|
catch (e) {
|
|
4031
4043
|
// A select() that picks an unregistered version is the node type's bug, not the author's pin.
|
|
@@ -4043,8 +4055,14 @@ function checkRegisteredStep(entry, s, exprs, errorSource, opts, diags, typeOf,
|
|
|
4043
4055
|
checked: { entry, impl: fallback, spec, placement: { step: s.name, kind: fallback.kind, spec, version: fallback.version }, ctx: fallbackCtx },
|
|
4044
4056
|
};
|
|
4045
4057
|
}
|
|
4046
|
-
const ctx = runRules(impl);
|
|
4047
|
-
return {
|
|
4058
|
+
const ctx = runRules(impl, version, carriedDef);
|
|
4059
|
+
return {
|
|
4060
|
+
placed: true,
|
|
4061
|
+
checked: {
|
|
4062
|
+
entry, impl, spec, placement: { step: s.name, kind: impl.kind, spec, version }, ctx,
|
|
4063
|
+
...(carriedDef !== undefined ? { carried: carriedDef } : {}),
|
|
4064
|
+
},
|
|
4065
|
+
};
|
|
4048
4066
|
}
|
|
4049
4067
|
/** Every non-literal Expr reachable in `value`, as expressions to check. */
|
|
4050
4068
|
function pushDeepExprs(value, step, errorSource, out) {
|
|
@@ -4171,7 +4189,7 @@ const ERROR_ENVELOPE_FIELDS = ['code', 'message', 'detail', 'category', 'status'
|
|
|
4171
4189
|
*/
|
|
4172
4190
|
function checkOnError(_handler, step, diags,
|
|
4173
4191
|
/** The step's registry record, when its kind is registered and its version resolved. */
|
|
4174
|
-
placed) {
|
|
4192
|
+
placed, carried) {
|
|
4175
4193
|
// The builder refuses a handler with no eligible step before it, so a missing
|
|
4176
4194
|
// source here means a hand-built `BuiltFlow`; there is nothing to say about it.
|
|
4177
4195
|
if (!step)
|
|
@@ -4243,7 +4261,7 @@ placed) {
|
|
|
4243
4261
|
}
|
|
4244
4262
|
}
|
|
4245
4263
|
else {
|
|
4246
|
-
const def = bundledDefinition(impl.typeName, impl.version);
|
|
4264
|
+
const def = placed.carried ?? bundledDefinition(impl.typeName, impl.version);
|
|
4247
4265
|
if (def !== undefined && !definitionHasErrorPort(def)) {
|
|
4248
4266
|
diags.push({ level: 'error', code: 'ONERROR_NO_ERROR_PORT', message: typedNoErrorPortMessage(step.name, impl.kind, def), step: step.name });
|
|
4249
4267
|
return;
|
|
@@ -4262,7 +4280,12 @@ placed) {
|
|
|
4262
4280
|
// A version the SDK does not bundle (an inline agent's registry version) has
|
|
4263
4281
|
// no definition here to ask; version resolution reports that, not this check.
|
|
4264
4282
|
const bundledType = bundledActionNodeType(spec);
|
|
4265
|
-
|
|
4283
|
+
// A version the flow CARRIES (`.definitions()`, #1128) answers the same way
|
|
4284
|
+
// a bundled one does: it is the definition serialize will emit.
|
|
4285
|
+
const pinned = step.options?.version;
|
|
4286
|
+
const bundledDef = bundledType
|
|
4287
|
+
? bundledDefinition(bundledType, actionVersion(spec, pinned)) ?? (pinned !== undefined ? carried?.(bundledType, pinned) : undefined)
|
|
4288
|
+
: undefined;
|
|
4266
4289
|
// A per-tenant family: ask the definition serialize synthesizes for it (#1040).
|
|
4267
4290
|
let perCallDef;
|
|
4268
4291
|
if (!bundledType) {
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node definitions a flow CARRIES — the third source a pinned `{ version }`
|
|
3
|
+
* resolves from, after the SDK's bundle (#1128).
|
|
4
|
+
*
|
|
5
|
+
* Every `.flow` file holds the exact definition of every node it uses, in
|
|
6
|
+
* `definitions[]`. The SDK bundles only the versions it was released with, so
|
|
7
|
+
* a version the registry served later (`node add` writes
|
|
8
|
+
* `uipath.human-in-the-loop.quick-form@1.6`; the SDK ships 1.0 and 1.1) used
|
|
9
|
+
* to be refused, and the source decompile wrote for an untouched product flow
|
|
10
|
+
* did not compile. A carried definition closes that: decompile copies the
|
|
11
|
+
* file's own entry into `.definitions([...])`, and compile resolves the pin
|
|
12
|
+
* against it.
|
|
13
|
+
*
|
|
14
|
+
* A carried definition is an exact copy of a real one, never a way to invent a
|
|
15
|
+
* version. So it is validated the way a `rawNode` snapshot manifest is: it
|
|
16
|
+
* names its own `nodeType` and `version`, and it has the `display.label` every
|
|
17
|
+
* node manifest has.
|
|
18
|
+
*/
|
|
19
|
+
/** A carried definition, by its `<nodeType>@<version>` key. */
|
|
20
|
+
export type CarriedDefinitions = ReadonlyMap<string, Record<string, unknown>>;
|
|
21
|
+
/**
|
|
22
|
+
* Why `manifest` cannot be carried, or `undefined` when it can.
|
|
23
|
+
*
|
|
24
|
+
* For instance `{ nodeType: 'x', version: '1.0' }` is refused for lacking
|
|
25
|
+
* `display.label`.
|
|
26
|
+
*/
|
|
27
|
+
export declare function carriedDefinitionRefusal(manifest: unknown, where: string): string | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Index `manifests` by `<nodeType>@<version>`. Throws on an invalid manifest,
|
|
30
|
+
* or on two different manifests for one pair (which one compiles would be a
|
|
31
|
+
* guess).
|
|
32
|
+
*/
|
|
33
|
+
export declare function indexCarriedDefinitions(manifests: readonly unknown[], where: string, into?: Map<string, Record<string, unknown>>): Map<string, Record<string, unknown>>;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node definitions a flow CARRIES — the third source a pinned `{ version }`
|
|
3
|
+
* resolves from, after the SDK's bundle (#1128).
|
|
4
|
+
*
|
|
5
|
+
* Every `.flow` file holds the exact definition of every node it uses, in
|
|
6
|
+
* `definitions[]`. The SDK bundles only the versions it was released with, so
|
|
7
|
+
* a version the registry served later (`node add` writes
|
|
8
|
+
* `uipath.human-in-the-loop.quick-form@1.6`; the SDK ships 1.0 and 1.1) used
|
|
9
|
+
* to be refused, and the source decompile wrote for an untouched product flow
|
|
10
|
+
* did not compile. A carried definition closes that: decompile copies the
|
|
11
|
+
* file's own entry into `.definitions([...])`, and compile resolves the pin
|
|
12
|
+
* against it.
|
|
13
|
+
*
|
|
14
|
+
* A carried definition is an exact copy of a real one, never a way to invent a
|
|
15
|
+
* version. So it is validated the way a `rawNode` snapshot manifest is: it
|
|
16
|
+
* names its own `nodeType` and `version`, and it has the `display.label` every
|
|
17
|
+
* node manifest has.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Why `manifest` cannot be carried, or `undefined` when it can.
|
|
21
|
+
*
|
|
22
|
+
* For instance `{ nodeType: 'x', version: '1.0' }` is refused for lacking
|
|
23
|
+
* `display.label`.
|
|
24
|
+
*/
|
|
25
|
+
export function carriedDefinitionRefusal(manifest, where) {
|
|
26
|
+
if (!manifest || typeof manifest !== 'object' || Array.isArray(manifest)) {
|
|
27
|
+
return `${where}: a carried definition must be a node manifest object.`;
|
|
28
|
+
}
|
|
29
|
+
const m = manifest;
|
|
30
|
+
if (typeof m.nodeType !== 'string' || !m.nodeType || typeof m.version !== 'string' || !m.version) {
|
|
31
|
+
return `${where}: a carried definition must name its exact nodeType and version.`;
|
|
32
|
+
}
|
|
33
|
+
if (typeof m.display?.label !== 'string' || !m.display.label) {
|
|
34
|
+
return `${where}: the carried definition ${m.nodeType}@${m.version} lacks display.label — not a valid node manifest.`;
|
|
35
|
+
}
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Index `manifests` by `<nodeType>@<version>`. Throws on an invalid manifest,
|
|
40
|
+
* or on two different manifests for one pair (which one compiles would be a
|
|
41
|
+
* guess).
|
|
42
|
+
*/
|
|
43
|
+
export function indexCarriedDefinitions(manifests, where, into = new Map()) {
|
|
44
|
+
for (const m of manifests) {
|
|
45
|
+
const refusal = carriedDefinitionRefusal(m, where);
|
|
46
|
+
if (refusal)
|
|
47
|
+
throw new Error(refusal);
|
|
48
|
+
const def = m;
|
|
49
|
+
const key = `${def.nodeType}@${def.version}`;
|
|
50
|
+
const prior = into.get(key);
|
|
51
|
+
if (prior !== undefined && stableJson(prior) !== stableJson(def)) {
|
|
52
|
+
throw new Error(`${where}: two different carried definitions for ${key}. Keep the one the file holds.`);
|
|
53
|
+
}
|
|
54
|
+
into.set(key, def);
|
|
55
|
+
}
|
|
56
|
+
return into;
|
|
57
|
+
}
|
|
58
|
+
/** `JSON.stringify` with object keys sorted, so two copies of one manifest compare equal whatever their key order. */
|
|
59
|
+
function stableJson(value) {
|
|
60
|
+
return JSON.stringify(value, (_key, v) => (v && typeof v === 'object' && !Array.isArray(v)
|
|
61
|
+
? Object.fromEntries(Object.keys(v).sort().map((k) => [k, v[k]]))
|
|
62
|
+
: v));
|
|
63
|
+
}
|