@uipath/maestro-builder-sdk 6.66.1 → 6.66.3

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
@@ -41,10 +41,10 @@ could hand you spans for a version you do not have.
41
41
 
42
42
  | Symbol | Kind | Declaration | Area | Summary |
43
43
  | --- | --- | --- | --- | --- |
44
- | `ActionSchema` | type | `dist/nodes/hitl/flow/spec.d.ts:289-290` | Supporting types | An Action App's action schema, in either spelling. |
45
- | `ActionSchemaFile` | interface | `dist/nodes/hitl/flow/spec.d.ts:252-262` | Supporting types | A coded action app's `action-schema.json`. |
46
- | `ActionSchemaProperty` | interface | `dist/nodes/hitl/flow/spec.d.ts:226-244` | Supporting types | One property of an `action-schema.json` section. |
47
- | `ActionSchemaSection` | interface | `dist/nodes/hitl/flow/spec.d.ts:245-251` | Supporting types | One section (`inputs`, `outputs`, `inOuts`, `outcomes`) of an `action-schema.json`. |
44
+ | `ActionSchema` | type | `dist/nodes/hitl/flow/spec.d.ts:318-319` | Supporting types | An Action App's action schema, in either spelling. |
45
+ | `ActionSchemaFile` | interface | `dist/nodes/hitl/flow/spec.d.ts:281-291` | Supporting types | A coded action app's `action-schema.json`. |
46
+ | `ActionSchemaProperty` | interface | `dist/nodes/hitl/flow/spec.d.ts:255-273` | Supporting types | One property of an `action-schema.json` section. |
47
+ | `ActionSchemaSection` | interface | `dist/nodes/hitl/flow/spec.d.ts:274-280` | Supporting types | One section (`inputs`, `outputs`, `inOuts`, `outcomes`) of an `action-schema.json`. |
48
48
  | `ActionSpec` | type | `dist/core/actions.d.ts:847-855` | Supporting types | One action step's spec: `{ kind }` plus that kind's body from FlowActionSpecs, for every kind there. |
49
49
  | `agent` | function | `dist/nodes/process/flow/factories.d.ts:159-213` | Actions | Invoke an AGENT resource — either one published to Orchestrator or a sibling agent project registered in the same… |
50
50
  | `AgentFlavour` | type | `dist/nodes/process/flow/spec.d.ts:260-264` | Supporting types | Which KIND of agent project was published behind a `uipath.core.agent.<key>` resource. |
@@ -61,7 +61,7 @@ could hand you spans for a version you do not have.
61
61
  | `AggregationOperation` | type | `dist/nodes/transform/flow/spec.d.ts:35` | Supporting types | |
62
62
  | `apiWorkflow` | function | `dist/nodes/process/flow/factories.d.ts:53-87` | Actions | Invoke a deployed API workflow — a coded workflow published to Orchestrator, run as a serverless job rather than by a… |
63
63
  | `ApiWorkflowInputs` | interface | `dist/nodes/process/flow/spec.d.ts:70-101` | Option shapes | 5 field(s) |
64
- | `AppRef` | interface | `dist/nodes/hitl/flow/spec.d.ts:146-225` | Supporting types | A deployed Action App that supplies a human task's form — the `'action-app'` variant's subject. |
64
+ | `AppRef` | interface | `dist/nodes/hitl/flow/spec.d.ts:146-254` | Supporting types | A deployed Action App that supplies a human task's form — the `'action-app'` variant's subject. |
65
65
  | `ArmBuilder` | class | `dist/flow-sdk.d.ts:1385-1408` | Builders | The sub-builder an ARM callback receives — a `StepList` that can also name itself with `.label(...)`. |
66
66
  | `AskedField` | interface | `dist/core/actions.d.ts:221-240` | Supporting types | A value the reviewer FILLS IN: read downstream with `out('<step>', '<id>')`. |
67
67
  | `at` | function | `dist/flow-sdk.d.ts:714-742` | Flow construction | A node's layout at a canvas position — the short form of a NodeLayout for the `nodes` map of FlowBuilder.layout. |
@@ -164,7 +164,7 @@ could hand you spans for a version you do not have.
164
164
  | `HitlAssigneeType` | type | `dist/nodes/hitl/flow/spec.d.ts:16-23` | Supporting types | How the task is assigned, the platform's own vocabulary (canvas `HITL_ASSIGNEE_TYPE`): `'user'` a single user, `'group'`… |
165
165
  | `HitlChannel` | type | `dist/nodes/hitl/flow/spec.d.ts:10-15` | Supporting types | Where the task is delivered. |
166
166
  | `HitlConnection` | interface | `dist/nodes/hitl/flow/spec.d.ts:24-32` | Supporting types | A per-channel Integration Service connection (Slack / Teams delivery). |
167
- | `HitlInputs` | interface | `dist/nodes/hitl/flow/spec.d.ts:291-395` | Option shapes | 12 field(s) |
167
+ | `HitlInputs` | interface | `dist/nodes/hitl/flow/spec.d.ts:320-424` | Option shapes | 12 field(s) |
168
168
  | `HitlRecipient` | interface | `dist/nodes/hitl/flow/spec.d.ts:33-75` | Supporting types | Who gets the task and over which channels. |
169
169
  | `HitlVariant` | type | `dist/nodes/hitl/flow/spec.d.ts:120-145` | Supporting types | WHICH human-task node type to emit. |
170
170
  | `http` | function | `dist/nodes/http/flow/factories.d.ts:7-14` | Actions | Declare an HTTP request action, explicitly choosing standalone or managed. |
@@ -208,8 +208,8 @@ could hand you spans for a version you do not have.
208
208
  | `Outcome` | type | `dist/nodes/hitl/flow/spec.d.ts:100-119` | Supporting types | One completion button. |
209
209
  | `OutputColumn` | interface | `dist/nodes/ai-patterns/flow/spec.d.ts:41-47` | Supporting types | One column Batch Transform appends to the CSV. |
210
210
  | `ParallelOptions` | interface | `dist/flow-sdk.d.ts:468-491` | Option shapes | The options of `.parallel()`: the join's NodeOptions, plus the fork node when the flow has one. |
211
- | `PlatformActionSchema` | interface | `dist/nodes/hitl/flow/spec.d.ts:276-288` | Supporting types | The platform's action schema (Apps API, a solution's `spec.actionSchema`). |
212
- | `PlatformActionSchemaArg` | interface | `dist/nodes/hitl/flow/spec.d.ts:263-275` | Supporting types | One argument of the platform's action schema. |
211
+ | `PlatformActionSchema` | interface | `dist/nodes/hitl/flow/spec.d.ts:305-317` | Supporting types | The platform's action schema (Apps API, a solution's `spec.actionSchema`). |
212
+ | `PlatformActionSchemaArg` | interface | `dist/nodes/hitl/flow/spec.d.ts:292-304` | Supporting types | One argument of the platform's action schema. |
213
213
  | `PortArm` | interface | `dist/flow-sdk.d.ts:380-392` | Supporting types | One arm of a built `.stepSwitch` — the same shape as SwitchArm, but `value` names an exit the ACTION declares (a… |
214
214
  | `ProcessLocation` | type | `dist/core/actions.d.ts:260-265` | Supporting types | Where a process resource lives: deployed to an Orchestrator folder (`'published'`, the default) or a sibling project of… |
215
215
  | `ProcessToolKind` | type | `dist/core/actions.d.ts:622-635` | Supporting types | The tool kinds that wrap a DEPLOYED tenant resource. |
@@ -5,12 +5,12 @@
5
5
 
6
6
  # Maestro Builder SDK — member index
7
7
 
8
- **A lookup table of 1225 rows — match one name in it, do not read it.**
8
+ **A lookup table of 1226 rows — match one name in it, do not read it.**
9
9
  Grep or search for the member you have; the row it lands on is the whole
10
10
  answer. Reading top to bottom costs ~20x what the one row does and tells you
11
11
  nothing you asked for.
12
12
 
13
- Every field and method of every exported shape — 1225 across
13
+ Every field and method of every exported shape — 1226 across
14
14
  224 interfaces and classes — keyed by the MEMBER's own name.
15
15
 
16
16
  **Use this when the name you have is a field or a method**, which is usually
@@ -28,7 +28,7 @@ truncated summary would, for less. Read the span.
28
28
  Member names repeat across shapes (`name` is declared on 69 of them), so the
29
29
  `Declared on` column is what makes a match actionable. For the whole shape
30
30
  rather than the one field, look that name up in [`api-index.md`](api-index.md) —
31
- which is why its span is not repeated on all 1225 rows here.
31
+ which is why its span is not repeated on all 1226 rows here.
32
32
 
33
33
  **A name that misses both indexes is probably not part of the API.** The one
34
34
  that comes up is a RUNTIME output key — a human task's `Action`, a step's
@@ -50,7 +50,7 @@ not find it either.
50
50
  | `action` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:997-1022` |
51
51
  | `actionCatalogName` | property | `ActionSpecData` | `dist/case/case-sdk.d.ts:558-563` |
52
52
  | `actions` | property | `HumanTaskAppOpts` | `dist/bpmn/bpmn-sdk.d.ts:1403-1412` |
53
- | `actionSchema` | property | `AppRef` | `dist/nodes/hitl/flow/spec.d.ts:191-215` |
53
+ | `actionSchema` | property | `AppRef` | `dist/nodes/hitl/flow/spec.d.ts:220-244` |
54
54
  | `activity` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2966-2999` |
55
55
  | `additionalOutputs` | property | `RegistryTypeSpec` | `dist/bpmn/typed-node.d.ts:98-102` |
56
56
  | `agent` | property | `FlowActionSpecs` | `dist/nodes/process/flow/spec.d.ts:381-384` |
@@ -64,10 +64,10 @@ not find it either.
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` |
67
- | `app` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:297-301` |
67
+ | `app` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:326-330` |
68
68
  | `app` | property | `HumanTaskAppOpts` | `dist/bpmn/bpmn-sdk.d.ts:1397-1398` |
69
69
  | `app` | property | `HumanTaskFormOpts` | `dist/bpmn/bpmn-sdk.d.ts:1435-1436` |
70
- | `appSystemName` | property | `AppRef` | `dist/nodes/hitl/flow/spec.d.ts:176-181` |
70
+ | `appSystemName` | property | `AppRef` | `dist/nodes/hitl/flow/spec.d.ts:205-210` |
71
71
  | `appVersion` | property | `HumanTaskAppOpts` | `dist/bpmn/bpmn-sdk.d.ts:1401-1402` |
72
72
  | `armLabel` | property | `ArmBuilder` | `dist/flow-sdk.d.ts:1397` |
73
73
  | `assignee` | property | `HitlRecipient` | `dist/nodes/hitl/flow/spec.d.ts:54-69` |
@@ -226,7 +226,7 @@ not find it either.
226
226
  | `definitions` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1642-1682` |
227
227
  | `delay` | property | `FlowActionSpecs` | `dist/nodes/delay/flow/spec.d.ts:38-41` |
228
228
  | `dependsOn` | property | `LookupSpec` | `dist/core/lookups.d.ts:34-35` |
229
- | `description` | property | `ActionSchemaProperty` | `dist/nodes/hitl/flow/spec.d.ts:236-237` |
229
+ | `description` | property | `ActionSchemaProperty` | `dist/nodes/hitl/flow/spec.d.ts:265-266` |
230
230
  | `description` | property | `AgentMemoryRef` | `dist/core/actions.d.ts:551` |
231
231
  | `description` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:768` |
232
232
  | `description` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:858-859` |
@@ -285,7 +285,7 @@ not find it either.
285
285
  | `displayName` | property | `RegistryInputField` | `dist/bpmn/typed-node.d.ts:65` |
286
286
  | `displayName` | property | `SlaOpts` | `dist/case/case-sdk.d.ts:178-183` |
287
287
  | `displayName` | property | `TriggerMeta` | `dist/core/connectors.d.ts:127-128` |
288
- | `document` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:390-394` |
288
+ | `document` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:419-423` |
289
289
  | `documentClassify` | property | `FlowActionSpecs` | `dist/nodes/document/flow/spec.d.ts:152-155` |
290
290
  | `documentId` | property | `DocValidationInputs` | `dist/nodes/hitl/flow/spec.d.ts:90-91` |
291
291
  | `doWhile` | method | `StepList` | `dist/flow-sdk.d.ts:1219-1243` |
@@ -362,7 +362,7 @@ not find it either.
362
362
  | `exitToStage` | property | `ExitOpts` | `dist/case/case-sdk.d.ts:816-830` |
363
363
  | `exitWhen` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1250-1257` |
364
364
  | `exponentialBase` | property | `RetrySpec` | `dist/bpmn/bpmn-sdk.d.ts:835-836` |
365
- | `exposeError` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:350-356` |
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` |
367
367
  | `expression` | property | `RuleOpts` | `dist/case/case-sdk.d.ts:83-84` |
368
368
  | `expression` | property | `WhenExpression` | `dist/case/case-sdk.d.ts:109-110` |
@@ -380,7 +380,7 @@ not find it either.
380
380
  | `field` | property | `LookupResolution` | `dist/core/lookups.d.ts:168` |
381
381
  | `fields` | property | `DataFabricReadInputs` | `dist/nodes/data-fabric/flow/spec.d.ts:105-106` |
382
382
  | `fields` | property | `EscalationRef` | `dist/core/actions.d.ts:724-728` |
383
- | `fields` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:306-315` |
383
+ | `fields` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:335-344` |
384
384
  | `fields` | property | `HumanTaskForm` | `dist/bpmn/human-task-form.d.ts:85-86` |
385
385
  | `fileExtension` | property | `BuiltinToolRef` | `dist/core/actions.d.ts:579-580` |
386
386
  | `fileExtension` | property | `ContextIndexRef` | `dist/core/actions.d.ts:805-806` |
@@ -424,7 +424,7 @@ not find it either.
424
424
  | `folderPath` | property | `AgenticProcessInputsBase` | `dist/nodes/process/flow/spec.d.ts:188-195` |
425
425
  | `folderPath` | property | `AgentInputs` | `dist/nodes/process/flow/spec.d.ts:291-302` |
426
426
  | `folderPath` | property | `ApiWorkflowInputs` | `dist/nodes/process/flow/spec.d.ts:81-82` |
427
- | `folderPath` | property | `AppRef` | `dist/nodes/hitl/flow/spec.d.ts:174-175` |
427
+ | `folderPath` | property | `AppRef` | `dist/nodes/hitl/flow/spec.d.ts:198-204` |
428
428
  | `folderPath` | property | `ConnectorEventOpts` | `dist/bpmn/bpmn-sdk.d.ts:1508-1509` |
429
429
  | `folderPath` | property | `ContextIndexRef` | `dist/core/actions.d.ts:789-790` |
430
430
  | `folderPath` | property | `HitlConnection` | `dist/nodes/hitl/flow/spec.d.ts:30-31` |
@@ -441,7 +441,7 @@ not find it either.
441
441
  | `form` | property | `AgenticProcessInputsBase` | `dist/nodes/process/flow/spec.d.ts:210-217` |
442
442
  | `form` | property | `HumanTaskAppOpts` | `dist/bpmn/bpmn-sdk.d.ts:1399-1400` |
443
443
  | `form` | property | `HumanTaskFormOpts` | `dist/bpmn/bpmn-sdk.d.ts:1433-1434` |
444
- | `format` | property | `ActionSchemaProperty` | `dist/nodes/hitl/flow/spec.d.ts:238-239` |
444
+ | `format` | property | `ActionSchemaProperty` | `dist/nodes/hitl/flow/spec.d.ts:267-268` |
445
445
  | `from` | property | `CreateOutgoingCallInputs` | `dist/nodes/agent/flow/spec.d.ts:88-92` |
446
446
  | `function` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:935-950` |
447
447
  | `goto` | method | `PathBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3374-3398` |
@@ -455,7 +455,7 @@ not find it either.
455
455
  | `height` | property | `StickyNote` | `dist/flow-sdk.d.ts:825-826` |
456
456
  | `hidden` | property | `RegistryContextField` | `dist/bpmn/typed-node.d.ts:27` |
457
457
  | `hidden` | property | `RegistryInputField` | `dist/bpmn/typed-node.d.ts:68` |
458
- | `hitl` | property | `FlowActionSpecs` | `dist/nodes/hitl/flow/spec.d.ts:398-401` |
458
+ | `hitl` | property | `FlowActionSpecs` | `dist/nodes/hitl/flow/spec.d.ts:427-430` |
459
459
  | `http` | property | `FlowActionSpecs` | `dist/nodes/http/flow/spec.d.ts:145-148` |
460
460
  | `http` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2462-2496` |
461
461
  | `humanTask` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2719-2802` |
@@ -501,8 +501,8 @@ not find it either.
501
501
  | `inclusive` | property | `ChooseOpts` | `dist/bpmn/bpmn-sdk.d.ts:1906-1910` |
502
502
  | `inclusiveGateway` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2362-2369` |
503
503
  | `inlineAgent` | property | `FlowActionSpecs` | `dist/nodes/agent/flow/spec.d.ts:443-446` |
504
- | `inOuts` | property | `ActionSchemaFile` | `dist/nodes/hitl/flow/spec.d.ts:258-259` |
505
- | `inOuts` | property | `PlatformActionSchema` | `dist/nodes/hitl/flow/spec.d.ts:282-283` |
504
+ | `inOuts` | property | `ActionSchemaFile` | `dist/nodes/hitl/flow/spec.d.ts:287-288` |
505
+ | `inOuts` | property | `PlatformActionSchema` | `dist/nodes/hitl/flow/spec.d.ts:311-312` |
506
506
  | `input` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1402-1427` |
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` |
@@ -511,13 +511,13 @@ not find it either.
511
511
  | `inputName` | property | `RegistryTypeSpec` | `dist/bpmn/typed-node.d.ts:92` |
512
512
  | `inputPattern` | property | `RegistryTypeSpec` | `dist/bpmn/typed-node.d.ts:91` |
513
513
  | `inputRows` | property | `ActivityNodeOpts` | `dist/bpmn/bpmn-sdk.d.ts:1618-1626` |
514
- | `inputs` | property | `ActionSchemaFile` | `dist/nodes/hitl/flow/spec.d.ts:254-255` |
514
+ | `inputs` | property | `ActionSchemaFile` | `dist/nodes/hitl/flow/spec.d.ts:283-284` |
515
515
  | `inputs` | property | `ActionSpecData` | `dist/case/case-sdk.d.ts:564-565` |
516
516
  | `inputs` | property | `ActivityNodeOpts` | `dist/bpmn/bpmn-sdk.d.ts:1616-1617` |
517
517
  | `inputs` | property | `AgenticProcessInputsBase` | `dist/nodes/process/flow/spec.d.ts:204-209` |
518
518
  | `inputs` | property | `AgentInputs` | `dist/nodes/process/flow/spec.d.ts:309-326` |
519
519
  | `inputs` | property | `ApiWorkflowInputs` | `dist/nodes/process/flow/spec.d.ts:83-87` |
520
- | `inputs` | property | `AppRef` | `dist/nodes/hitl/flow/spec.d.ts:182-190` |
520
+ | `inputs` | property | `AppRef` | `dist/nodes/hitl/flow/spec.d.ts:211-219` |
521
521
  | `inputs` | property | `BuiltEntryPoint` | `dist/flow-sdk.d.ts:850-851` |
522
522
  | `inputs` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:868` |
523
523
  | `inputs` | property | `BuiltTask` | `dist/case/case-sdk.d.ts:628-629` |
@@ -525,7 +525,7 @@ not find it either.
525
525
  | `inputs` | property | `ExternalTaskOptions` | `dist/case/case-sdk.d.ts:455-456` |
526
526
  | `inputs` | property | `InlineAgentInputs` | `dist/nodes/agent/flow/spec.d.ts:228-258` |
527
527
  | `inputs` | property | `NodeContribution` | `dist/core/node-classes.d.ts:113-117` |
528
- | `inputs` | property | `PlatformActionSchema` | `dist/nodes/hitl/flow/spec.d.ts:278-279` |
528
+ | `inputs` | property | `PlatformActionSchema` | `dist/nodes/hitl/flow/spec.d.ts:307-308` |
529
529
  | `inputs` | property | `ProcessToolRef` | `dist/core/actions.d.ts:661-662` |
530
530
  | `inputs` | property | `PublishedFunctionInputs` | `dist/nodes/process/flow/spec.d.ts:150-151` |
531
531
  | `inputs` | property | `RegistryTypeSpec` | `dist/bpmn/typed-node.d.ts:95-96` |
@@ -535,7 +535,7 @@ not find it either.
535
535
  | `inputs` | method | `TaskBuilder` | `dist/case/case-sdk.d.ts:1112-1124` |
536
536
  | `inputs` | property | `VoiceAgentInputs` | `dist/nodes/agent/flow/spec.d.ts:136-141` |
537
537
  | `inputSchema` | property | `ActivityNodeOpts` | `dist/bpmn/bpmn-sdk.d.ts:1669-1677` |
538
- | `inputSchema` | property | `AppRef` | `dist/nodes/hitl/flow/spec.d.ts:216-224` |
538
+ | `inputSchema` | property | `AppRef` | `dist/nodes/hitl/flow/spec.d.ts:245-253` |
539
539
  | `inputSchema` | property | `ScriptTaskOpts` | `dist/bpmn/bpmn-sdk.d.ts:953-964` |
540
540
  | `inputTarget` | property | `RegistryTypeSpec` | `dist/bpmn/typed-node.d.ts:93` |
541
541
  | `intermediateCatchEvent` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2319-2326` |
@@ -550,11 +550,11 @@ not find it either.
550
550
  | `isDynamic` | property | `RegistryTypeSpec` | `dist/bpmn/typed-node.d.ts:107-114` |
551
551
  | `isInterrupting` | property | `BuiltEntryCondition` | `dist/case/case-sdk.d.ts:322` |
552
552
  | `isInterrupting` | property | `EntryOpts` | `dist/case/case-sdk.d.ts:798` |
553
- | `isList` | property | `PlatformActionSchemaArg` | `dist/nodes/hitl/flow/spec.d.ts:271-272` |
553
+ | `isList` | property | `PlatformActionSchemaArg` | `dist/nodes/hitl/flow/spec.d.ts:300-301` |
554
554
  | `isNot` | property | `FormFieldCondition` | `dist/core/actions.d.ts:123-124` |
555
555
  | `item` | property | `QueueItemInputs` | `dist/nodes/queue/flow/spec.d.ts:26-31` |
556
556
  | `item` | property | `QueueItemOpts` | `dist/bpmn/bpmn-sdk.d.ts:1342-1343` |
557
- | `items` | property | `ActionSchemaProperty` | `dist/nodes/hitl/flow/spec.d.ts:240-241` |
557
+ | `items` | property | `ActionSchemaProperty` | `dist/nodes/hitl/flow/spec.d.ts:269-270` |
558
558
  | `itemVar` | property | `LoopSpec` | `dist/bpmn/bpmn-sdk.d.ts:83-84` |
559
559
  | `ixpExtract` | property | `FlowActionSpecs` | `dist/nodes/document/flow/spec.d.ts:160-163` |
560
560
  | `join` | property | `ChooseOpts` | `dist/bpmn/bpmn-sdk.d.ts:1911-1912` |
@@ -563,7 +563,7 @@ not find it either.
563
563
  | `key` | property | `AgenticProcessInputsBase` | `dist/nodes/process/flow/spec.d.ts:163-174` |
564
564
  | `key` | property | `AgentInputs` | `dist/nodes/process/flow/spec.d.ts:269-282` |
565
565
  | `key` | property | `ApiWorkflowInputs` | `dist/nodes/process/flow/spec.d.ts:71-78` |
566
- | `key` | property | `AppRef` | `dist/nodes/hitl/flow/spec.d.ts:172-173` |
566
+ | `key` | property | `AppRef` | `dist/nodes/hitl/flow/spec.d.ts:179-185` |
567
567
  | `key` | property | `HitlConnection` | `dist/nodes/hitl/flow/spec.d.ts:28-29` |
568
568
  | `key` | property | `HumanTaskAppOpts` | `dist/bpmn/bpmn-sdk.d.ts:1413-1414` |
569
569
  | `key` | property | `McpToolRef` | `dist/core/actions.d.ts:452-453` |
@@ -599,19 +599,20 @@ not find it either.
599
599
  | `label` | property | `SwitchArm` | `dist/flow-sdk.d.ts:370` |
600
600
  | `labels` | property | `ActionSpecData` | `dist/case/case-sdk.d.ts:556-557` |
601
601
  | `labels` | property | `EscalationRef` | `dist/core/actions.d.ts:769-770` |
602
- | `labels` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:333-334` |
602
+ | `labels` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:362-363` |
603
603
  | `labels` | property | `HumanTaskFormOpts` | `dist/bpmn/bpmn-sdk.d.ts:1439-1440` |
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
607
  | `layout` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1381-1401` |
608
608
  | `layout` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1443-1469` |
609
- | `legacyCompleted` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:357-389` |
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` |
611
611
  | `limit` | property | `DoWhileOptions` | `dist/flow-sdk.d.ts:573-574` |
612
612
  | `literal` | property | `Expr` | `dist/core/expr.d.ts:18` |
613
613
  | `location` | property | `AgenticProcessInputsBase` | `dist/nodes/process/flow/spec.d.ts:177-187` |
614
614
  | `location` | property | `AgentInputs` | `dist/nodes/process/flow/spec.d.ts:285-290` |
615
+ | `location` | property | `AppRef` | `dist/nodes/hitl/flow/spec.d.ts:186-197` |
615
616
  | `location` | property | `PublishedFunctionInputs` | `dist/nodes/process/flow/spec.d.ts:122-129` |
616
617
  | `location` | property | `RpaWorkflowInputs` | `dist/nodes/process/flow/spec.d.ts:25-30` |
617
618
  | `lookups` | property | `ConnectorMeta` | `dist/core/connectors.d.ts:76-87` |
@@ -678,7 +679,7 @@ not find it either.
678
679
  | `name` | property | `AgentInputs` | `dist/nodes/process/flow/spec.d.ts:283-284` |
679
680
  | `name` | property | `AgentMemoryRef` | `dist/core/actions.d.ts:547-548` |
680
681
  | `name` | property | `ApiWorkflowInputs` | `dist/nodes/process/flow/spec.d.ts:79-80` |
681
- | `name` | property | `AppRef` | `dist/nodes/hitl/flow/spec.d.ts:170-171` |
682
+ | `name` | property | `AppRef` | `dist/nodes/hitl/flow/spec.d.ts:177-178` |
682
683
  | `name` | property | `BindingContribution` | `dist/core/node-classes.d.ts:87-88` |
683
684
  | `name` | property | `BindingDecl` | `dist/bpmn/bpmn-sdk.d.ts:423-424` |
684
685
  | `name` | property | `BindingOpts` | `dist/bpmn/bpmn-sdk.d.ts:1042-1043` |
@@ -729,7 +730,7 @@ not find it either.
729
730
  | `name` | property | `OutputColumn` | `dist/nodes/ai-patterns/flow/spec.d.ts:43-44` |
730
731
  | `name` | property | `PendingExit` | `dist/bpmn/bpmn-sdk.d.ts:2010-2011` |
731
732
  | `name` | property | `PlainTaskOpts` | `dist/bpmn/bpmn-sdk.d.ts:1703-1704` |
732
- | `name` | property | `PlatformActionSchemaArg` | `dist/nodes/hitl/flow/spec.d.ts:265-266` |
733
+ | `name` | property | `PlatformActionSchemaArg` | `dist/nodes/hitl/flow/spec.d.ts:294-295` |
733
734
  | `name` | property | `ProcessToolRef` | `dist/core/actions.d.ts:651-652` |
734
735
  | `name` | property | `PublishedFunctionInputs` | `dist/nodes/process/flow/spec.d.ts:120-121` |
735
736
  | `name` | property | `QueueItemOpts` | `dist/bpmn/bpmn-sdk.d.ts:1336-1337` |
@@ -794,12 +795,12 @@ not find it either.
794
795
  | `options` | property | `FormFieldSettings` | `dist/core/actions.d.ts:192-196` |
795
796
  | `or` | property | `DataFabricFilter` | `dist/nodes/data-fabric/flow/spec.d.ts:38-50` |
796
797
  | `origin` | property | `PendingExit` | `dist/bpmn/bpmn-sdk.d.ts:2014-2019` |
797
- | `outcomePorts` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:335-349` |
798
- | `outcomes` | property | `ActionSchemaFile` | `dist/nodes/hitl/flow/spec.d.ts:260-261` |
798
+ | `outcomePorts` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:364-378` |
799
+ | `outcomes` | property | `ActionSchemaFile` | `dist/nodes/hitl/flow/spec.d.ts:289-290` |
799
800
  | `outcomes` | property | `EscalationRef` | `dist/core/actions.d.ts:759-764` |
800
- | `outcomes` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:316-330` |
801
+ | `outcomes` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:345-359` |
801
802
  | `outcomes` | property | `HumanTaskForm` | `dist/bpmn/human-task-form.d.ts:87-91` |
802
- | `outcomes` | property | `PlatformActionSchema` | `dist/nodes/hitl/flow/spec.d.ts:284-285` |
803
+ | `outcomes` | property | `PlatformActionSchema` | `dist/nodes/hitl/flow/spec.d.ts:313-314` |
803
804
  | `output` | method | `CaseBuilder` | `dist/case/case-sdk.d.ts:1428-1440` |
804
805
  | `output` | method | `FlowBuilder` | `dist/flow-sdk.d.ts:1736-1771` |
805
806
  | `output` | property | `RegistryTypeSpec` | `dist/bpmn/typed-node.d.ts:97` |
@@ -808,7 +809,7 @@ not find it either.
808
809
  | `outputRows` | property | `ActivityNodeOpts` | `dist/bpmn/bpmn-sdk.d.ts:1646-1652` |
809
810
  | `outputRows` | property | `ExtensionPayload` | `dist/bpmn/bpmn-sdk.d.ts:616-617` |
810
811
  | `outputRows` | property | `ScriptTaskOpts` | `dist/bpmn/bpmn-sdk.d.ts:943-952` |
811
- | `outputs` | property | `ActionSchemaFile` | `dist/nodes/hitl/flow/spec.d.ts:256-257` |
812
+ | `outputs` | property | `ActionSchemaFile` | `dist/nodes/hitl/flow/spec.d.ts:285-286` |
812
813
  | `outputs` | property | `ActionSpecData` | `dist/case/case-sdk.d.ts:566-567` |
813
814
  | `outputs` | property | `ActivityNodeOpts` | `dist/bpmn/bpmn-sdk.d.ts:1644-1645` |
814
815
  | `outputs` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:869` |
@@ -820,7 +821,7 @@ not find it either.
820
821
  | `outputs` | property | `HumanTaskCommonOpts` | `dist/bpmn/bpmn-sdk.d.ts:1372-1382` |
821
822
  | `outputs` | property | `NodeContribution` | `dist/core/node-classes.d.ts:118-122` |
822
823
  | `outputs` | property | `OrchestratorOpts` | `dist/bpmn/bpmn-sdk.d.ts:1302-1313` |
823
- | `outputs` | property | `PlatformActionSchema` | `dist/nodes/hitl/flow/spec.d.ts:280-281` |
824
+ | `outputs` | property | `PlatformActionSchema` | `dist/nodes/hitl/flow/spec.d.ts:309-310` |
824
825
  | `outputs` | property | `QueueItemOpts` | `dist/bpmn/bpmn-sdk.d.ts:1349-1360` |
825
826
  | `outputs` | property | `ReceiveMessageOpts` | `dist/bpmn/bpmn-sdk.d.ts:1475-1490` |
826
827
  | `outputs` | property | `ResolvedEventTriggerOpts` | `dist/case/case-sdk.d.ts:296-300` |
@@ -866,7 +867,7 @@ not find it either.
866
867
  | `priority` | property | `ActionSpecData` | `dist/case/case-sdk.d.ts:551` |
867
868
  | `priority` | property | `ErrorMappingRow` | `dist/bpmn/bpmn-sdk.d.ts:330-331` |
868
869
  | `priority` | property | `EscalationRef` | `dist/core/actions.d.ts:767-768` |
869
- | `priority` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:304-305` |
870
+ | `priority` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:333-334` |
870
871
  | `priority` | property | `HumanTaskFormOpts` | `dist/bpmn/bpmn-sdk.d.ts:1437-1438` |
871
872
  | `priority` | property | `QueueItemInputs` | `dist/nodes/queue/flow/spec.d.ts:32-33` |
872
873
  | `process` | property | `OrchestratorOpts` | `dist/bpmn/bpmn-sdk.d.ts:1260-1278` |
@@ -880,8 +881,8 @@ not find it either.
880
881
  | `projectId` | property | `RpaWorkflowInputs` | `dist/nodes/process/flow/spec.d.ts:39-46` |
881
882
  | `prompt` | property | `BatchTransformInputs` | `dist/nodes/ai-patterns/flow/spec.d.ts:54-55` |
882
883
  | `prompt` | property | `SummarizeInputs` | `dist/nodes/ai-patterns/flow/spec.d.ts:32-33` |
883
- | `properties` | property | `ActionSchemaProperty` | `dist/nodes/hitl/flow/spec.d.ts:242-243` |
884
- | `properties` | property | `ActionSchemaSection` | `dist/nodes/hitl/flow/spec.d.ts:249-250` |
884
+ | `properties` | property | `ActionSchemaProperty` | `dist/nodes/hitl/flow/spec.d.ts:271-272` |
885
+ | `properties` | property | `ActionSchemaSection` | `dist/nodes/hitl/flow/spec.d.ts:278-279` |
885
886
  | `propertyAttribute` | property | `BindingContribution` | `dist/core/node-classes.d.ts:97-98` |
886
887
  | `propertyAttribute` | property | `BindingDecl` | `dist/bpmn/bpmn-sdk.d.ts:427-428` |
887
888
  | `propertyAttribute` | property | `BindingOpts` | `dist/bpmn/bpmn-sdk.d.ts:1069-1070` |
@@ -896,7 +897,7 @@ not find it either.
896
897
  | `race` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:3132-3162` |
897
898
  | `receiveMessage` | method | `ScopeBuilder` | `dist/bpmn/bpmn-sdk.d.ts:2803-2844` |
898
899
  | `recipient` | property | `ActionSpecData` | `dist/case/case-sdk.d.ts:552-555` |
899
- | `recipient` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:331-332` |
900
+ | `recipient` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:360-361` |
900
901
  | `recipients` | property | `EscalationRef` | `dist/core/actions.d.ts:757-758` |
901
902
  | `record` | property | `DataFabricDeleteInputs` | `dist/nodes/data-fabric/flow/spec.d.ts:195-196` |
902
903
  | `record` | property | `DataFabricUpdateInputs` | `dist/nodes/data-fabric/flow/spec.d.ts:163-164` |
@@ -909,7 +910,7 @@ not find it either.
909
910
  | `render` | property | `DocValidationInputs` | `dist/nodes/hitl/flow/spec.d.ts:92-96` |
910
911
  | `requestedVersion` | property | `ContributionContext` | `dist/core/node-classes.d.ts:72-78` |
911
912
  | `required` | property | `ActionField` | `dist/case/case-sdk.d.ts:531-532` |
912
- | `required` | property | `ActionSchemaProperty` | `dist/nodes/hitl/flow/spec.d.ts:234-235` |
913
+ | `required` | property | `ActionSchemaProperty` | `dist/nodes/hitl/flow/spec.d.ts:263-264` |
913
914
  | `required` | property | `AskedField` | `dist/core/actions.d.ts:229-230` |
914
915
  | `required` | property | `BpmnVarDecl` | `dist/bpmn/bpmn-sdk.d.ts:406-407` |
915
916
  | `required` | property | `BuiltStage` | `dist/case/case-sdk.d.ts:638` |
@@ -917,7 +918,7 @@ not find it either.
917
918
  | `required` | property | `HumanTaskAskedField` | `dist/bpmn/human-task-form.d.ts:55-56` |
918
919
  | `required` | property | `HumanTaskInOutField` | `dist/bpmn/human-task-form.d.ts:71-72` |
919
920
  | `required` | property | `InOutField` | `dist/core/actions.d.ts:256-257` |
920
- | `required` | property | `PlatformActionSchemaArg` | `dist/nodes/hitl/flow/spec.d.ts:269-270` |
921
+ | `required` | property | `PlatformActionSchemaArg` | `dist/nodes/hitl/flow/spec.d.ts:298-299` |
921
922
  | `required` | property | `RegistryContextField` | `dist/bpmn/typed-node.d.ts:26` |
922
923
  | `required` | property | `RegistryInputField` | `dist/bpmn/typed-node.d.ts:67` |
923
924
  | `required` | method | `StageBuilder` | `dist/case/case-sdk.d.ts:1209-1215` |
@@ -1130,7 +1131,7 @@ not find it either.
1130
1131
  | `title` | property | `ActionSpecData` | `dist/case/case-sdk.d.ts:550` |
1131
1132
  | `title` | property | `CaseAppSection` | `dist/case/case-sdk.d.ts:690-691` |
1132
1133
  | `title` | property | `GuardrailFieldReference` | `dist/core/actions.d.ts:298` |
1133
- | `title` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:302-303` |
1134
+ | `title` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:331-332` |
1134
1135
  | `title` | property | `HumanTaskCommonOpts` | `dist/bpmn/bpmn-sdk.d.ts:1370-1371` |
1135
1136
  | `to` | property | `CreateOutgoingCallInputs` | `dist/nodes/agent/flow/spec.d.ts:93-94` |
1136
1137
  | `tool` | property | `BuiltinToolRef` | `dist/core/actions.d.ts:569-570` |
@@ -1150,8 +1151,8 @@ not find it either.
1150
1151
  | `triggers` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:781-782` |
1151
1152
  | `triggers` | property | `CaseLayout` | `dist/case/case-sdk.d.ts:732-733` |
1152
1153
  | `type` | property | `ActionField` | `dist/case/case-sdk.d.ts:516-517` |
1153
- | `type` | property | `ActionSchemaProperty` | `dist/nodes/hitl/flow/spec.d.ts:228-233` |
1154
- | `type` | property | `ActionSchemaSection` | `dist/nodes/hitl/flow/spec.d.ts:247-248` |
1154
+ | `type` | property | `ActionSchemaProperty` | `dist/nodes/hitl/flow/spec.d.ts:257-262` |
1155
+ | `type` | property | `ActionSchemaSection` | `dist/nodes/hitl/flow/spec.d.ts:276-277` |
1155
1156
  | `type` | property | `AskedField` | `dist/core/actions.d.ts:227` |
1156
1157
  | `type` | property | `BindingContribution` | `dist/core/node-classes.d.ts:89-90` |
1157
1158
  | `type` | property | `BpmnVarDecl` | `dist/bpmn/bpmn-sdk.d.ts:390-391` |
@@ -1165,7 +1166,7 @@ not find it either.
1165
1166
  | `type` | property | `HumanTaskShownField` | `dist/bpmn/human-task-form.d.ts:37-38` |
1166
1167
  | `type` | property | `InOutField` | `dist/core/actions.d.ts:252` |
1167
1168
  | `type` | property | `JsonSchemaType` | `dist/case/case-sdk.d.ts:650` |
1168
- | `type` | property | `PlatformActionSchemaArg` | `dist/nodes/hitl/flow/spec.d.ts:267-268` |
1169
+ | `type` | property | `PlatformActionSchemaArg` | `dist/nodes/hitl/flow/spec.d.ts:296-297` |
1169
1170
  | `type` | property | `RegistryContextField` | `dist/bpmn/typed-node.d.ts:25` |
1170
1171
  | `type` | property | `RegistryInputField` | `dist/bpmn/typed-node.d.ts:66` |
1171
1172
  | `type` | property | `RegistryOutput` | `dist/bpmn/typed-node.d.ts:80` |
@@ -1221,7 +1222,7 @@ not find it either.
1221
1222
  | `variableOrder` | property | `BpmnPreservation` | `dist/bpmn/bpmn-sdk.d.ts:480-502` |
1222
1223
  | `variables` | property | `BuiltBpmn` | `dist/bpmn/bpmn-sdk.d.ts:513-514` |
1223
1224
  | `variant` | property | `EscalationRef` | `dist/core/actions.d.ts:715-723` |
1224
- | `variant` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:292-296` |
1225
+ | `variant` | property | `HitlInputs` | `dist/nodes/hitl/flow/spec.d.ts:321-325` |
1225
1226
  | `variant` | property | `TransformInputs` | `dist/nodes/transform/flow/spec.d.ts:96-105` |
1226
1227
  | `vars` | property | `BuiltCase` | `dist/case/case-sdk.d.ts:775` |
1227
1228
  | `vars` | property | `BuiltFlow` | `dist/flow-sdk.d.ts:870` |
@@ -4,7 +4,7 @@ import { CASE_FORMAT_PROFILE, CASE_SCHEMA_VERSIONS } from './format-profile.js';
4
4
  import { EXTERNAL_TASK_CONTEXT, externalDescriptorRefusal, externalHybridRefusal, externalServiceType, isExternalExecutionMode } from './external.js';
5
5
  import { preserveSchemaVersion } from '../schema-version.js';
6
6
  import { ownEntry } from '../core/own-entry.js';
7
- import { isUnrestorableSlotId } from './preserve.js';
7
+ import { isUnrestorableSlotId, taskFingerprint } from './preserve.js';
8
8
  import { isInSolutionKey, SOLUTION_FOLDER } from './resource-identity.js';
9
9
  import { offlineBindingLabel } from './ids.js';
10
10
  const TASK_KIND_METHOD = {
@@ -1172,7 +1172,14 @@ function refuseUnsupportedAuthoring(plan) {
1172
1172
  function conditionIdentity(condition) {
1173
1173
  return {
1174
1174
  ...(condition.id ? { id: condition.id } : {}),
1175
- rules: (condition.rules ?? []).map((group) => group.map((rule) => ({ ...(rule.id ? { id: rule.id } : {}) }))),
1175
+ rules: (condition.rules ?? []).map((group) => group.map((rule) => ({
1176
+ ...(rule.id ? { id: rule.id } : {}),
1177
+ // A wait-for-connector rule's rows take their ids from the plan-wide pool,
1178
+ // so deleting an earlier output would renumber them.
1179
+ ...(rule.uipath?.outputs?.length
1180
+ ? { outputs: rule.uipath.outputs.map((row) => ({ name: row.name ?? '', ...(row.id ? { id: row.id } : {}) })) }
1181
+ : {}),
1182
+ }))),
1176
1183
  };
1177
1184
  }
1178
1185
  function slaIdentity(sla) {
@@ -1231,20 +1238,25 @@ function identityPreservation(plan) {
1231
1238
  return {
1232
1239
  ...(plan.id ? { id: plan.id } : {}),
1233
1240
  triggers: (plan.nodes ?? []).filter(isTrigger).map((node) => ({ ...(node.id ? { id: node.id } : {}) })),
1234
- stages: (plan.nodes ?? []).filter(isStage).map((stage) => ({
1235
- label: stage.data?.label ?? '',
1236
- ...(stage.id ? { id: stage.id } : {}),
1237
- tasks: (stage.data?.tasks ?? []).map((lane) => lane.map((task) => ({
1238
- name: task.displayName ?? '',
1239
- ...(task.id ? { id: task.id } : {}),
1240
- entryConditions: (task.entryConditions ?? []).map(conditionIdentity),
1241
- inputs: (task.data?.inputs ?? []).map((row) => ({ name: row.name ?? '', ...(row.id ? { id: row.id } : {}) })),
1242
- outputs: (task.data?.outputs ?? []).map((row) => ({ name: row.name ?? '', ...(row.id ? { id: row.id } : {}) })),
1243
- }))),
1244
- entryConditions: (stage.data?.entryConditions ?? []).map(conditionIdentity),
1245
- exitConditions: (stage.data?.exitConditions ?? []).map(conditionIdentity),
1246
- slaRules: (stage.data?.slaRules ?? []).map(slaIdentity),
1247
- })),
1241
+ stages: (plan.nodes ?? []).filter(isStage).map((stage) => {
1242
+ const shape = (task) => JSON.stringify([task.data?.inputs, task.data?.outputs].map((rows) => (rows ?? []).map((row) => row.name ?? '')));
1243
+ const shapes = (stage.data?.tasks ?? []).flat().map(shape);
1244
+ return {
1245
+ label: stage.data?.label ?? '',
1246
+ ...(stage.id ? { id: stage.id } : {}),
1247
+ tasks: (stage.data?.tasks ?? []).map((lane) => lane.map((task) => ({
1248
+ name: task.displayName ?? '',
1249
+ ...(task.id ? { id: task.id } : {}),
1250
+ entryConditions: (task.entryConditions ?? []).map(conditionIdentity),
1251
+ inputs: (task.data?.inputs ?? []).map((row) => ({ name: row.name ?? '', ...(row.id ? { id: row.id } : {}) })),
1252
+ outputs: (task.data?.outputs ?? []).map((row) => ({ name: row.name ?? '', ...(row.id ? { id: row.id } : {}) })),
1253
+ ...(shapes.filter((other) => other === shape(task)).length > 1 ? { fingerprint: taskFingerprint(task) } : {}),
1254
+ }))),
1255
+ entryConditions: (stage.data?.entryConditions ?? []).map(conditionIdentity),
1256
+ exitConditions: (stage.data?.exitConditions ?? []).map(conditionIdentity),
1257
+ slaRules: (stage.data?.slaRules ?? []).map(slaIdentity),
1258
+ };
1259
+ }),
1248
1260
  caseExitRules: (plan.metadata?.caseExitRules ?? []).map(conditionIdentity),
1249
1261
  slaRules: (plan.metadata?.slaRules ?? []).map(slaIdentity),
1250
1262
  variables: Object.fromEntries(['inputs', 'outputs', 'inputOutputs'].map((lane) => [
@@ -1374,7 +1386,6 @@ export function collectPreservation(plan) {
1374
1386
  preservation.omitTaskElementIds = omitTaskElementIds;
1375
1387
  if (omitStagePositions.length)
1376
1388
  preservation.omitStagePositions = omitStagePositions;
1377
- const produced = producedVariableNames(plan);
1378
1389
  const variableKnown = new Set(['id', 'name', 'type', 'default', 'body', '_jsonSchema', 'elementId', 'var', 'custom']);
1379
1390
  const variableFields = {};
1380
1391
  const legacyVariableDefaults = {};
@@ -1390,7 +1401,9 @@ export function collectPreservation(plan) {
1390
1401
  for (const field of Object.keys(fields))
1391
1402
  if (!['subType', 'canonicalId', 'camelizedId', 'variableType', 'internal'].includes(field))
1392
1403
  throw new Error(`variable "${row.name}" has unsupported field "${field}", which is not allowed in the collision-refusing preservation channel.`);
1393
- if (lane === 'inputOutputs' && row.custom && !produced.has(row.name))
1404
+ // Carried even while an output writes the variable, so deleting its last
1405
+ // writer keeps the flag; `applyPreservation` reads an equal value as agreement.
1406
+ if (lane === 'inputOutputs' && row.custom)
1394
1407
  fields.custom = true;
1395
1408
  const formalOutput = (plan.variables?.outputs ?? []).find((candidate) => candidate.name === row.name);
1396
1409
  if (lane === 'inputOutputs' && formalOutput && row.default !== undefined && formalOutput.default !== row.default)
@@ -3,9 +3,9 @@ export type CaseDocument = Record<string, unknown>;
3
3
  export interface CaseMergeOptions {
4
4
  /**
5
5
  * Called once per finding. Today the only finding is a construct the original
6
- * carried an identity for that the edited document no longer has — a rename or
7
- * a delete, which are indistinguishable here and which silently drop the
8
- * original's ids for that construct.
6
+ * carried an identity for that the edited document no longer has — a delete, or
7
+ * a rename `followRenames` could not pair — which silently drops the original's
8
+ * ids for that construct.
9
9
  */
10
10
  warn?: (message: string) => void;
11
11
  }
@@ -22,9 +22,11 @@
22
22
  * merge cannot use.
23
23
  *
24
24
  * What it uses instead is what the preservation channel already uses: stage
25
- * LABEL, task displayName, lane and position. That is not a second mechanism —
26
- * it is the same one, read from the original file at merge time rather than
27
- * from a `preserveCaseJson(...)` payload baked into the source.
25
+ * LABEL, task displayName, lane and position, with `followRenames` first
26
+ * re-pointing a stage or task the edit renamed or moved (see its doc) so it keeps
27
+ * its ids. That is not a second mechanism — it is the same one, read from the
28
+ * original file at merge time rather than from a `preserveCaseJson(...)` payload
29
+ * baked into the source.
28
30
  *
29
31
  * ## What each side decides
30
32
  *
@@ -47,7 +49,7 @@
47
49
  * cannot drift from it.
48
50
  */
49
51
  import { collectPreservation } from './decompile.js';
50
- import { applyPreservation } from './serialize.js';
52
+ import { applyPreservation, followRenames } from './serialize.js';
51
53
  import { jsonClone } from '../core/json-clone.js';
52
54
  /** Stage labels in a document, in order. */
53
55
  function stageLabels(document) {
@@ -79,8 +81,9 @@ function warnOrphanedIdentities(preservation, edited, warn) {
79
81
  for (const stage of preservation.identities?.stages ?? []) {
80
82
  if (!labels.has(stage.label)) {
81
83
  warn(`stage "${stage.label}" is in the original but not in the edited case, so its ids are dropped. `
82
- + `If this was a RENAME rather than a delete, the renamed stage gets a new id and every reference `
83
- + `to the old one goes with it — rename in the original first, or keep the label.`);
84
+ + `A renamed stage keeps its ids while it still holds one of its tasks by name, or when the edit `
85
+ + `leaves as many new stages as it removed. Neither holds here, so if this was a RENAME, the renamed `
86
+ + `stage gets a new id and every reference to the old one goes with it: keep a task's name, or keep the label.`);
84
87
  continue;
85
88
  }
86
89
  const present = tasks.get(stage.label) ?? new Set();
@@ -88,7 +91,8 @@ function warnOrphanedIdentities(preservation, edited, warn) {
88
91
  for (const task of lane)
89
92
  if (!present.has(task.name))
90
93
  warn(`task "${task.name}" in stage "${stage.label}" is in the original but not in the edited case, `
91
- + `so its ids are dropped. A rename reads the same as a delete here.`);
94
+ + `so its ids are dropped. A renamed or moved task keeps its ids only when its input and output `
95
+ + `rows keep their names; with those changed too, a rename reads the same as a delete.`);
92
96
  }
93
97
  }
94
98
  /**
@@ -102,7 +106,7 @@ export function mergeCase(original, edited, options = {}) {
102
106
  if (!preservation)
103
107
  return jsonClone(edited);
104
108
  if (options.warn)
105
- warnOrphanedIdentities(preservation, edited, options.warn);
109
+ warnOrphanedIdentities(followRenames(edited, preservation), edited, options.warn);
106
110
  // `applyPreservation` is what `compile` runs with the payload a source
107
111
  // carries. Handing it the ORIGINAL's payload and the EDITED graph is the whole
108
112
  // merge: same operation, different provenance.
@@ -33,6 +33,10 @@ interface ConditionIdentity {
33
33
  id?: string;
34
34
  rules?: Array<Array<{
35
35
  id?: string;
36
+ outputs?: Array<{
37
+ name: string;
38
+ id?: string;
39
+ }>;
36
40
  }>>;
37
41
  }
38
42
  interface SlaIdentity {
@@ -56,11 +60,19 @@ interface StageIdentity {
56
60
  name: string;
57
61
  id?: string;
58
62
  }>;
63
+ /** `taskFingerprint`, for a task a sibling shares its row names with. */
64
+ fingerprint?: string;
59
65
  }>>;
60
66
  entryConditions?: ConditionIdentity[];
61
67
  exitConditions?: ConditionIdentity[];
62
68
  slaRules?: SlaIdentity[];
63
69
  }
70
+ /**
71
+ * A task less its rows, its ids and every display name (a condition's defaults
72
+ * to its task's): what renaming it leaves alone, so a rename beside a deleted
73
+ * sibling of the same shape can be told from the delete.
74
+ */
75
+ export declare function taskFingerprint(task: object): string;
64
76
  interface CaseIdentityPreservation {
65
77
  id?: string;
66
78
  triggers?: Array<{
@@ -1,3 +1,4 @@
1
+ import { stableId } from '../core/stable-id.js';
1
2
  /**
2
3
  * A preserved `inputs[]` / `outputs[]` slot id copied verbatim from its name is
3
4
  * the STRICT_FORMAL_ARG_ID defect, not an identity to keep; the minted id stands.
@@ -5,6 +6,26 @@
5
6
  export function isUnrestorableSlotId(lane, row) {
6
7
  return lane !== 'inputOutputs' && typeof row.id === 'string' && row.id === row.name;
7
8
  }
9
+ /**
10
+ * A task less its rows, its ids and every display name (a condition's defaults
11
+ * to its task's): what renaming it leaves alone, so a rename beside a deleted
12
+ * sibling of the same shape can be told from the delete.
13
+ */
14
+ export function taskFingerprint(task) {
15
+ const canonical = (value) => {
16
+ if (Array.isArray(value))
17
+ return value.map(canonical);
18
+ if (!value || typeof value !== 'object')
19
+ return value;
20
+ return Object.fromEntries(Object.entries(value)
21
+ .filter(([key]) => key !== 'id' && key !== 'elementId' && key !== 'displayName')
22
+ .sort(([a], [b]) => (a < b ? -1 : 1))
23
+ .map(([key, inner]) => [key, canonical(inner)]));
24
+ };
25
+ const { data, ...rest } = task;
26
+ const { inputs: _inputs, outputs: _outputs, ...fields } = data ?? {};
27
+ return stableId(JSON.stringify(canonical({ ...rest, data: fields })));
28
+ }
8
29
  const preserved = new WeakMap();
9
30
  /** Attach decompiler-owned, non-authoring wire data to a built case. */
10
31
  export function preserveCaseJson(built, payload) {