@uipath/maestro-builder-sdk 6.54.0 → 6.55.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 CHANGED
@@ -300,10 +300,10 @@ could hand you spans for a version you do not have.
300
300
  | `CaseAppConfig` | interface | `dist/case/case-sdk.d.ts:695-701` | Supporting types | Typed configuration for the generated Case App. |
301
301
  | `CaseAppDetailValue` | type | `dist/case/case-sdk.d.ts:684-685` | Supporting types | A value displayed in one Case App section. |
302
302
  | `CaseAppSection` | interface | `dist/case/case-sdk.d.ts:686-694` | Supporting types | One summary section in the generated Case App. |
303
- | `CaseBuilder` | class | `dist/case/case-sdk.d.ts:1265-1523` | Builders | 18 member(s) |
303
+ | `CaseBuilder` | class | `dist/case/case-sdk.d.ts:1270-1528` | Builders | 18 member(s) |
304
304
  | `CaseLayout` | interface | `dist/case/case-sdk.d.ts:723-734` | Supporting types | Optional Case designer layout, keyed by author-level stage and trigger names. |
305
305
  | `CaseNodeLayout` | interface | `dist/case/case-sdk.d.ts:702-722` | Supporting types | Designer-only fields the shipped Case transformer moves into `layout.nodes[id]`. |
306
- | `casePlan` | function | `dist/case/case-sdk.d.ts:1524-1530` | Case authoring | Start building a case plan with the given id. |
306
+ | `casePlan` | function | `dist/case/case-sdk.d.ts:1529-1535` | Case authoring | Start building a case plan with the given id. |
307
307
  | `CaseRule` | interface | `dist/case/case-sdk.d.ts:86-89` | Supporting types | A single DNF rule. |
308
308
  | `CaseRuleGrid` | type | `dist/case/case-sdk.d.ts:121-122` | Supporting types | One rule, one AND-group, or a complete OR-of-AND condition grid. |
309
309
  | `CaseRuleInput` | type | `dist/case/case-sdk.d.ts:119-120` | Supporting types | A concrete rule or a pure expression gate resolved by its receiving slot. |
@@ -342,9 +342,9 @@ could hand you spans for a version you do not have.
342
342
  | `SelectNextStageSpec` | interface | `dist/case/case-sdk.d.ts:326-344` | Supporting types | Data Fabric entity used by the Case runtime to deliver a person's next-stage selection. |
343
343
  | `SlaOpts` | interface | `dist/case/case-sdk.d.ts:174-193` | Option shapes | 5 field(s) |
344
344
  | `SlaUnit` | type | `dist/case/case-sdk.d.ts:123-124` | Supporting types | SLA deadline unit. |
345
- | `StageBuilder` | class | `dist/case/case-sdk.d.ts:1187-1264` | Builders | 6 member(s) |
345
+ | `StageBuilder` | class | `dist/case/case-sdk.d.ts:1192-1269` | Builders | 6 member(s) |
346
346
  | `StageExitType` | type | `dist/case/case-sdk.d.ts:325` | Supporting types | |
347
- | `TaskBuilder` | class | `dist/case/case-sdk.d.ts:837-1186` | Builders | 25 member(s) |
347
+ | `TaskBuilder` | class | `dist/case/case-sdk.d.ts:837-1191` | Builders | 25 member(s) |
348
348
  | `TaskInputBinding` | interface | `dist/case/case-sdk.d.ts:583-590` | Supporting types | A task input binding: a resource input parameter set to a literal or a `=`-expression. |
349
349
  | `TaskKind` | type | `dist/case/case-sdk.d.ts:383` | Supporting types | |
350
350
  | `TaskOutputBinding` | interface | `dist/case/case-sdk.d.ts:591-608` | Supporting types | A task output extraction: bind a field of the task's result (`source`) into a case variable (`var`) that later… |
@@ -59,7 +59,7 @@ not find it either.
59
59
  | `aliases` | property | `LookupSpec` | `dist/core/lookups.d.ts:31-32` |
60
60
  | `allErrors` | property | `RetrySpec` | `dist/bpmn/bpmn-sdk.d.ts:829-830` |
61
61
  | `allowAdhocOptionalStageTasks` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:773-774` |
62
- | `allowAdhocTasks` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1368-1375` |
62
+ | `allowAdhocTasks` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1373-1380` |
63
63
  | `apiWorkflow` | property | `FlowActionSpecs` | `dist/nodes/process/flow/spec.d.ts:344-347` |
64
64
  | `apiWorkflow` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:903-912` |
65
65
  | `app` | property | `EscalationRef` | `dist/core/actions.d.ts:729-756` |
@@ -104,9 +104,9 @@ not find it either.
104
104
  | `breakEnabled` | property | `DoWhileOptions` | `dist/flow-sdk.d.ts:554-555` |
105
105
  | `breakEnabled` | property | `LoopOptions` | `dist/flow-sdk.d.ts:541-545` |
106
106
  | `build` | method | `BpmnBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3586-3591` |
107
- | `build` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1517-1522` |
107
+ | `build` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1522-1527` |
108
108
  | `build` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1761-1767` |
109
- | `businessEvent` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1506-1516` |
109
+ | `businessEvent` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1511-1521` |
110
110
  | `businessEvent` | property | `RuleOpts` | `dist/case/case-sdk.d.ts:75-82` |
111
111
  | `businessEvents` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:779-780` |
112
112
  | `businessRule` | property | `BuiltTask` | `dist/case/case-sdk.d.ts:615-616` |
@@ -118,7 +118,7 @@ not find it either.
118
118
  | `callContext` | property | `EndCallInputs` | `dist/nodes/agent/flow/spec.d.ts:98-103` |
119
119
  | `callContext` | property | `VoiceAgentInputs` | `dist/nodes/agent/flow/spec.d.ts:142-147` |
120
120
  | `cancelActivity` | property | `BoundaryOpts` | `dist/bpmn/bpmn-sdk.d.ts:770-771` |
121
- | `caseApp` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1347-1367` |
121
+ | `caseApp` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1352-1372` |
122
122
  | `caseAppConfig` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:772` |
123
123
  | `caseAppEnabled` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:771` |
124
124
  | `caseExit` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:777` |
@@ -137,7 +137,7 @@ not find it either.
137
137
  | `collection` | property | `TransformInputs` | `dist/nodes/transform/flow/spec.d.ts:85-95` |
138
138
  | `color` | property | `StickyNote` | `dist/flow-sdk.d.ts:796-797` |
139
139
  | `colSpan` | property | `FormFieldSettings` | `dist/core/actions.d.ts:185-186` |
140
- | `completeWhen` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1486-1496` |
140
+ | `completeWhen` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1491-1501` |
141
141
  | `completion` | property | `LoopSpec` | `dist/bpmn/bpmn-sdk.d.ts:85-86` |
142
142
  | `completionCondition` | property | `LoopOptions` | `dist/flow-sdk.d.ts:536-540` |
143
143
  | `condition` | property | `BpmnFlow` | `dist/bpmn/bpmn-sdk.d.ts:360-361` |
@@ -233,7 +233,7 @@ not find it either.
233
233
  | `description` | property | `BuiltTask` | `dist/case/case-sdk.d.ts:626` |
234
234
  | `description` | property | `BuiltTrigger` | `dist/case/case-sdk.d.ts:208` |
235
235
  | `description` | property | `BusinessEventOpts` | `dist/case/case-sdk.d.ts:737-738` |
236
- | `description` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1332-1338` |
236
+ | `description` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1337-1343` |
237
237
  | `description` | property | `ClientSideToolRef` | `dist/core/actions.d.ts:501-502` |
238
238
  | `description` | property | `ConnectorToolRef` | `dist/core/actions.d.ts:602-606` |
239
239
  | `description` | property | `CustomGuardrail` | `dist/core/actions.d.ts:344` |
@@ -250,7 +250,7 @@ not find it either.
250
250
  | `description` | property | `ProcessToolRef` | `dist/core/actions.d.ts:655-660` |
251
251
  | `description` | property | `RemoteA2aToolRef` | `dist/core/actions.d.ts:484` |
252
252
  | `description` | property | `ResolvedEventTriggerOpts` | `dist/case/case-sdk.d.ts:294-295` |
253
- | `description` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1197-1203` |
253
+ | `description` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1202-1208` |
254
254
  | `description` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:1098-1104` |
255
255
  | `description` | property | `TimerTriggerOpts` | `dist/case/case-sdk.d.ts:233` |
256
256
  | `description` | property | `TypedOutputRow` | `dist/bpmn/typed-node.d.ts:322-323` |
@@ -313,8 +313,8 @@ not find it either.
313
313
  | `entryPointId` | property | `ProcessMetadata` | `dist/bpmn/bpmn-sdk.d.ts:544-556` |
314
314
  | `entryPointId` | property | `StartOpts` | `dist/bpmn/bpmn-sdk.d.ts:701-709` |
315
315
  | `entryPoints` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:866-867` |
316
- | `entryWhen` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1237-1244` |
317
- | `entryWhen` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:1174-1183` |
316
+ | `entryWhen` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1242-1249` |
317
+ | `entryWhen` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:1179-1188` |
318
318
  | `err` | method | `StepList` | `dist/flow-sdk.d.ts:890-915` |
319
319
  | `error` | property | `BoundaryOpts` | `dist/bpmn/bpmn-sdk.d.ts:776-780` |
320
320
  | `error` | property | `EndOpts` | `dist/bpmn/bpmn-sdk.d.ts:722-732` |
@@ -343,7 +343,7 @@ not find it either.
343
343
  | `every` | property | `ScheduledInputs` | `dist/flow-sdk.d.ts:152-162` |
344
344
  | `every` | property | `TimerTriggerOpts` | `dist/case/case-sdk.d.ts:223-231` |
345
345
  | `exception` | property | `BuiltStage` | `dist/case/case-sdk.d.ts:636` |
346
- | `exceptionStage` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1478-1485` |
346
+ | `exceptionStage` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1483-1490` |
347
347
  | `exchangeId` | property | `ConversationalAgentSettings` | `dist/nodes/agent/flow/spec.d.ts:31-32` |
348
348
  | `exchangeId` | property | `SendMessageInputs` | `dist/nodes/conversation/flow/spec.d.ts:14-19` |
349
349
  | `exchangeLimit` | property | `ConversationContextInputs` | `dist/nodes/conversation/flow/spec.d.ts:40-43` |
@@ -353,7 +353,7 @@ not find it either.
353
353
  | `exit` | property | `BuiltStage` | `dist/case/case-sdk.d.ts:641` |
354
354
  | `exitToStage` | property | `BuiltExitCondition` | `dist/case/case-sdk.d.ts:355-369` |
355
355
  | `exitToStage` | property | `ExitOpts` | `dist/case/case-sdk.d.ts:816-830` |
356
- | `exitWhen` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1245-1252` |
356
+ | `exitWhen` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1250-1257` |
357
357
  | `exponentialBase` | property | `RetrySpec` | `dist/bpmn/bpmn-sdk.d.ts:827-828` |
358
358
  | `exposeError` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:245-251` |
359
359
  | `expression` | property | `BuiltSla` | `dist/case/case-sdk.d.ts:199-200` |
@@ -479,7 +479,7 @@ not find it either.
479
479
  | `id` | property | `SwitchArm` | `dist/flow-sdk.d.ts:371-377` |
480
480
  | `id` | property | `VarEntry` | `dist/bpmn/bpmn-sdk.d.ts:1018-1019` |
481
481
  | `identifier` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:769` |
482
- | `identifier` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1339-1346` |
482
+ | `identifier` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1344-1351` |
483
483
  | `identifierType` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:770` |
484
484
  | `implied` | property | `BpmnFlow` | `dist/bpmn/bpmn-sdk.d.ts:362-369` |
485
485
  | `impliedFlowIds` | property | `SugarRegistry` | `dist/bpmn/bpmn-sdk.d.ts:1994-1995` |
@@ -487,7 +487,7 @@ not find it either.
487
487
  | `inclusive` | property | `ChooseOpts` | `dist/bpmn/bpmn-sdk.d.ts:1863-1867` |
488
488
  | `inclusiveGateway` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2311-2318` |
489
489
  | `inlineAgent` | property | `FlowActionSpecs` | `dist/nodes/agent/flow/spec.d.ts:443-446` |
490
- | `input` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1397-1422` |
490
+ | `input` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1402-1427` |
491
491
  | `input` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1702-1714` |
492
492
  | `input` | property | `HumanTaskOpts` | `dist/bpmn/bpmn-sdk.d.ts:1387-1388` |
493
493
  | `input` | property | `OrchestratorOpts` | `dist/bpmn/bpmn-sdk.d.ts:1273-1274` |
@@ -579,7 +579,7 @@ not find it either.
579
579
  | `lanes` | property | `BuiltStage` | `dist/case/case-sdk.d.ts:639` |
580
580
  | `layout` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:783-784` |
581
581
  | `layout` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:856-857` |
582
- | `layout` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1376-1396` |
582
+ | `layout` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1381-1401` |
583
583
  | `layout` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1422-1448` |
584
584
  | `legacyCompleted` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:252-284` |
585
585
  | `limit` | property | `DataFabricReadInputs` | `dist/nodes/data-fabric/flow/spec.d.ts:95-100` |
@@ -667,7 +667,7 @@ not find it either.
667
667
  | `name` | property | `BuiltInValidatorGuardrail` | `dist/core/actions.d.ts:356` |
668
668
  | `name` | property | `BuiltTask` | `dist/case/case-sdk.d.ts:610-611` |
669
669
  | `name` | property | `BuiltTrigger` | `dist/case/case-sdk.d.ts:206-207` |
670
- | `name` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1284-1290` |
670
+ | `name` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1289-1295` |
671
671
  | `name` | property | `CaseVarDecl` | `dist/case/case-sdk.d.ts:670` |
672
672
  | `name` | property | `CatchOpts` | `dist/bpmn/bpmn-sdk.d.ts:741-742` |
673
673
  | `name` | property | `ChooseOpts` | `dist/bpmn/bpmn-sdk.d.ts:1861-1862` |
@@ -770,7 +770,7 @@ not find it either.
770
770
  | `outcomePorts` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:230-244` |
771
771
  | `outcomes` | property | `EscalationRef` | `dist/core/actions.d.ts:759-764` |
772
772
  | `outcomes` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:211-225` |
773
- | `output` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1423-1435` |
773
+ | `output` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1428-1440` |
774
774
  | `output` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1715-1750` |
775
775
  | `output` | property | `RegistryTypeSpec` | `dist/bpmn/typed-node.d.ts:97` |
776
776
  | `output` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3151-3159` |
@@ -793,7 +793,7 @@ not find it either.
793
793
  | `outputs` | property | `ReceiveMessageOpts` | `dist/bpmn/bpmn-sdk.d.ts:1432-1447` |
794
794
  | `outputs` | property | `ResolvedEventTriggerOpts` | `dist/case/case-sdk.d.ts:296-300` |
795
795
  | `outputs` | property | `ScriptTaskOpts` | `dist/bpmn/bpmn-sdk.d.ts:920-934` |
796
- | `outputs` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:1125-1173` |
796
+ | `outputs` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:1125-1178` |
797
797
  | `outputVar` | property | `ActivityNodeOpts` | `dist/bpmn/bpmn-sdk.d.ts:1599-1600` |
798
798
  | `outputVar` | property | `ConnectorEventOpts` | `dist/bpmn/bpmn-sdk.d.ts:1513-1514` |
799
799
  | `outputVar` | property | `DataServiceOpts` | `dist/bpmn/bpmn-sdk.d.ts:1138-1139` |
@@ -879,7 +879,7 @@ not find it either.
879
879
  | `required` | property | `InOutField` | `dist/core/actions.d.ts:256-257` |
880
880
  | `required` | property | `RegistryContextField` | `dist/bpmn/typed-node.d.ts:26` |
881
881
  | `required` | property | `RegistryInputField` | `dist/bpmn/typed-node.d.ts:67` |
882
- | `required` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1204-1210` |
882
+ | `required` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1209-1215` |
883
883
  | `required` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:1076-1082` |
884
884
  | `required` | property | `TypedContextRow` | `dist/bpmn/typed-node.d.ts:229-230` |
885
885
  | `required` | property | `VarOpts` | `dist/bpmn/bpmn-sdk.d.ts:1729-1730` |
@@ -952,7 +952,7 @@ not find it either.
952
952
  | `schemas` | property | `BuiltBpmn` | `dist/bpmn/bpmn-sdk.d.ts:519-520` |
953
953
  | `schemaVersion` | method | `BpmnBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3478-3507` |
954
954
  | `schemaVersion` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:840-846` |
955
- | `schemaVersion` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1302-1331` |
955
+ | `schemaVersion` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1307-1336` |
956
956
  | `schemaVersion` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1581-1620` |
957
957
  | `scope` | property | `EscalationRecipient` | `dist/case/case-sdk.d.ts:129` |
958
958
  | `scopes` | property | `GuardrailSelector` | `dist/core/actions.d.ts:290` |
@@ -992,9 +992,9 @@ not find it either.
992
992
  | `skipCondition` | property | `QueueItemOpts` | `dist/bpmn/bpmn-sdk.d.ts:1355-1356` |
993
993
  | `skipCondition` | property | `ReceiveMessageOpts` | `dist/bpmn/bpmn-sdk.d.ts:1430-1431` |
994
994
  | `skipWhen` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:1105-1111` |
995
- | `sla` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1497-1505` |
995
+ | `sla` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1502-1510` |
996
996
  | `sla` | property | `RuleOpts` | `dist/case/case-sdk.d.ts:63-68` |
997
- | `sla` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1253-1261` |
997
+ | `sla` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1258-1266` |
998
998
  | `slaRules` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:778` |
999
999
  | `slaRules` | property | `BuiltStage` | `dist/case/case-sdk.d.ts:642` |
1000
1000
  | `slug` | property | `McpToolRef` | `dist/core/actions.d.ts:462-463` |
@@ -1015,7 +1015,7 @@ not find it either.
1015
1015
  | `sourceTrigger` | property | `CaseVarDecl` | `dist/case/case-sdk.d.ts:676-682` |
1016
1016
  | `spec` | property | `ActivityNodeOpts` | `dist/bpmn/bpmn-sdk.d.ts:1584-1598` |
1017
1017
  | `splitPages` | property | `DocumentClassifyInputs` | `dist/nodes/document/flow/spec.d.ts:16-17` |
1018
- | `stage` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1470-1477` |
1018
+ | `stage` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1475-1482` |
1019
1019
  | `stage` | property | `RuleOpts` | `dist/case/case-sdk.d.ts:29-39` |
1020
1020
  | `stages` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:776` |
1021
1021
  | `stages` | property | `CaseLayout` | `dist/case/case-sdk.d.ts:730-731` |
@@ -1067,7 +1067,7 @@ not find it either.
1067
1067
  | `target` | property | `TypedInputRow` | `dist/bpmn/typed-node.d.ts:248-249` |
1068
1068
  | `target` | property | `TypedOutputRow` | `dist/bpmn/typed-node.d.ts:324-329` |
1069
1069
  | `task` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2338-2346` |
1070
- | `task` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1211-1236` |
1070
+ | `task` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1216-1241` |
1071
1071
  | `tasks` | property | `RuleOpts` | `dist/case/case-sdk.d.ts:40-55` |
1072
1072
  | `taskTitle` | property | `EscalationRef` | `dist/core/actions.d.ts:765-766` |
1073
1073
  | `taxonomy` | property | `DocValidationInputs` | `dist/nodes/hitl/flow/spec.d.ts:91-92` |
@@ -1097,7 +1097,7 @@ not find it either.
1097
1097
  | `transformation` | property | `FieldMapping` | `dist/nodes/transform/flow/spec.d.ts:30-31` |
1098
1098
  | `trigger` | property | `BuiltEntryPoint` | `dist/flow-sdk.d.ts:825-826` |
1099
1099
  | `trigger` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:851-853` |
1100
- | `trigger` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1461-1469` |
1100
+ | `trigger` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1466-1474` |
1101
1101
  | `trigger` | property | `EscalationOpts` | `dist/case/case-sdk.d.ts:136-137` |
1102
1102
  | `trigger` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1475-1495` |
1103
1103
  | `trigger` | property | `StartOpts` | `dist/bpmn/bpmn-sdk.d.ts:641-688` |
@@ -1160,7 +1160,7 @@ not find it either.
1160
1160
  | `value` | property | `TypedContextRow` | `dist/bpmn/typed-node.d.ts:219-220` |
1161
1161
  | `value` | property | `TypedInputRow` | `dist/bpmn/typed-node.d.ts:250-251` |
1162
1162
  | `values` | property | `DataFabricCreateInputs` | `dist/nodes/data-fabric/flow/spec.d.ts:132-137` |
1163
- | `var` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1436-1460` |
1163
+ | `var` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1441-1465` |
1164
1164
  | `var` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1751-1760` |
1165
1165
  | `var` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3133-3141` |
1166
1166
  | `var` | property | `TaskOutputBinding` | `dist/case/case-sdk.d.ts:596-597` |
@@ -1178,7 +1178,7 @@ not find it either.
1178
1178
  | `varSchema` | property | `TypedOutputRow` | `dist/bpmn/typed-node.d.ts:302-316` |
1179
1179
  | `version` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:761-767` |
1180
1180
  | `version` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:839` |
1181
- | `version` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1291-1301` |
1181
+ | `version` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1296-1306` |
1182
1182
  | `version` | property | `ConnectorEventOpts` | `dist/bpmn/bpmn-sdk.d.ts:1467-1468` |
1183
1183
  | `version` | property | `ConnectorMeta` | `dist/core/connectors.d.ts:63` |
1184
1184
  | `version` | property | `ConnectorOpts` | `dist/core/actions.d.ts:14-15` |
@@ -1123,8 +1123,8 @@ declare class TaskBuilder {
1123
1123
  type?: TypeDesc;
1124
1124
  }>): this;
1125
1125
  /**
1126
- * Extract fields of the task's **result** into case variables (reference-mode
1127
- * tasks). Each key is the case-variable name a later task/condition reads as
1126
+ * Extract fields of the task's **result** into case variables (reference-mode,
1127
+ * connector and wait-for-connector tasks). Each key is the case-variable name a later task/condition reads as
1128
1128
  * `=vars.<name>`; each value is the source field expression (e.g. `=response`,
1129
1129
  * `=Error.Message`). Pass `{ source, type }` to set a non-string type. Emits a
1130
1130
  * `data.outputs[]` row plus a root `inputOutputs` companion so the name resolves.
@@ -1150,6 +1150,11 @@ declare class TaskBuilder {
1150
1150
  * later output's (`check` reports `OUTPUT_SELF_REFERENCE` /
1151
1151
  * `OUTPUT_FORWARD_READ`).
1152
1152
  *
1153
+ * On a connector or wait-for-connector task, a field is read from the
1154
+ * operation's (or event's) `response`: an SDD row `app_id -> postAppId` is
1155
+ * `.outputs({ postAppId: '=response.app_id' })`. Each extract is written after
1156
+ * the task's own `response` and `Error` rows.
1157
+ *
1153
1158
  * @example
1154
1159
  * **Extract a result field and assign two custom outputs**
1155
1160
  * ```ts
@@ -474,8 +474,8 @@ class TaskBuilder {
474
474
  return this;
475
475
  }
476
476
  /**
477
- * Extract fields of the task's **result** into case variables (reference-mode
478
- * tasks). Each key is the case-variable name a later task/condition reads as
477
+ * Extract fields of the task's **result** into case variables (reference-mode,
478
+ * connector and wait-for-connector tasks). Each key is the case-variable name a later task/condition reads as
479
479
  * `=vars.<name>`; each value is the source field expression (e.g. `=response`,
480
480
  * `=Error.Message`). Pass `{ source, type }` to set a non-string type. Emits a
481
481
  * `data.outputs[]` row plus a root `inputOutputs` companion so the name resolves.
@@ -501,6 +501,11 @@ class TaskBuilder {
501
501
  * later output's (`check` reports `OUTPUT_SELF_REFERENCE` /
502
502
  * `OUTPUT_FORWARD_READ`).
503
503
  *
504
+ * On a connector or wait-for-connector task, a field is read from the
505
+ * operation's (or event's) `response`: an SDD row `app_id -> postAppId` is
506
+ * `.outputs({ postAppId: '=response.app_id' })`. Each extract is written after
507
+ * the task's own `response` and `Error` rows.
508
+ *
504
509
  * @example
505
510
  * **Extract a result field and assign two custom outputs**
506
511
  * ```ts
@@ -549,13 +554,23 @@ class TaskBuilder {
549
554
  _build() {
550
555
  if (!this._kind)
551
556
  throw new Error(`task "${this._name}" has no kind — call .process()/.agent()/.rpa()/.action()/.connector()/.waitForTimer()/… once.`);
552
- // Task I/O binding is reference-mode only (REF_IO). Connector tasks derive
553
- // their own inputs/outputs from the operation schema.
557
+ // Task input binding is reference-mode only (REF_IO): a connector task takes
558
+ // its inputs in `.connector()` / `.waitForConnector()`. Output extracts also
559
+ // work on connector and wait-for-connector tasks: the task writes its own
560
+ // `response` and `Error` rows, and each extract (`=response.<field>`) is one
561
+ // more row after them, as `uip maestro case sdd convert` and `case splice`
562
+ // write an SDD row `app_id -> postAppId`.
554
563
  const REF_IO = new Set(['process', 'agent', 'rpa', 'api-workflow', 'case-management', 'flow-process', 'function', 'business-rule']);
555
- if ((this._inputs || this._outputs) && !REF_IO.has(this._kind))
556
- throw new Error(`task "${this._name}": .inputs()/.outputs() are only supported on reference-mode tasks (process/agent/rpa/api-workflow/case-management/flow-process/function/business-rule), not "${this._kind}".`);
557
- if (!this._ref && (this._inputs || this._outputs))
564
+ const CONNECTOR_OUTPUTS = new Set(['connector', 'wait-for-connector']);
565
+ if (this._inputs && !REF_IO.has(this._kind))
566
+ throw new Error(`task "${this._name}": .inputs()/.outputs() are only supported on reference-mode tasks (process/agent/rpa/api-workflow/case-management/flow-process/function/business-rule), not "${this._kind}". A connector task takes its inputs in .connector() / .waitForConnector().`);
567
+ if (this._outputs && !REF_IO.has(this._kind) && !CONNECTOR_OUTPUTS.has(this._kind))
568
+ throw new Error(`task "${this._name}": .outputs() is only supported on reference-mode tasks (process/agent/rpa/api-workflow/case-management/flow-process/function/business-rule) and on connector / wait-for-connector tasks, not "${this._kind}".`);
569
+ if (REF_IO.has(this._kind) && !this._ref && (this._inputs || this._outputs))
558
570
  throw new Error(`task "${this._name}": an unresolved reference task cannot declare inputs or outputs.`);
571
+ if (this._kind === 'wait-for-connector' && this._outputs
572
+ && !(this._waitConnector && 'connector' in this._waitConnector && 'event' in this._waitConnector))
573
+ throw new Error(`task "${this._name}": a placeholder wait-for-connector task has no event response to extract outputs from — name the event (.waitForConnector(<trigger descriptor>) or { connector, event }).`);
559
574
  return {
560
575
  name: this._name,
561
576
  kind: this._kind,
@@ -597,6 +597,20 @@ function checkStage(stage, diags, refStage, refPlacement, bindings) {
597
597
  });
598
598
  }
599
599
  }
600
+ // A connector task's result is its `response` (and `Error`): `=app_id`
601
+ // names nothing at run time. The field is `=response.app_id`, the source
602
+ // `uip maestro case sdd convert` writes for the SDD row `app_id -> postAppId`.
603
+ if (t.kind === 'connector' || t.kind === 'wait-for-connector')
604
+ for (const o of t.outputs ?? [])
605
+ // A custom row (`{ assign }`, builder-sdk#1438) sets a variable from an
606
+ // expression, not from the response, so it is not an extract.
607
+ if (!o.custom && !/^=\s*(response|Error)(?=$|[.[])/.test(o.source))
608
+ diags.push({
609
+ level: 'error',
610
+ code: 'CONNECTOR_OUTPUT_SOURCE',
611
+ message: `${t.kind === 'connector' ? 'Connector' : 'Wait-for-connector'} task "${t.name}" output "${o.var}" reads "${o.source}". A connector task's result is its response: write "=response.${o.source.replace(/^=\s*/, '')}" (or "=Error.<field>" for the error).`,
612
+ where: t.name,
613
+ });
600
614
  if (t.kind === 'flow-process' && (!t.ref || !t.ref.name.trim()))
601
615
  diags.push({
602
616
  level: 'error',
@@ -782,6 +782,28 @@ function actionApp(data, refs, task) {
782
782
  function isAuthorableBusinessRule(task) {
783
783
  return task.type === 'business-rule' && task.data?.version === 'v3';
784
784
  }
785
+ /** Task kinds whose own `response` / `Error` rows can be followed by `.outputs()` extracts. */
786
+ const CONNECTOR_EXTRACT_KINDS = new Set(['execute-connector-activity', 'wait-for-connector']);
787
+ /**
788
+ * A connector or wait-for-connector task's extract rows: every output but the
789
+ * `response` and `Error` rows `.connector()` / `.waitForConnector()` re-emit
790
+ * themselves. Dropping them lost every SDD extract on a round trip.
791
+ */
792
+ function connectorExtracts(task) {
793
+ const rows = Array.isArray(task.data?.outputs) ? task.data.outputs : [];
794
+ return rows.filter((row) => !isConnectorOwnOutput(row));
795
+ }
796
+ /**
797
+ * A connector's own `response` / `Error` row, which the builder re-emits
798
+ * itself. Its id and source may carry a plan-wide suffix (`=response2`,
799
+ * builder-sdk#518), so the source is matched with the suffix, the same test
800
+ * the trigger path uses. An exact match made a suffixed own row look like an
801
+ * extract, which `check` then refused (CONNECTOR_OUTPUT_SOURCE).
802
+ */
803
+ function isConnectorOwnOutput(row) {
804
+ return (row.name === 'response' && /^=response\d*$/.test(String(row.source ?? '')))
805
+ || (row.name === 'Error' && /^=Error\d*$/.test(String(row.source ?? '')));
806
+ }
785
807
  /** The two outputs every business-rule task carries, which `.businessRule()` re-emits itself. */
786
808
  function isBusinessRuleOwnOutput(row) {
787
809
  return (row.name === 'output' && row.source === '=result') || (row.name === 'Error' && row.source === '=Error');
@@ -837,6 +859,11 @@ function emitTask(out, depth, task, lane, refs, library) {
837
859
  if (extracts.length)
838
860
  out.line(inner, `.outputs(${ioArg(extracts, 'outputs')})`);
839
861
  }
862
+ if (CONNECTOR_EXTRACT_KINDS.has(String(task.type))) {
863
+ const extracts = connectorExtracts(task);
864
+ if (extracts.length)
865
+ out.line(inner, `.outputs(${ioArg(extracts, 'outputs')})`);
866
+ }
840
867
  if (task.isRequired !== undefined)
841
868
  out.line(inner, task.isRequired ? '.required()' : '.required(false)');
842
869
  if (task.shouldRunOnlyOnce !== undefined)
@@ -921,8 +948,7 @@ function varSpec(entry) {
921
948
  function isResolvedConnectorOutput(row, triggerId, resolved) {
922
949
  if (!resolved || row.elementId !== triggerId)
923
950
  return false;
924
- return (row.name === 'response' && /^=response\d*$/.test(String(row.source ?? '')))
925
- || (row.name === 'Error' && /^=Error\d*$/.test(String(row.source ?? '')));
951
+ return isConnectorOwnOutput(row);
926
952
  }
927
953
  function producedVariableNames(plan) {
928
954
  const produced = new Set();
@@ -955,6 +981,12 @@ function producedVariableNames(plan) {
955
981
  if (row.var && !isBusinessRuleOwnOutput(row))
956
982
  produced.add(row.var);
957
983
  }
984
+ else if (CONNECTOR_EXTRACT_KINDS.has(String(task.type))) {
985
+ // A connector extract registers its case variable on recompile too.
986
+ for (const row of connectorExtracts(task))
987
+ if (row.var)
988
+ produced.add(row.var);
989
+ }
958
990
  }
959
991
  }
960
992
  // An own-name row that carries `originalVar` (`{ id: 'estimatedAge', var:
@@ -1002,7 +1002,7 @@ function taskData(task, resolver, taskId, stageId, ids) {
1002
1002
  // `task.elementId === output.elementId` filter matched none of them and the
1003
1003
  // task's `response` / `Error` never reached a later task (#1419).
1004
1004
  case 'connector':
1005
- return connectorTaskData(task.connector, resolver, `${stageId}-${taskId}`, `Connector task "${task.name}"`);
1005
+ return withOutputExtracts(connectorTaskData(task.connector, resolver, `${stageId}-${taskId}`, `Connector task "${task.name}"`), task, ids, resolver);
1006
1006
  case 'external-agent':
1007
1007
  case 'external-workflow':
1008
1008
  return externalTaskData(task.kind, task.external, resolver, `${stageId}-${taskId}`, `${task.kind === 'external-agent' ? 'External Agent' : 'External Workflow'} task "${task.name}"`);
@@ -1018,9 +1018,33 @@ function taskData(task, resolver, taskId, stageId, ids) {
1018
1018
  case 'wait-for-connector':
1019
1019
  // Floor placeholder (no connector named) = `serviceType` only; naming the
1020
1020
  // connector/operation emits the `context` subscription.
1021
- return waitConnectorBag(task.waitConnector, { alwaysContext: false }, resolver, `${stageId}-${taskId}`, `Wait-for-connector task "${task.name}"`);
1021
+ return withOutputExtracts(waitConnectorBag(task.waitConnector, { alwaysContext: false }, resolver, `${stageId}-${taskId}`, `Wait-for-connector task "${task.name}"`), task, ids, resolver);
1022
1022
  }
1023
1023
  }
1024
+ /**
1025
+ * A connector or wait-for-connector task's `.outputs()` extracts, appended to
1026
+ * the `response` / `Error` rows the task writes itself. Each is an ordinary task
1027
+ * output (`emitTaskOutput`) on the same `elementId` as those rows, e.g. for
1028
+ * `.outputs({ postAppId: '=response.app_id' })`:
1029
+ * { name: 'app_id', type: 'string', id: 'o…', var: 'postAppId', originalVar: 'o…',
1030
+ * value: 'postAppId', source: '=response.app_id', target: '=o…', elementId }
1031
+ * That is the row `uip maestro case sdd convert` writes for the SDD row
1032
+ * `app_id -> postAppId`, and `validate --strict --sdd` matches it on
1033
+ * `source` + `var` (STRICT_SDD_EXTRACT_MISSING).
1034
+ */
1035
+ function withOutputExtracts(data, task, ids, resolver) {
1036
+ if (!task.outputs?.length)
1037
+ return data;
1038
+ const own = Array.isArray(data.outputs) ? data.outputs : [];
1039
+ const elementId = own.find((row) => typeof row.elementId === 'string')?.elementId;
1040
+ if (!elementId)
1041
+ throw new Error(`task "${task.name}": output extracts need the task's resolved response output.`);
1042
+ data.outputs = [
1043
+ ...own,
1044
+ ...task.outputs.map((o, i) => emitTaskOutput(o, elementId, ids, `${elementId}:out:${i}:${o.var}`, resolver)),
1045
+ ];
1046
+ return data;
1047
+ }
1024
1048
  /**
1025
1049
  * The `wait-for-connector` subscription bag (`data` on the task, `uipath` on the
1026
1050
  * rule). Verified against a real `uip maestro case` caseplan: a placeholder
@@ -78,6 +78,30 @@ export declare function readOverlayCorrections(overlayPath: string): Promise<Ove
78
78
  * What was done is reported in one line, and recorded in `.curated-overlay.json`
79
79
  * beside the index, so a second application recognises its own patches: the
80
80
  * record keeps a sha256 of each patched entry and sidecar, and a correction
81
- * whose files no longer match it is patched again.
81
+ * whose files no longer match it is patched again. The record also names the
82
+ * overlay that wrote it ({@link curatedOverlayIdentity}). Under a different
83
+ * overlay, such as a newer SDK pulling a published archive, every correction
84
+ * is patched again, so fields a newer correction lists are added.
82
85
  */
83
86
  export declare function applyCuratedOverlay(libraryPath: string, overlayPath?: string, reporter?: Reporter): Promise<CuratedOverlayResult>;
87
+ /** What {@link checkCuratedOverlay} found, one line per item. */
88
+ export interface CuratedOverlayCheck {
89
+ /** Parts the overlay adds that are absent: the overlay was not applied, or broke. */
90
+ missing: string[];
91
+ /**
92
+ * Corrections whose target the library no longer serves at the correction's
93
+ * path, or serves without the fields the patch adds: the operation moved,
94
+ * was renamed or re-versioned. `registry pull` only warns about these too.
95
+ */
96
+ staleCorrections: string[];
97
+ }
98
+ /**
99
+ * Check `libraryPath` against the curated overlay. Both lists are empty once
100
+ * {@link applyCuratedOverlay} has run on it, unless a correction went stale.
101
+ * Every overlay identity that is not a correction must be indexed at a file
102
+ * that exists, and each side-table must equal the bundled copy.
103
+ *
104
+ * The connector library pipeline runs this on the archive it publishes,
105
+ * because readers that load that archive directly apply no overlay.
106
+ */
107
+ export declare function checkCuratedOverlay(libraryPath: string, overlayPath?: string): Promise<CuratedOverlayCheck>;
@@ -34,6 +34,25 @@ export async function curatedOverlayIdentity(overlayPath = bundledOverlayPath())
34
34
  function entryIdentity(entry) {
35
35
  return `${String(entry.nodeType)}\0${String(entry.version)}`;
36
36
  }
37
+ /**
38
+ * Every path the library resolves each identity to. A `GenericExpanded` or
39
+ * per-object entry shares its nodeType with its siblings, so an identity
40
+ * legitimately has more than one.
41
+ */
42
+ function pathsByIdentity(entries) {
43
+ const resolvedPaths = new Map();
44
+ for (const entry of entries) {
45
+ if (typeof entry.path !== "string")
46
+ continue;
47
+ const identity = entryIdentity(entry);
48
+ const known = resolvedPaths.get(identity);
49
+ if (known === undefined)
50
+ resolvedPaths.set(identity, [entry.path]);
51
+ else
52
+ known.push(entry.path);
53
+ }
54
+ return resolvedPaths;
55
+ }
37
56
  /** The ledger of deliberate patches; read here, never copied into a library. */
38
57
  export const CORRECTIONS_FILE = "overlay-corrections.json";
39
58
  /**
@@ -209,7 +228,10 @@ async function patchCorrection(libraryPath, overlayPath, correction) {
209
228
  * What was done is reported in one line, and recorded in `.curated-overlay.json`
210
229
  * beside the index, so a second application recognises its own patches: the
211
230
  * record keeps a sha256 of each patched entry and sidecar, and a correction
212
- * whose files no longer match it is patched again.
231
+ * whose files no longer match it is patched again. The record also names the
232
+ * overlay that wrote it ({@link curatedOverlayIdentity}). Under a different
233
+ * overlay, such as a newer SDK pulling a published archive, every correction
234
+ * is patched again, so fields a newer correction lists are added.
213
235
  */
214
236
  export async function applyCuratedOverlay(libraryPath, overlayPath = bundledOverlayPath(),
215
237
  // The public materializer API does not forward one, and a warning nobody
@@ -223,24 +245,13 @@ reporter = consoleReporter) {
223
245
  const previous = (await exists(recordPath))
224
246
  ? (await readJson(recordPath))
225
247
  : {};
248
+ const overlayIdentity = await curatedOverlayIdentity(overlayPath);
249
+ const sameOverlay = previous.overlayIdentity === overlayIdentity;
226
250
  const previouslyAdded = new Set(previous.added ?? []);
227
251
  const previousDigests = previous.correctedSha256 ?? {};
228
252
  const digests = {};
229
253
  const entries = destination.entries ?? [];
230
- // Every path the library resolves each identity to. A `GenericExpanded` or
231
- // per-object entry shares its nodeType with its siblings, so an identity
232
- // legitimately has more than one.
233
- const resolvedPaths = new Map();
234
- for (const entry of entries) {
235
- if (typeof entry.path !== "string")
236
- continue;
237
- const identity = entryIdentity(entry);
238
- const known = resolvedPaths.get(identity);
239
- if (known === undefined)
240
- resolvedPaths.set(identity, [entry.path]);
241
- else
242
- known.push(entry.path);
243
- }
254
+ const resolvedPaths = pathsByIdentity(entries);
244
255
  const additions = [];
245
256
  const skipped = new Set();
246
257
  const added = [];
@@ -285,15 +296,18 @@ reporter = consoleReporter) {
285
296
  continue;
286
297
  }
287
298
  // Our own earlier patch, as long as neither file changed since: a refreshed
288
- // entry (an `unzip -o` over the same directory, say) is patched again.
299
+ // entry (an `unzip -o` over the same directory, say) is patched again. So
300
+ // is our patch under another overlay, whose correction may list more; when
301
+ // it lists nothing new, the patch is still ours, not upstream catching up.
289
302
  const digest = await correctionDigest(libraryPath, row.path);
290
- if (previousDigests[row.path] === digest) {
303
+ const ownPatch = previousDigests[row.path] === digest;
304
+ if (ownPatch && sameOverlay) {
291
305
  corrected.push(row.path);
292
306
  digests[row.path] = digest;
293
307
  continue;
294
308
  }
295
309
  const patched = await patchCorrection(libraryPath, overlayPath, correction);
296
- if (patched.added.length === 0) {
310
+ if (patched.added.length === 0 && !ownPatch) {
297
311
  kept.push(row.path);
298
312
  reporter.warn([
299
313
  ` WARN: curated overlay correction no longer needed: ${row.path} (${correction.since})`,
@@ -338,6 +352,7 @@ reporter = consoleReporter) {
338
352
  };
339
353
  writeJsonFile(recordPath, {
340
354
  $comment: "What the SDK's curated overlay did to this library (registry pull). See curated-overlay.ts.",
355
+ overlayIdentity,
341
356
  added: result.added,
342
357
  corrected: result.corrected,
343
358
  correctedSha256: digests,
@@ -350,3 +365,82 @@ reporter = consoleReporter) {
350
365
  `, kept ${result.kept.length + result.skipped.length} published definition(s) unchanged.`);
351
366
  return result;
352
367
  }
368
+ /**
369
+ * Check `libraryPath` against the curated overlay. Both lists are empty once
370
+ * {@link applyCuratedOverlay} has run on it, unless a correction went stale.
371
+ * Every overlay identity that is not a correction must be indexed at a file
372
+ * that exists, and each side-table must equal the bundled copy.
373
+ *
374
+ * The connector library pipeline runs this on the archive it publishes,
375
+ * because readers that load that archive directly apply no overlay.
376
+ */
377
+ export async function checkCuratedOverlay(libraryPath, overlayPath = bundledOverlayPath()) {
378
+ const library = (await readJson(join(libraryPath, "index.json")));
379
+ const overlay = (await readJson(join(overlayPath, "index.json")));
380
+ const corrections = await readOverlayCorrections(overlayPath);
381
+ const correctionPaths = new Set(corrections.map((correction) => correction.path));
382
+ const resolvedPaths = pathsByIdentity(library.entries ?? []);
383
+ const overlayRows = new Map();
384
+ const missing = [];
385
+ const staleCorrections = [];
386
+ for (const row of overlay.entries ?? []) {
387
+ if (typeof row.path !== "string")
388
+ continue;
389
+ overlayRows.set(row.path, row);
390
+ if (correctionPaths.has(row.path))
391
+ continue;
392
+ const name = `${String(row.nodeType)}@${String(row.version)}`;
393
+ const paths = resolvedPaths.get(entryIdentity(row));
394
+ if (paths === undefined) {
395
+ missing.push(`definition ${name}: no index row`);
396
+ continue;
397
+ }
398
+ for (const path of paths) {
399
+ if (!(await exists(join(libraryPath, path))))
400
+ missing.push(`definition ${name}: indexed at ${path}, which is absent`);
401
+ }
402
+ }
403
+ for (const correction of corrections) {
404
+ const where = `correction ${correction.path} (${correction.since})`;
405
+ const paths = resolvedPaths.get(entryIdentity(overlayRows.get(correction.path))) ?? [];
406
+ if (!paths.includes(correction.path)) {
407
+ staleCorrections.push(`${where}: the library has no definition at that path${paths.length ? ` (it indexes ${paths.join(", ")})` : ""}`);
408
+ continue;
409
+ }
410
+ if (!(await exists(join(libraryPath, correction.path)))) {
411
+ staleCorrections.push(`${where}: the library indexes that path, but the file is absent`);
412
+ continue;
413
+ }
414
+ const lacks = [];
415
+ const entry = (await readJson(join(libraryPath, correction.path)));
416
+ const entryFields = fieldNames(entry.inputSchema?.fields);
417
+ for (const field of correction.inputFields ?? []) {
418
+ if (!entryFields.has(field))
419
+ lacks.push(`inputSchema field ${field}`);
420
+ }
421
+ const sidecarPath = join(libraryPath, sidecarOf(correction.path));
422
+ if (await exists(sidecarPath)) {
423
+ const sidecar = sidecarBody(await readJson(sidecarPath)) ?? {};
424
+ const sidecarFields = fieldNames(sidecar.inputDefinition?.fields);
425
+ for (const field of correction.inputFields ?? []) {
426
+ if (!sidecarFields.has(field))
427
+ lacks.push(`sidecar inputDefinition field ${field}`);
428
+ }
429
+ for (const key of correction.sidecarKeys ?? []) {
430
+ if (!(key in sidecar))
431
+ lacks.push(`sidecar key ${key}`);
432
+ }
433
+ }
434
+ if (lacks.length > 0)
435
+ staleCorrections.push(`${where}: the definition lacks ${lacks.join(", ")}`);
436
+ }
437
+ for (const table of SIDE_TABLES) {
438
+ const target = join(libraryPath, table);
439
+ if (!(await exists(target)))
440
+ missing.push(`side-table ${table}: absent`);
441
+ else if (!(await readFile(target)).equals(await readFile(join(overlayPath, table)))) {
442
+ missing.push(`side-table ${table}: differs from the SDK's copy`);
443
+ }
444
+ }
445
+ return { missing, staleCorrections };
446
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uipath/maestro-builder-sdk",
3
- "version": "6.54.0",
3
+ "version": "6.55.0",
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",
@@ -96,5 +96,5 @@
96
96
  "@types/node": "^22.7.0",
97
97
  "esbuild": "^0.28.1"
98
98
  },
99
- "gitref": "f215db445a4e5067bdf31b92c72604c121b52e9e"
99
+ "gitref": "64e3a8da320ffa0947e1a7edddcbabbdb9377e41"
100
100
  }