@uipath/maestro-builder-sdk 6.66.13 → 6.67.1
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 +4 -4
- package/dist/api-members.md +26 -26
- package/dist/case/case-sdk.d.ts +10 -0
- package/dist/case/case-sdk.js +20 -4
- package/dist/case/check.js +5 -7
- package/dist/case/decompile.js +87 -47
- package/dist/case/format-profile.d.ts +8 -0
- package/dist/case/format-profile.js +14 -0
- package/dist/case/serialize.js +30 -12
- package/dist/core/refusals.d.ts +1 -1
- package/dist/core/refusals.js +1 -1
- package/package.json +2 -2
package/dist/api-index.md
CHANGED
|
@@ -312,10 +312,10 @@ could hand you spans for a version you do not have.
|
|
|
312
312
|
| `CaseAppConfig` | interface | `dist/case/case-sdk.d.ts:695-701` | Supporting types | Typed configuration for the generated Case App. |
|
|
313
313
|
| `CaseAppDetailValue` | type | `dist/case/case-sdk.d.ts:684-685` | Supporting types | A value displayed in one Case App section. |
|
|
314
314
|
| `CaseAppSection` | interface | `dist/case/case-sdk.d.ts:686-694` | Supporting types | One summary section in the generated Case App. |
|
|
315
|
-
| `CaseBuilder` | class | `dist/case/case-sdk.d.ts:
|
|
315
|
+
| `CaseBuilder` | class | `dist/case/case-sdk.d.ts:1280-1538` | Builders | 18 member(s) |
|
|
316
316
|
| `CaseLayout` | interface | `dist/case/case-sdk.d.ts:723-734` | Supporting types | Optional Case designer layout, keyed by author-level stage and trigger names. |
|
|
317
317
|
| `CaseNodeLayout` | interface | `dist/case/case-sdk.d.ts:702-722` | Supporting types | Designer-only fields the shipped Case transformer moves into `layout.nodes[id]`. |
|
|
318
|
-
| `casePlan` | function | `dist/case/case-sdk.d.ts:
|
|
318
|
+
| `casePlan` | function | `dist/case/case-sdk.d.ts:1539-1545` | Case authoring | Start building a case plan with the given id. |
|
|
319
319
|
| `CaseRule` | interface | `dist/case/case-sdk.d.ts:86-89` | Supporting types | A single DNF rule. |
|
|
320
320
|
| `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. |
|
|
321
321
|
| `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. |
|
|
@@ -354,9 +354,9 @@ could hand you spans for a version you do not have.
|
|
|
354
354
|
| `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. |
|
|
355
355
|
| `SlaOpts` | interface | `dist/case/case-sdk.d.ts:174-193` | Option shapes | 5 field(s) |
|
|
356
356
|
| `SlaUnit` | type | `dist/case/case-sdk.d.ts:123-124` | Supporting types | SLA deadline unit. |
|
|
357
|
-
| `StageBuilder` | class | `dist/case/case-sdk.d.ts:
|
|
357
|
+
| `StageBuilder` | class | `dist/case/case-sdk.d.ts:1202-1279` | Builders | 6 member(s) |
|
|
358
358
|
| `StageExitType` | type | `dist/case/case-sdk.d.ts:325` | Supporting types | |
|
|
359
|
-
| `TaskBuilder` | class | `dist/case/case-sdk.d.ts:837-
|
|
359
|
+
| `TaskBuilder` | class | `dist/case/case-sdk.d.ts:837-1201` | Builders | 25 member(s) |
|
|
360
360
|
| `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. |
|
|
361
361
|
| `TaskKind` | type | `dist/case/case-sdk.d.ts:383` | Supporting types | |
|
|
362
362
|
| `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… |
|
package/dist/api-members.md
CHANGED
|
@@ -60,7 +60,7 @@ not find it either.
|
|
|
60
60
|
| `aliases` | property | `LookupSpec` | `dist/core/lookups.d.ts:31-32` |
|
|
61
61
|
| `allErrors` | property | `RetrySpec` | `dist/bpmn/bpmn-sdk.d.ts:837-838` |
|
|
62
62
|
| `allowAdhocOptionalStageTasks` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:773-774` |
|
|
63
|
-
| `allowAdhocTasks` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
63
|
+
| `allowAdhocTasks` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1383-1390` |
|
|
64
64
|
| `apiWorkflow` | property | `FlowActionSpecs` | `dist/nodes/process/flow/spec.d.ts:369-372` |
|
|
65
65
|
| `apiWorkflow` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:903-912` |
|
|
66
66
|
| `app` | property | `EscalationRef` | `dist/core/actions.d.ts:729-756` |
|
|
@@ -106,9 +106,9 @@ not find it either.
|
|
|
106
106
|
| `breakEnabled` | property | `DoWhileOptions` | `dist/flow-sdk.d.ts:575-576` |
|
|
107
107
|
| `breakEnabled` | property | `LoopOptions` | `dist/flow-sdk.d.ts:562-566` |
|
|
108
108
|
| `build` | method | `BpmnBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3669-3674` |
|
|
109
|
-
| `build` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
109
|
+
| `build` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1532-1537` |
|
|
110
110
|
| `build` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1782-1788` |
|
|
111
|
-
| `businessEvent` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
111
|
+
| `businessEvent` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1521-1531` |
|
|
112
112
|
| `businessEvent` | property | `RuleOpts` | `dist/case/case-sdk.d.ts:75-82` |
|
|
113
113
|
| `businessEvents` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:779-780` |
|
|
114
114
|
| `businessRule` | property | `BuiltTask` | `dist/case/case-sdk.d.ts:615-616` |
|
|
@@ -120,7 +120,7 @@ not find it either.
|
|
|
120
120
|
| `callContext` | property | `EndCallInputs` | `dist/nodes/agent/flow/spec.d.ts:98-103` |
|
|
121
121
|
| `callContext` | property | `VoiceAgentInputs` | `dist/nodes/agent/flow/spec.d.ts:142-147` |
|
|
122
122
|
| `cancelActivity` | property | `BoundaryOpts` | `dist/bpmn/bpmn-sdk.d.ts:778-779` |
|
|
123
|
-
| `caseApp` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
123
|
+
| `caseApp` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1362-1382` |
|
|
124
124
|
| `caseAppConfig` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:772` |
|
|
125
125
|
| `caseAppEnabled` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:771` |
|
|
126
126
|
| `caseExit` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:777` |
|
|
@@ -139,7 +139,7 @@ not find it either.
|
|
|
139
139
|
| `collection` | property | `TransformInputs` | `dist/nodes/transform/flow/spec.d.ts:85-95` |
|
|
140
140
|
| `color` | property | `StickyNote` | `dist/flow-sdk.d.ts:817-818` |
|
|
141
141
|
| `colSpan` | property | `FormFieldSettings` | `dist/core/actions.d.ts:185-186` |
|
|
142
|
-
| `completeWhen` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
142
|
+
| `completeWhen` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1501-1511` |
|
|
143
143
|
| `completion` | property | `LoopSpec` | `dist/bpmn/bpmn-sdk.d.ts:87-88` |
|
|
144
144
|
| `completionCondition` | property | `LoopOptions` | `dist/flow-sdk.d.ts:557-561` |
|
|
145
145
|
| `condition` | property | `BpmnFlow` | `dist/bpmn/bpmn-sdk.d.ts:368-369` |
|
|
@@ -236,7 +236,7 @@ not find it either.
|
|
|
236
236
|
| `description` | property | `BuiltTask` | `dist/case/case-sdk.d.ts:626` |
|
|
237
237
|
| `description` | property | `BuiltTrigger` | `dist/case/case-sdk.d.ts:208` |
|
|
238
238
|
| `description` | property | `BusinessEventOpts` | `dist/case/case-sdk.d.ts:737-738` |
|
|
239
|
-
| `description` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
239
|
+
| `description` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1347-1353` |
|
|
240
240
|
| `description` | property | `ClientSideToolRef` | `dist/core/actions.d.ts:501-502` |
|
|
241
241
|
| `description` | property | `ConnectorToolRef` | `dist/core/actions.d.ts:602-606` |
|
|
242
242
|
| `description` | property | `CustomGuardrail` | `dist/core/actions.d.ts:344` |
|
|
@@ -253,7 +253,7 @@ not find it either.
|
|
|
253
253
|
| `description` | property | `ProcessToolRef` | `dist/core/actions.d.ts:655-660` |
|
|
254
254
|
| `description` | property | `RemoteA2aToolRef` | `dist/core/actions.d.ts:484` |
|
|
255
255
|
| `description` | property | `ResolvedEventTriggerOpts` | `dist/case/case-sdk.d.ts:294-295` |
|
|
256
|
-
| `description` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:
|
|
256
|
+
| `description` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1212-1218` |
|
|
257
257
|
| `description` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:1098-1104` |
|
|
258
258
|
| `description` | property | `TimerTriggerOpts` | `dist/case/case-sdk.d.ts:233` |
|
|
259
259
|
| `description` | property | `TypedOutputRow` | `dist/bpmn/typed-node.d.ts:322-323` |
|
|
@@ -320,8 +320,8 @@ not find it either.
|
|
|
320
320
|
| `entryPointId` | property | `ProcessMetadata` | `dist/bpmn/bpmn-sdk.d.ts:552-564` |
|
|
321
321
|
| `entryPointId` | property | `StartOpts` | `dist/bpmn/bpmn-sdk.d.ts:709-717` |
|
|
322
322
|
| `entryPoints` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:887-888` |
|
|
323
|
-
| `entryWhen` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:
|
|
324
|
-
| `entryWhen` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:
|
|
323
|
+
| `entryWhen` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1252-1259` |
|
|
324
|
+
| `entryWhen` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:1189-1198` |
|
|
325
325
|
| `err` | method | `StepList` | `dist/flow-sdk.d.ts:911-936` |
|
|
326
326
|
| `error` | property | `BoundaryOpts` | `dist/bpmn/bpmn-sdk.d.ts:784-788` |
|
|
327
327
|
| `error` | property | `EndOpts` | `dist/bpmn/bpmn-sdk.d.ts:730-740` |
|
|
@@ -350,7 +350,7 @@ not find it either.
|
|
|
350
350
|
| `every` | property | `ScheduledInputs` | `dist/flow-sdk.d.ts:152-162` |
|
|
351
351
|
| `every` | property | `TimerTriggerOpts` | `dist/case/case-sdk.d.ts:223-231` |
|
|
352
352
|
| `exception` | property | `BuiltStage` | `dist/case/case-sdk.d.ts:636` |
|
|
353
|
-
| `exceptionStage` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
353
|
+
| `exceptionStage` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1493-1500` |
|
|
354
354
|
| `exchangeId` | property | `ConversationalAgentSettings` | `dist/nodes/agent/flow/spec.d.ts:31-32` |
|
|
355
355
|
| `exchangeId` | property | `SendMessageInputs` | `dist/nodes/conversation/flow/spec.d.ts:14-19` |
|
|
356
356
|
| `exchangeLimit` | property | `ConversationContextInputs` | `dist/nodes/conversation/flow/spec.d.ts:40-43` |
|
|
@@ -360,7 +360,7 @@ not find it either.
|
|
|
360
360
|
| `exit` | property | `BuiltStage` | `dist/case/case-sdk.d.ts:641` |
|
|
361
361
|
| `exitToStage` | property | `BuiltExitCondition` | `dist/case/case-sdk.d.ts:355-369` |
|
|
362
362
|
| `exitToStage` | property | `ExitOpts` | `dist/case/case-sdk.d.ts:816-830` |
|
|
363
|
-
| `exitWhen` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:
|
|
363
|
+
| `exitWhen` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1260-1267` |
|
|
364
364
|
| `exponentialBase` | property | `RetrySpec` | `dist/bpmn/bpmn-sdk.d.ts:835-836` |
|
|
365
365
|
| `exposeError` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:379-385` |
|
|
366
366
|
| `expression` | property | `BuiltSla` | `dist/case/case-sdk.d.ts:199-200` |
|
|
@@ -493,7 +493,7 @@ not find it either.
|
|
|
493
493
|
| `id` | property | `SwitchArm` | `dist/flow-sdk.d.ts:371-377` |
|
|
494
494
|
| `id` | property | `VarEntry` | `dist/bpmn/bpmn-sdk.d.ts:1026-1027` |
|
|
495
495
|
| `identifier` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:769` |
|
|
496
|
-
| `identifier` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
496
|
+
| `identifier` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1354-1361` |
|
|
497
497
|
| `identifierType` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:770` |
|
|
498
498
|
| `implied` | property | `BpmnFlow` | `dist/bpmn/bpmn-sdk.d.ts:370-377` |
|
|
499
499
|
| `impliedFlowIds` | property | `SugarRegistry` | `dist/bpmn/bpmn-sdk.d.ts:2037-2038` |
|
|
@@ -503,7 +503,7 @@ not find it either.
|
|
|
503
503
|
| `inlineAgent` | property | `FlowActionSpecs` | `dist/nodes/agent/flow/spec.d.ts:443-446` |
|
|
504
504
|
| `inOuts` | property | `ActionSchemaFile` | `dist/nodes/hitl/flow/spec.d.ts:287-288` |
|
|
505
505
|
| `inOuts` | property | `PlatformActionSchema` | `dist/nodes/hitl/flow/spec.d.ts:311-312` |
|
|
506
|
-
| `input` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
506
|
+
| `input` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1412-1437` |
|
|
507
507
|
| `input` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1723-1735` |
|
|
508
508
|
| `input` | property | `HumanTaskAppOpts` | `dist/bpmn/bpmn-sdk.d.ts:1415-1416` |
|
|
509
509
|
| `input` | property | `OrchestratorOpts` | `dist/bpmn/bpmn-sdk.d.ts:1281-1282` |
|
|
@@ -604,7 +604,7 @@ not find it either.
|
|
|
604
604
|
| `lanes` | property | `BuiltStage` | `dist/case/case-sdk.d.ts:639` |
|
|
605
605
|
| `layout` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:783-784` |
|
|
606
606
|
| `layout` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:877-878` |
|
|
607
|
-
| `layout` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
607
|
+
| `layout` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1391-1411` |
|
|
608
608
|
| `layout` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1443-1469` |
|
|
609
609
|
| `legacyCompleted` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:386-418` |
|
|
610
610
|
| `limit` | property | `DataFabricReadInputs` | `dist/nodes/data-fabric/flow/spec.d.ts:95-100` |
|
|
@@ -694,7 +694,7 @@ not find it either.
|
|
|
694
694
|
| `name` | property | `BuiltInValidatorGuardrail` | `dist/core/actions.d.ts:356` |
|
|
695
695
|
| `name` | property | `BuiltTask` | `dist/case/case-sdk.d.ts:610-611` |
|
|
696
696
|
| `name` | property | `BuiltTrigger` | `dist/case/case-sdk.d.ts:206-207` |
|
|
697
|
-
| `name` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
697
|
+
| `name` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1299-1305` |
|
|
698
698
|
| `name` | property | `CaseVarDecl` | `dist/case/case-sdk.d.ts:670` |
|
|
699
699
|
| `name` | property | `CatchOpts` | `dist/bpmn/bpmn-sdk.d.ts:749-750` |
|
|
700
700
|
| `name` | property | `ChooseOpts` | `dist/bpmn/bpmn-sdk.d.ts:1904-1905` |
|
|
@@ -801,7 +801,7 @@ not find it either.
|
|
|
801
801
|
| `outcomes` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:345-359` |
|
|
802
802
|
| `outcomes` | property | `HumanTaskForm` | `dist/bpmn/human-task-form.d.ts:87-91` |
|
|
803
803
|
| `outcomes` | property | `PlatformActionSchema` | `dist/nodes/hitl/flow/spec.d.ts:313-314` |
|
|
804
|
-
| `output` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
804
|
+
| `output` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1438-1450` |
|
|
805
805
|
| `output` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1736-1771` |
|
|
806
806
|
| `output` | property | `RegistryTypeSpec` | `dist/bpmn/typed-node.d.ts:97` |
|
|
807
807
|
| `output` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3234-3242` |
|
|
@@ -826,7 +826,7 @@ not find it either.
|
|
|
826
826
|
| `outputs` | property | `ReceiveMessageOpts` | `dist/bpmn/bpmn-sdk.d.ts:1475-1490` |
|
|
827
827
|
| `outputs` | property | `ResolvedEventTriggerOpts` | `dist/case/case-sdk.d.ts:296-300` |
|
|
828
828
|
| `outputs` | property | `ScriptTaskOpts` | `dist/bpmn/bpmn-sdk.d.ts:928-942` |
|
|
829
|
-
| `outputs` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:1125-
|
|
829
|
+
| `outputs` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:1125-1188` |
|
|
830
830
|
| `outputVar` | property | `ActivityNodeOpts` | `dist/bpmn/bpmn-sdk.d.ts:1642-1643` |
|
|
831
831
|
| `outputVar` | property | `ConnectorEventOpts` | `dist/bpmn/bpmn-sdk.d.ts:1556-1557` |
|
|
832
832
|
| `outputVar` | property | `DataServiceOpts` | `dist/bpmn/bpmn-sdk.d.ts:1146-1147` |
|
|
@@ -921,7 +921,7 @@ not find it either.
|
|
|
921
921
|
| `required` | property | `PlatformActionSchemaArg` | `dist/nodes/hitl/flow/spec.d.ts:298-299` |
|
|
922
922
|
| `required` | property | `RegistryContextField` | `dist/bpmn/typed-node.d.ts:26` |
|
|
923
923
|
| `required` | property | `RegistryInputField` | `dist/bpmn/typed-node.d.ts:67` |
|
|
924
|
-
| `required` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:
|
|
924
|
+
| `required` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1219-1225` |
|
|
925
925
|
| `required` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:1076-1082` |
|
|
926
926
|
| `required` | property | `TypedContextRow` | `dist/bpmn/typed-node.d.ts:229-230` |
|
|
927
927
|
| `required` | property | `VarOpts` | `dist/bpmn/bpmn-sdk.d.ts:1772-1773` |
|
|
@@ -995,7 +995,7 @@ not find it either.
|
|
|
995
995
|
| `schemas` | property | `BuiltBpmn` | `dist/bpmn/bpmn-sdk.d.ts:527-528` |
|
|
996
996
|
| `schemaVersion` | method | `BpmnBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3561-3590` |
|
|
997
997
|
| `schemaVersion` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:861-867` |
|
|
998
|
-
| `schemaVersion` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
998
|
+
| `schemaVersion` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1317-1346` |
|
|
999
999
|
| `schemaVersion` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1602-1641` |
|
|
1000
1000
|
| `scope` | property | `EscalationRecipient` | `dist/case/case-sdk.d.ts:129` |
|
|
1001
1001
|
| `scopes` | property | `GuardrailSelector` | `dist/core/actions.d.ts:290` |
|
|
@@ -1035,9 +1035,9 @@ not find it either.
|
|
|
1035
1035
|
| `skipCondition` | property | `QueueItemOpts` | `dist/bpmn/bpmn-sdk.d.ts:1363-1364` |
|
|
1036
1036
|
| `skipCondition` | property | `ReceiveMessageOpts` | `dist/bpmn/bpmn-sdk.d.ts:1473-1474` |
|
|
1037
1037
|
| `skipWhen` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:1105-1111` |
|
|
1038
|
-
| `sla` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
1038
|
+
| `sla` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1512-1520` |
|
|
1039
1039
|
| `sla` | property | `RuleOpts` | `dist/case/case-sdk.d.ts:63-68` |
|
|
1040
|
-
| `sla` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:
|
|
1040
|
+
| `sla` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1268-1276` |
|
|
1041
1041
|
| `slaRules` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:778` |
|
|
1042
1042
|
| `slaRules` | property | `BuiltStage` | `dist/case/case-sdk.d.ts:642` |
|
|
1043
1043
|
| `slug` | property | `McpToolRef` | `dist/core/actions.d.ts:462-463` |
|
|
@@ -1058,7 +1058,7 @@ not find it either.
|
|
|
1058
1058
|
| `sourceTrigger` | property | `CaseVarDecl` | `dist/case/case-sdk.d.ts:676-682` |
|
|
1059
1059
|
| `spec` | property | `ActivityNodeOpts` | `dist/bpmn/bpmn-sdk.d.ts:1627-1641` |
|
|
1060
1060
|
| `splitPages` | property | `DocumentClassifyInputs` | `dist/nodes/document/flow/spec.d.ts:16-17` |
|
|
1061
|
-
| `stage` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
1061
|
+
| `stage` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1485-1492` |
|
|
1062
1062
|
| `stage` | property | `RuleOpts` | `dist/case/case-sdk.d.ts:29-39` |
|
|
1063
1063
|
| `stages` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:776` |
|
|
1064
1064
|
| `stages` | property | `CaseLayout` | `dist/case/case-sdk.d.ts:730-731` |
|
|
@@ -1110,7 +1110,7 @@ not find it either.
|
|
|
1110
1110
|
| `target` | property | `TypedInputRow` | `dist/bpmn/typed-node.d.ts:248-249` |
|
|
1111
1111
|
| `target` | property | `TypedOutputRow` | `dist/bpmn/typed-node.d.ts:324-329` |
|
|
1112
1112
|
| `task` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2389-2397` |
|
|
1113
|
-
| `task` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:
|
|
1113
|
+
| `task` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1226-1251` |
|
|
1114
1114
|
| `tasks` | property | `RuleOpts` | `dist/case/case-sdk.d.ts:40-55` |
|
|
1115
1115
|
| `taskTitle` | property | `EscalationRef` | `dist/core/actions.d.ts:765-766` |
|
|
1116
1116
|
| `taxonomy` | property | `DocValidationInputs` | `dist/nodes/hitl/flow/spec.d.ts:97-98` |
|
|
@@ -1140,7 +1140,7 @@ not find it either.
|
|
|
1140
1140
|
| `transformation` | property | `FieldMapping` | `dist/nodes/transform/flow/spec.d.ts:30-31` |
|
|
1141
1141
|
| `trigger` | property | `BuiltEntryPoint` | `dist/flow-sdk.d.ts:846-847` |
|
|
1142
1142
|
| `trigger` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:872-874` |
|
|
1143
|
-
| `trigger` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
1143
|
+
| `trigger` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1476-1484` |
|
|
1144
1144
|
| `trigger` | property | `EscalationOpts` | `dist/case/case-sdk.d.ts:136-137` |
|
|
1145
1145
|
| `trigger` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1496-1516` |
|
|
1146
1146
|
| `trigger` | property | `StartOpts` | `dist/bpmn/bpmn-sdk.d.ts:649-696` |
|
|
@@ -1211,7 +1211,7 @@ not find it either.
|
|
|
1211
1211
|
| `value` | property | `TypedContextRow` | `dist/bpmn/typed-node.d.ts:219-220` |
|
|
1212
1212
|
| `value` | property | `TypedInputRow` | `dist/bpmn/typed-node.d.ts:250-251` |
|
|
1213
1213
|
| `values` | property | `DataFabricCreateInputs` | `dist/nodes/data-fabric/flow/spec.d.ts:132-137` |
|
|
1214
|
-
| `var` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
1214
|
+
| `var` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1451-1475` |
|
|
1215
1215
|
| `var` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1772-1781` |
|
|
1216
1216
|
| `var` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3216-3224` |
|
|
1217
1217
|
| `var` | property | `TaskOutputBinding` | `dist/case/case-sdk.d.ts:596-597` |
|
|
@@ -1231,7 +1231,7 @@ not find it either.
|
|
|
1231
1231
|
| `varSchema` | property | `TypedOutputRow` | `dist/bpmn/typed-node.d.ts:302-316` |
|
|
1232
1232
|
| `version` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:761-767` |
|
|
1233
1233
|
| `version` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:860` |
|
|
1234
|
-
| `version` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:
|
|
1234
|
+
| `version` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1306-1316` |
|
|
1235
1235
|
| `version` | property | `ConnectorEventOpts` | `dist/bpmn/bpmn-sdk.d.ts:1510-1511` |
|
|
1236
1236
|
| `version` | property | `ConnectorMeta` | `dist/core/connectors.d.ts:63` |
|
|
1237
1237
|
| `version` | property | `ConnectorOpts` | `dist/core/actions.d.ts:14-15` |
|
package/dist/case/case-sdk.d.ts
CHANGED
|
@@ -1150,6 +1150,16 @@ declare class TaskBuilder {
|
|
|
1150
1150
|
* later output's (`check` reports `OUTPUT_SELF_REFERENCE` /
|
|
1151
1151
|
* `OUTPUT_FORWARD_READ`).
|
|
1152
1152
|
*
|
|
1153
|
+
* A custom output reads no result field, so it works on **every** task kind,
|
|
1154
|
+
* not only the ones with a result to extract from. On an action task it is how
|
|
1155
|
+
* a reviewer's decision moves into case state:
|
|
1156
|
+
* `.action({ outputs: [{ name: 'approved', type: 'boolean' }] })` then
|
|
1157
|
+
* `.outputs({ decision: { assign: "=js:vars.approved ? 'yes' : 'no'" } })`.
|
|
1158
|
+
* It is written after the task's own rows (an action task's form fields, a
|
|
1159
|
+
* connector task's `response` / `Error`), so it can read them. A result-field
|
|
1160
|
+
* extract (`source`) is refused on a task kind with no result to read
|
|
1161
|
+
* (`TASK_OUTPUTS_UNSUPPORTED`).
|
|
1162
|
+
*
|
|
1153
1163
|
* On a connector or wait-for-connector task, a field is read from the
|
|
1154
1164
|
* operation's (or event's) `response`: an SDD row `app_id -> postAppId` is
|
|
1155
1165
|
* `.outputs({ postAppId: '=response.app_id' })`. Each extract is written after
|
package/dist/case/case-sdk.js
CHANGED
|
@@ -502,6 +502,16 @@ class TaskBuilder {
|
|
|
502
502
|
* later output's (`check` reports `OUTPUT_SELF_REFERENCE` /
|
|
503
503
|
* `OUTPUT_FORWARD_READ`).
|
|
504
504
|
*
|
|
505
|
+
* A custom output reads no result field, so it works on **every** task kind,
|
|
506
|
+
* not only the ones with a result to extract from. On an action task it is how
|
|
507
|
+
* a reviewer's decision moves into case state:
|
|
508
|
+
* `.action({ outputs: [{ name: 'approved', type: 'boolean' }] })` then
|
|
509
|
+
* `.outputs({ decision: { assign: "=js:vars.approved ? 'yes' : 'no'" } })`.
|
|
510
|
+
* It is written after the task's own rows (an action task's form fields, a
|
|
511
|
+
* connector task's `response` / `Error`), so it can read them. A result-field
|
|
512
|
+
* extract (`source`) is refused on a task kind with no result to read
|
|
513
|
+
* (`TASK_OUTPUTS_UNSUPPORTED`).
|
|
514
|
+
*
|
|
505
515
|
* On a connector or wait-for-connector task, a field is read from the
|
|
506
516
|
* operation's (or event's) `response`: an SDD row `app_id -> postAppId` is
|
|
507
517
|
* `.outputs({ postAppId: '=response.app_id' })`. Each extract is written after
|
|
@@ -564,12 +574,18 @@ class TaskBuilder {
|
|
|
564
574
|
const REF_IO = new Set(['process', 'agent', 'rpa', 'api-workflow', 'case-management', 'flow-process', 'function', 'business-rule']);
|
|
565
575
|
const CONNECTOR_OUTPUTS = new Set(['connector', 'wait-for-connector']);
|
|
566
576
|
if (this._inputs && !REF_IO.has(this._kind))
|
|
567
|
-
throw new CompileRefusal('TASK_INPUTS_UNSUPPORTED', `task "${this._name}": .inputs()
|
|
568
|
-
|
|
569
|
-
|
|
577
|
+
throw new CompileRefusal('TASK_INPUTS_UNSUPPORTED', `task "${this._name}": .inputs() is 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().`);
|
|
578
|
+
// Which rows a kind accepts depends on the row: an extract reads the task's
|
|
579
|
+
// result, so only a kind with one takes it; a custom `{ assign }` row reads
|
|
580
|
+
// none, so every kind takes it (#1451).
|
|
581
|
+
const extract = this._outputs?.find((o) => !o.custom);
|
|
582
|
+
if (extract && !REF_IO.has(this._kind) && !CONNECTOR_OUTPUTS.has(this._kind))
|
|
583
|
+
throw new CompileRefusal('TASK_OUTPUTS_UNSUPPORTED', `task "${this._name}": output "${extract.var}" extracts a result field, which only reference-mode tasks (process/agent/rpa/api-workflow/case-management/flow-process/function/business-rule) and connector / wait-for-connector tasks have, not "${this._kind}". A custom output ({ assign }) works on every task kind.`);
|
|
570
584
|
if (REF_IO.has(this._kind) && !this._ref && (this._inputs || this._outputs))
|
|
571
585
|
throw new CompileRefusal('TASK_IO_UNRESOLVED_REFERENCE', `task "${this._name}": an unresolved reference task cannot declare inputs or outputs.`);
|
|
572
|
-
if (this._kind === '
|
|
586
|
+
if (!this._action && !this._ref && this._kind === 'action' && this._outputs)
|
|
587
|
+
throw new CompileRefusal('TASK_IO_UNRESOLVED_REFERENCE', `task "${this._name}": an unresolved action task cannot declare outputs.`);
|
|
588
|
+
if (this._kind === 'wait-for-connector' && extract
|
|
573
589
|
&& !(this._waitConnector && 'connector' in this._waitConnector && 'event' in this._waitConnector))
|
|
574
590
|
throw new CompileRefusal('TASK_OUTPUTS_PLACEHOLDER_EVENT', `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 }).`);
|
|
575
591
|
return {
|
package/dist/case/check.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { businessEventProblems } from './business-event-shape.js';
|
|
2
2
|
import { ruleShapeProblems } from './rule-options.js';
|
|
3
3
|
import { types } from '../core/expr.js';
|
|
4
|
-
import {
|
|
4
|
+
import { CASE_FORMAT_PROFILE, CASE_SCHEMA_VERSIONS, authoredCaseVersion, caseVersionMismatch } from './format-profile.js';
|
|
5
5
|
import { schemaVersionRefusal } from '../schema-version.js';
|
|
6
6
|
import { caseJsonPreservation, caseJsonPreservationErrors } from './preserve.js';
|
|
7
7
|
import { EQUALS_EXPR_DIALECT, checkBindingLabels, checkConnectorContract, checkConnectorLookups, checkConnectorSchema, } from '../core/connector-checks.js';
|
|
@@ -39,12 +39,10 @@ export function check(built, opts = {}) {
|
|
|
39
39
|
code: 'VERSION_DEPRECATED',
|
|
40
40
|
message: `.version(${JSON.stringify(requestedVersion)}) is deprecated: the Case JSON schema version is declared with .schemaVersion(), which accepts only versions this build can write. This SDK writes ${CASE_FORMAT_PROFILE.writeVersion}.`,
|
|
41
41
|
});
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
message: `.version(${JSON.stringify(requestedVersion)}) does not match the serializer's ${CASE_FORMAT_PROFILE.writeVersion} format profile. A document version is a grammar claim, not an author release value.`,
|
|
47
|
-
});
|
|
42
|
+
// `serialize` refuses it too (`caseVersionMismatch`, one rule, one message).
|
|
43
|
+
const mismatch = caseVersionMismatch(built);
|
|
44
|
+
if (mismatch)
|
|
45
|
+
diags.push({ level: 'error', code: 'VERSION_MISMATCH', message: mismatch });
|
|
48
46
|
}
|
|
49
47
|
// The DECLARED grammar version (`.schemaVersion()`), as opposed to the
|
|
50
48
|
// deprecated `.version()` above. It is already refused at the call, so this
|
package/dist/case/decompile.js
CHANGED
|
@@ -378,6 +378,14 @@ function actionFields(rows) {
|
|
|
378
378
|
['options', row.options !== undefined ? tsLiteral(row.options) : undefined],
|
|
379
379
|
])).join(', ')}]`;
|
|
380
380
|
}
|
|
381
|
+
/**
|
|
382
|
+
* An action task's form outputs: every output row but its custom `{ assign }`
|
|
383
|
+
* ones, which `emitTask` lifts to `.outputs()` (#1451).
|
|
384
|
+
*/
|
|
385
|
+
function actionFormOutputs(task) {
|
|
386
|
+
const rows = Array.isArray(task.data?.outputs) ? task.data.outputs : [];
|
|
387
|
+
return rows.filter((row) => row.custom !== true);
|
|
388
|
+
}
|
|
381
389
|
function bindingName(value, refs) {
|
|
382
390
|
if (typeof value !== 'string' || !value.startsWith('=bindings.'))
|
|
383
391
|
return undefined;
|
|
@@ -730,7 +738,7 @@ function emitTaskKind(task, refs, library) {
|
|
|
730
738
|
['app', actionApp(data, refs, task)],
|
|
731
739
|
['actionCatalogName', data.actionCatalogName !== undefined ? tsLiteral(data.actionCatalogName) : undefined],
|
|
732
740
|
['inputs', actionFields(data.inputs)],
|
|
733
|
-
['outputs', actionFields(
|
|
741
|
+
['outputs', actionFields(actionFormOutputs(task))],
|
|
734
742
|
]);
|
|
735
743
|
return `.action(${spec})`;
|
|
736
744
|
}
|
|
@@ -784,15 +792,6 @@ function isAuthorableBusinessRule(task) {
|
|
|
784
792
|
}
|
|
785
793
|
/** Task kinds whose own `response` / `Error` rows can be followed by `.outputs()` extracts. */
|
|
786
794
|
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
795
|
/**
|
|
797
796
|
* A connector's own `response` / `Error` row, which the builder re-emits
|
|
798
797
|
* itself. Its id and source may carry a plan-wide suffix (`=response2`,
|
|
@@ -801,11 +800,16 @@ function connectorExtracts(task) {
|
|
|
801
800
|
* extract, which `check` then refused (CONNECTOR_OUTPUT_SOURCE).
|
|
802
801
|
*/
|
|
803
802
|
function isConnectorOwnOutput(row) {
|
|
803
|
+
// A custom row is never the task's own, even one named `Error` that assigns `=Error`.
|
|
804
|
+
if (row.custom === true)
|
|
805
|
+
return false;
|
|
804
806
|
return (row.name === 'response' && /^=response\d*$/.test(String(row.source ?? '')))
|
|
805
807
|
|| (row.name === 'Error' && /^=Error\d*$/.test(String(row.source ?? '')));
|
|
806
808
|
}
|
|
807
809
|
/** The two outputs every business-rule task carries, which `.businessRule()` re-emits itself. */
|
|
808
810
|
function isBusinessRuleOwnOutput(row) {
|
|
811
|
+
if (row.custom === true)
|
|
812
|
+
return false;
|
|
809
813
|
return (row.name === 'output' && row.source === '=result') || (row.name === 'Error' && row.source === '=Error');
|
|
810
814
|
}
|
|
811
815
|
function businessRuleCall(task, refs) {
|
|
@@ -844,26 +848,16 @@ function emitTask(out, depth, task, lane, refs, library) {
|
|
|
844
848
|
out.line(depth, `.task(${tsLiteral(task.displayName ?? '')}, t => t`);
|
|
845
849
|
const inner = depth + 1;
|
|
846
850
|
out.line(inner, emitTaskKind(task, refs, library));
|
|
847
|
-
if (ownEntry(TASK_KIND_METHOD, task.type)) {
|
|
848
|
-
const data = task.data ?? {};
|
|
849
|
-
if (Array.isArray(data.inputs) && data.inputs.length)
|
|
850
|
-
out.line(inner, `.inputs(${ioArg(data.inputs, 'inputs')})`);
|
|
851
|
-
if (Array.isArray(data.outputs) && data.outputs.length)
|
|
852
|
-
out.line(inner, `.outputs(${ioArg(data.outputs, 'outputs')})`);
|
|
853
|
-
}
|
|
854
|
-
if (isAuthorableBusinessRule(task)) {
|
|
851
|
+
if (ownEntry(TASK_KIND_METHOD, task.type) || isAuthorableBusinessRule(task)) {
|
|
855
852
|
const data = task.data ?? {};
|
|
856
|
-
const extracts = (Array.isArray(data.outputs) ? data.outputs : []).filter((row) => !isBusinessRuleOwnOutput(row));
|
|
857
853
|
if (Array.isArray(data.inputs) && data.inputs.length)
|
|
858
854
|
out.line(inner, `.inputs(${ioArg(data.inputs, 'inputs')})`);
|
|
859
|
-
if (extracts.length)
|
|
860
|
-
out.line(inner, `.outputs(${ioArg(extracts, 'outputs')})`);
|
|
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
855
|
}
|
|
856
|
+
const outputs = taskOutputRows(task);
|
|
857
|
+
if (outputs)
|
|
858
|
+
refuseUnwrittenOutputs(task, outputs);
|
|
859
|
+
if (outputs?.lifted.length)
|
|
860
|
+
out.line(inner, `.outputs(${ioArg(outputs.lifted, 'outputs')})`);
|
|
867
861
|
if (task.isRequired !== undefined)
|
|
868
862
|
out.line(inner, task.isRequired ? '.required()' : '.required(false)');
|
|
869
863
|
if (task.shouldRunOnlyOnce !== undefined)
|
|
@@ -876,6 +870,63 @@ function emitTask(out, depth, task, lane, refs, library) {
|
|
|
876
870
|
emitEntryWhen(out, inner, condition, refs, false);
|
|
877
871
|
out.line(depth, lane > 0 ? `, ${opts([['lane', String(lane)]])})` : ')');
|
|
878
872
|
}
|
|
873
|
+
/**
|
|
874
|
+
* How a task's `data.outputs` rows come back on recompile: each `lifted` row
|
|
875
|
+
* becomes an entry of its `.outputs()`, and each `rebuilt` row is one its kind
|
|
876
|
+
* call writes itself (a connector's `response` / `Error`, an action's form
|
|
877
|
+
* fields). Undefined for a kind kept as a data literal, whose rows all survive.
|
|
878
|
+
*
|
|
879
|
+
* A row in neither list is not written back; `refuseUnwrittenOutputs` refuses it.
|
|
880
|
+
*/
|
|
881
|
+
function taskOutputRows(task) {
|
|
882
|
+
const rows = Array.isArray(task.data?.outputs) ? task.data.outputs : [];
|
|
883
|
+
const kind = String(task.type);
|
|
884
|
+
const split = (rebuilt) => ({ lifted: rows.filter((row) => !rebuilt(row)), rebuilt: rows.filter(rebuilt) });
|
|
885
|
+
// On a kind with no result to extract from, `.outputs()` takes only custom
|
|
886
|
+
// rows, which read none (#1451).
|
|
887
|
+
const customOnly = (rebuilt) => ({ lifted: rows.filter((row) => row.custom === true), rebuilt });
|
|
888
|
+
let plan;
|
|
889
|
+
if (ownEntry(TASK_KIND_METHOD, kind))
|
|
890
|
+
plan = split(() => false);
|
|
891
|
+
else if (isAuthorableBusinessRule(task))
|
|
892
|
+
plan = split(isBusinessRuleOwnOutput);
|
|
893
|
+
else if (CONNECTOR_EXTRACT_KINDS.has(kind))
|
|
894
|
+
plan = split(isConnectorOwnOutput);
|
|
895
|
+
else if (kind === 'action')
|
|
896
|
+
plan = customOnly(actionFormOutputs(task));
|
|
897
|
+
else if (kind === 'wait-for-timer')
|
|
898
|
+
plan = customOnly([]);
|
|
899
|
+
else if (kind === 'external-agent' || kind === 'external-workflow')
|
|
900
|
+
plan = customOnly(rows.filter(isConnectorOwnOutput));
|
|
901
|
+
else
|
|
902
|
+
return undefined;
|
|
903
|
+
return plan;
|
|
904
|
+
}
|
|
905
|
+
/**
|
|
906
|
+
* Refuse, naming the task and the row, a plan whose output rows a recompile
|
|
907
|
+
* would not write back as they are (`docs/CASE_DECOMPILE_DESIGN.md`, refusal
|
|
908
|
+
* boundary; #1457):
|
|
909
|
+
*
|
|
910
|
+
* - a row in neither `taskOutputRows` list would vanish with no message. For
|
|
911
|
+
* instance a result-field extract `{ var: 'route', source: '=approved' }` on a
|
|
912
|
+
* wait-for-timer task, which has no result to read and no SDK form for it;
|
|
913
|
+
* - a custom row listed before one of the task's own rows (ahead of a
|
|
914
|
+
* connector's `response`) would come back after it. A custom row reads only
|
|
915
|
+
* the rows before it, so its value could change. An extract reads the task's
|
|
916
|
+
* result, so where it is listed does not matter.
|
|
917
|
+
*/
|
|
918
|
+
function refuseUnwrittenOutputs(task, plan) {
|
|
919
|
+
const rows = Array.isArray(task.data?.outputs) ? task.data.outputs : [];
|
|
920
|
+
const kind = String(task.type);
|
|
921
|
+
const owner = `${kind} task "${task.displayName ?? task.id ?? '?'}"`;
|
|
922
|
+
const lost = rows.find((row) => !plan.lifted.includes(row) && !plan.rebuilt.includes(row));
|
|
923
|
+
if (lost)
|
|
924
|
+
throw new Error(`${owner} has output row "${lost.name ?? lost.var ?? '?'}" (source ${JSON.stringify(lost.source ?? null)}), which the SDK cannot write on a ${kind} task: only a custom { assign } output reads no task result. Decompile refuses it rather than drop it on recompile.`);
|
|
925
|
+
const firstCustom = rows.findIndex((row) => row.custom === true && plan.lifted.includes(row));
|
|
926
|
+
const lateOwn = firstCustom < 0 ? undefined : rows.slice(firstCustom).find((row) => plan.rebuilt.includes(row));
|
|
927
|
+
if (lateOwn)
|
|
928
|
+
throw new Error(`${owner} lists custom output "${rows[firstCustom].var ?? rows[firstCustom].name ?? '?'}" before its own row "${lateOwn.name ?? '?'}"; the SDK writes the task's own rows first, so a recompile would move the custom row after it and change what it reads.`);
|
|
929
|
+
}
|
|
879
930
|
function escalationSource(escalation, slaName, index) {
|
|
880
931
|
if (escalation.action?.type !== 'notification')
|
|
881
932
|
throw new Error(`SLA escalation "${escalation.displayName ?? escalation.id ?? index}" has unsupported action "${escalation.action?.type}".`);
|
|
@@ -966,27 +1017,16 @@ function producedVariableNames(plan) {
|
|
|
966
1017
|
continue;
|
|
967
1018
|
for (const lane of node.data?.tasks ?? [])
|
|
968
1019
|
for (const task of lane) {
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
// a reference-task output does; the task's own rows do not.
|
|
980
|
-
for (const row of task.data?.outputs ?? [])
|
|
981
|
-
if (row.var && !isBusinessRuleOwnOutput(row))
|
|
982
|
-
produced.add(row.var);
|
|
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
|
-
}
|
|
1020
|
+
// Every `.outputs()` row registers its case variable on recompile, and
|
|
1021
|
+
// so does an action form output (`{ name, value }`), so an older plan's
|
|
1022
|
+
// root companion for it is not re-declared as a `.var()`. A connector's
|
|
1023
|
+
// or business rule's own rows do not.
|
|
1024
|
+
const rows = taskOutputRows(task);
|
|
1025
|
+
if (!rows)
|
|
1026
|
+
continue;
|
|
1027
|
+
for (const row of [...rows.lifted, ...(task.type === 'action' ? rows.rebuilt : [])])
|
|
1028
|
+
if (row.var)
|
|
1029
|
+
produced.add(row.var);
|
|
990
1030
|
}
|
|
991
1031
|
}
|
|
992
1032
|
// An own-name row that carries `originalVar` (`{ id: 'estimatedAge', var:
|
|
@@ -40,3 +40,11 @@ export declare const CASE_FORMAT_PROFILE: Readonly<CaseFormatProfile>;
|
|
|
40
40
|
export declare const CASE_SCHEMA_VERSIONS: SchemaVersionPolicy;
|
|
41
41
|
export declare function recordAuthoredCaseVersion(built: object, version: string): void;
|
|
42
42
|
export declare function authoredCaseVersion(built: object): string | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* `VERSION_MISMATCH`'s message when a deprecated `.version()` asks for a
|
|
45
|
+
* document version other than {@link CASE_FORMAT_PROFILE}'s `writeVersion`,
|
|
46
|
+
* else `undefined`. The serializer writes only its own grammar, so it cannot
|
|
47
|
+
* honour the request: `serialize` refuses it rather than stamp another
|
|
48
|
+
* version, and `check` reports the same message (#1554).
|
|
49
|
+
*/
|
|
50
|
+
export declare function caseVersionMismatch(built: object): string | undefined;
|
|
@@ -127,3 +127,17 @@ export function recordAuthoredCaseVersion(built, version) {
|
|
|
127
127
|
export function authoredCaseVersion(built) {
|
|
128
128
|
return authoredVersions.get(built);
|
|
129
129
|
}
|
|
130
|
+
/**
|
|
131
|
+
* `VERSION_MISMATCH`'s message when a deprecated `.version()` asks for a
|
|
132
|
+
* document version other than {@link CASE_FORMAT_PROFILE}'s `writeVersion`,
|
|
133
|
+
* else `undefined`. The serializer writes only its own grammar, so it cannot
|
|
134
|
+
* honour the request: `serialize` refuses it rather than stamp another
|
|
135
|
+
* version, and `check` reports the same message (#1554).
|
|
136
|
+
*/
|
|
137
|
+
export function caseVersionMismatch(built) {
|
|
138
|
+
const requested = authoredCaseVersion(built);
|
|
139
|
+
if (requested === undefined || requested === CASE_FORMAT_PROFILE.writeVersion)
|
|
140
|
+
return undefined;
|
|
141
|
+
return `.version(${JSON.stringify(requested)}) does not match the serializer's ${CASE_FORMAT_PROFILE.writeVersion} format profile. `
|
|
142
|
+
+ 'A document version is a grammar claim, not an author release value.';
|
|
143
|
+
}
|
package/dist/case/serialize.js
CHANGED
|
@@ -20,7 +20,7 @@ import { resolveEventWhere } from '../core/lookups.js';
|
|
|
20
20
|
import { resolveCaseSubscription } from './subscription.js';
|
|
21
21
|
import { dedupeConditionNames } from './rule-names.js';
|
|
22
22
|
import { EXTERNAL_TASK_DESCRIPTOR_CONTRACT, EXTERNAL_TASK_HYBRID_UNSUPPORTED, externalDescriptorRefusal, externalHybridRefusal, externalServiceType, isExternalExecutionMode, } from './external.js';
|
|
23
|
-
import { CASE_FORMAT_PROFILE, CASE_SCHEMA_VERSIONS } from './format-profile.js';
|
|
23
|
+
import { CASE_FORMAT_PROFILE, CASE_SCHEMA_VERSIONS, caseVersionMismatch } from './format-profile.js';
|
|
24
24
|
import { isResourceLabelRefusal, resolveResourceRef, resourceIdentity } from './resource-identity.js';
|
|
25
25
|
import { ownEntry } from '../core/own-entry.js';
|
|
26
26
|
import { stableId } from '../core/stable-id.js';
|
|
@@ -90,6 +90,9 @@ function conditionNamer(built) {
|
|
|
90
90
|
};
|
|
91
91
|
}
|
|
92
92
|
export function serialize(built, opts = {}) {
|
|
93
|
+
const versionMismatch = caseVersionMismatch(built);
|
|
94
|
+
if (versionMismatch)
|
|
95
|
+
throw new CompileRefusal('VERSION_MISMATCH', versionMismatch);
|
|
93
96
|
const ids = new IdGen();
|
|
94
97
|
const caseId = ids.caseId(built.id);
|
|
95
98
|
// ── First pass: allocate stage + task ids, build resolution maps ──
|
|
@@ -1258,7 +1261,7 @@ function taskData(task, resolver, taskId, stageId, ids) {
|
|
|
1258
1261
|
if (a.outputs?.length) {
|
|
1259
1262
|
data.outputs = a.outputs.map((field) => emitActionField(field, `${stageId}-${taskId}`, resolver));
|
|
1260
1263
|
}
|
|
1261
|
-
return data;
|
|
1264
|
+
return withCustomOutputs(data, task, resolver);
|
|
1262
1265
|
}
|
|
1263
1266
|
// The io rows carry the task's own `elementId` ("<stageId>-<taskId>"), as
|
|
1264
1267
|
// every other kind's do. They once got the bare task id, so the converter's
|
|
@@ -1268,15 +1271,13 @@ function taskData(task, resolver, taskId, stageId, ids) {
|
|
|
1268
1271
|
return withOutputExtracts(connectorTaskData(task.connector, resolver, `${stageId}-${taskId}`, `Connector task "${task.name}"`), task, ids, resolver);
|
|
1269
1272
|
case 'external-agent':
|
|
1270
1273
|
case 'external-workflow':
|
|
1271
|
-
return externalTaskData(task.kind, task.external, resolver, `${stageId}-${taskId}`, `${task.kind === 'external-agent' ? 'External Agent' : 'External Workflow'} task "${task.name}"`);
|
|
1274
|
+
return withCustomOutputs(externalTaskData(task.kind, task.external, resolver, `${stageId}-${taskId}`, `${task.kind === 'external-agent' ? 'External Agent' : 'External Workflow'} task "${task.name}"`), task, resolver);
|
|
1272
1275
|
case 'wait-for-timer': {
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
return { timerType: 'timeCycle', timeCycle: task.timer.cycle };
|
|
1279
|
-
return {};
|
|
1276
|
+
const data = task.timer?.duration ? { timerType: 'timeDuration', timeDuration: task.timer.duration }
|
|
1277
|
+
: task.timer?.date ? { timerType: 'timeDate', timeDate: task.timer.date }
|
|
1278
|
+
: task.timer?.cycle ? { timerType: 'timeCycle', timeCycle: task.timer.cycle }
|
|
1279
|
+
: {};
|
|
1280
|
+
return withCustomOutputs(data, task, resolver);
|
|
1280
1281
|
}
|
|
1281
1282
|
case 'wait-for-connector':
|
|
1282
1283
|
// Floor placeholder (no connector named) = `serviceType` only; naming the
|
|
@@ -1299,8 +1300,9 @@ function withOutputExtracts(data, task, ids, resolver) {
|
|
|
1299
1300
|
if (!task.outputs?.length)
|
|
1300
1301
|
return data;
|
|
1301
1302
|
const own = Array.isArray(data.outputs) ? data.outputs : [];
|
|
1302
|
-
|
|
1303
|
-
|
|
1303
|
+
// A custom row carries `elementId: 'root'`; only an extract needs the task's.
|
|
1304
|
+
const elementId = own.find((row) => typeof row.elementId === 'string')?.elementId ?? '';
|
|
1305
|
+
if (!elementId && task.outputs.some((o) => !o.custom))
|
|
1304
1306
|
throw new CompileRefusal('TASK_OUTPUTS_NO_RESPONSE', `task "${task.name}": output extracts need the task's resolved response output.`);
|
|
1305
1307
|
data.outputs = [
|
|
1306
1308
|
...own,
|
|
@@ -1308,6 +1310,22 @@ function withOutputExtracts(data, task, ids, resolver) {
|
|
|
1308
1310
|
];
|
|
1309
1311
|
return data;
|
|
1310
1312
|
}
|
|
1313
|
+
/**
|
|
1314
|
+
* A task's custom `{ assign }` outputs, appended to the rows its own kind writes,
|
|
1315
|
+
* for a kind with no result-field extracts (action, wait-for-timer, external).
|
|
1316
|
+
* The builder lets only custom rows reach these kinds (#1451), and each is the
|
|
1317
|
+
* row Studio Web saves (`emitCustomOutput`). After an action task's form
|
|
1318
|
+
* fields, e.g. `.outputs({ decision: { assign: "=js:vars.approved ? 'yes' : 'no'" } })`:
|
|
1319
|
+
* [{ name: 'approved', …, source: '=approved' },
|
|
1320
|
+
* { name: 'decision', custom: true, var: 'decision', source: "=js:vars.approved ? 'yes' : 'no'", elementId: 'root', … }]
|
|
1321
|
+
*/
|
|
1322
|
+
function withCustomOutputs(data, task, resolver) {
|
|
1323
|
+
if (!task.outputs?.length)
|
|
1324
|
+
return data;
|
|
1325
|
+
const own = Array.isArray(data.outputs) ? data.outputs : [];
|
|
1326
|
+
data.outputs = [...own, ...task.outputs.map((o) => emitCustomOutput(o, resolver))];
|
|
1327
|
+
return data;
|
|
1328
|
+
}
|
|
1311
1329
|
/**
|
|
1312
1330
|
* The `wait-for-connector` subscription bag (`data` on the task, `uipath` on the
|
|
1313
1331
|
* rule). Verified against a real `uip maestro case` caseplan: a placeholder
|
package/dist/core/refusals.d.ts
CHANGED
|
@@ -686,7 +686,7 @@ export declare const REFUSALS: {
|
|
|
686
686
|
readonly VARIABLE_ORDER_UNKNOWN_ID: "lint";
|
|
687
687
|
readonly VARS_BRACKET_READ: "lint";
|
|
688
688
|
readonly VERSION_DEPRECATED: "lint";
|
|
689
|
-
readonly VERSION_MISMATCH: "
|
|
689
|
+
readonly VERSION_MISMATCH: "lowering";
|
|
690
690
|
readonly VOICE_AGENT_ITERATIONS: "lint";
|
|
691
691
|
readonly VOICE_AGENT_NO_PROMPT: "lint";
|
|
692
692
|
readonly VOICE_CALL_CONTEXT_NOT_OBJECT: "lint";
|
package/dist/core/refusals.js
CHANGED
|
@@ -737,7 +737,7 @@ export const REFUSALS = {
|
|
|
737
737
|
VARIABLE_ORDER_UNKNOWN_ID: 'lint',
|
|
738
738
|
VARS_BRACKET_READ: 'lint',
|
|
739
739
|
VERSION_DEPRECATED: 'lint',
|
|
740
|
-
VERSION_MISMATCH: '
|
|
740
|
+
VERSION_MISMATCH: 'lowering',
|
|
741
741
|
VOICE_AGENT_ITERATIONS: 'lint',
|
|
742
742
|
VOICE_AGENT_NO_PROMPT: 'lint',
|
|
743
743
|
VOICE_CALL_CONTEXT_NOT_OBJECT: 'lint',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uipath/maestro-builder-sdk",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.67.1",
|
|
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",
|
|
@@ -100,5 +100,5 @@
|
|
|
100
100
|
"@types/node": "^22.7.0",
|
|
101
101
|
"esbuild": "^0.28.1"
|
|
102
102
|
},
|
|
103
|
-
"gitref": "
|
|
103
|
+
"gitref": "65595ae4c46cbbf4515e357d3cb4b3fbe2f33715"
|
|
104
104
|
}
|