@uipath/maestro-builder-sdk 6.40.0 → 6.40.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.
@@ -104,7 +104,29 @@ export interface RegistryTypeSpec {
104
104
  eventDefinition: string | null;
105
105
  /** True when authoring needs a tenant read (a connection, a process, a queue). */
106
106
  requiresDiscovery: boolean;
107
+ /**
108
+ * The registry's `IsDynamic`: a type whose fields the canvas discovers at design time.
109
+ * The CLI's merged-body required-field check (`validateMergedBodyFields`) skips exactly
110
+ * these, so for a dynamic type `check`'s EMPTY_REQUIRED_FIELD is the only gate on a
111
+ * missing required input (measured on uip 1.205: `A2A.AgentExecution` validates with
112
+ * one absent); every other merged-body type has its fields read inside the payload.
113
+ */
114
+ isDynamic?: boolean;
107
115
  bindingPattern: string;
116
+ /**
117
+ * The registry's `Placements`: where the canvas offers the type, by placement name
118
+ * (`Activity`, `StartEvent`, `IntermediateEvent`, `EndEvent`, …), with the BPMN
119
+ * element and, for an event, its definition. Kept as data; it is NOT an
120
+ * authorability signal — `{}` is what the case manager's internal nodes carry, but
121
+ * also `BPMN.ScriptTask`, `Intsvc.TimerTrigger`, `Maestro.AcquireLock` and
122
+ * `Maestro.NotificationService` (measured on uip 1.205), all of them authored. The
123
+ * internal set is `CASE_RUNTIME_INTERNAL_TYPES` (typed-node.ts). Absent on a spec that
124
+ * predates the field.
125
+ */
126
+ placements?: Record<string, {
127
+ element: string | null;
128
+ eventDefinition: string | null;
129
+ }>;
108
130
  }
109
131
  /** Every extension type in the snapshot, sorted. */
110
132
  export declare function registryTypeNames(): string[];
@@ -127,6 +149,17 @@ export declare function registryTypeNames(): string[];
127
149
  * typo, or no `uip` to ask.
128
150
  */
129
151
  export declare function registryType(type: string, inline?: RegistryTypeSpec): RegistryTypeSpec;
152
+ /**
153
+ * The types the case-management runtime writes for itself when it materializes a
154
+ * case plan into an executable process: scheduler state (`decisions`, the current
155
+ * execution state, lock and cycle bookkeeping) that only the platform produces. The
156
+ * canvas offers none of them, and `check` warns on an authored one
157
+ * (TYPE_RUNTIME_INTERNAL). The ledger (`bpmn-coverage.json`) records each as
158
+ * `out-of-scope` under `docs/BPMN_BUSINESS_RULES_PLAN.md`; a test pins the two lists
159
+ * to each other. Not derivable from the spec: `placements: {}` is shared with
160
+ * authored types (see {@link RegistryTypeSpec.placements}).
161
+ */
162
+ export declare const CASE_RUNTIME_INTERNAL_TYPES: ReadonlySet<string>;
130
163
  /** True when the snapshot itself carries the type — no tenant needed to emit it. */
131
164
  export declare function isSnapshotType(type: string): boolean;
132
165
  /**
@@ -458,36 +491,4 @@ export declare function missingRequiredInputs(type: string, inputs?: Record<stri
458
491
  * agree with the CLI instead of guessing on either side of it.
459
492
  */
460
493
  context?: Record<string, unknown>, inline?: RegistryTypeSpec): string[];
461
- /**
462
- * Whether this type's required payload fields are UNSATISFIABLE on the wire.
463
- *
464
- * A platform defect, recorded here because the SDK cannot emit its way around it.
465
- * `RequiredFieldsRule` builds its required-name set from `InputFields` and then
466
- * fires when a name is absent from the serialized rows **by name**. Under
467
- * `mergedBody` and `splitInputsItemData` every payload field collapses into ONE row
468
- * — named `body` or `ItemData` — so a required input field is never present by
469
- * name and the rule fires however the node is filled in:
470
- *
471
- * [error] [call] EMPTY_REQUIRED_FIELD: The field 'agentUrl' in node 'call' is
472
- * required but has no value.
473
- *
474
- * Note the registry's own `XmlTemplate` for `A2A.AgentExecution` emits exactly the
475
- * body-only shape that fails, which is the clearest statement that the two halves
476
- * of the platform disagree rather than that the SDK is writing the wrong thing.
477
- *
478
- * Whether a workaround exists is per-type and not derivable from the spec, so it is
479
- * not encoded here. Measured: `A2A.AgentExecution` accepts redundant sibling rows
480
- * alongside the merged body (`Valid`); `Maestro.SendMessageEvent` refuses them
481
- * outright — `does not support input payload "Reference"` as a row, `does not
482
- * support context input "Reference"` in context, and `ItemData`'s `target="body"`
483
- * is enforced — so for that type NO artifact satisfies both gates.
484
- *
485
- * Selects exactly `A2A.AgentExecution` and `Maestro.SendMessageEvent` today. The
486
- * three other types with required payload fields are `separateInputs`, whose rows
487
- * DO carry their own names, and are unaffected.
488
- *
489
- * @param type - The extension type.
490
- * @returns The required payload field names that cannot be expressed, or `[]`.
491
- */
492
- export declare function unsatisfiableRequiredInputs(type: string, inline?: RegistryTypeSpec): string[];
493
494
  export {};
@@ -41,6 +41,25 @@ export function registryType(type, inline) {
41
41
  }
42
42
  return spec;
43
43
  }
44
+ /**
45
+ * The types the case-management runtime writes for itself when it materializes a
46
+ * case plan into an executable process: scheduler state (`decisions`, the current
47
+ * execution state, lock and cycle bookkeeping) that only the platform produces. The
48
+ * canvas offers none of them, and `check` warns on an authored one
49
+ * (TYPE_RUNTIME_INTERNAL). The ledger (`bpmn-coverage.json`) records each as
50
+ * `out-of-scope` under `docs/BPMN_BUSINESS_RULES_PLAN.md`; a test pins the two lists
51
+ * to each other. Not derivable from the spec: `placements: {}` is shared with
52
+ * authored types (see {@link RegistryTypeSpec.placements}).
53
+ */
54
+ export const CASE_RUNTIME_INTERNAL_TYPES = new Set([
55
+ 'Maestro.CaseCycleCommit',
56
+ 'Maestro.CaseCyclePrepare',
57
+ 'Maestro.CaseManagerGuardrails',
58
+ 'Maestro.CaseManagerPlaceholder',
59
+ 'Maestro.CaseRulesEvaluator',
60
+ 'Maestro.RetrieveCaseState',
61
+ 'Maestro.UpdateCaseState',
62
+ ]);
44
63
  /** True when the snapshot itself carries the type — no tenant needed to emit it. */
45
64
  export function isSnapshotType(type) {
46
65
  return Object.hasOwn(REGISTRY.types, type);
@@ -726,40 +745,3 @@ context = {}, inline) {
726
745
  (f.default ?? '') === '')
727
746
  .map((f) => f.name);
728
747
  }
729
- /**
730
- * Whether this type's required payload fields are UNSATISFIABLE on the wire.
731
- *
732
- * A platform defect, recorded here because the SDK cannot emit its way around it.
733
- * `RequiredFieldsRule` builds its required-name set from `InputFields` and then
734
- * fires when a name is absent from the serialized rows **by name**. Under
735
- * `mergedBody` and `splitInputsItemData` every payload field collapses into ONE row
736
- * — named `body` or `ItemData` — so a required input field is never present by
737
- * name and the rule fires however the node is filled in:
738
- *
739
- * [error] [call] EMPTY_REQUIRED_FIELD: The field 'agentUrl' in node 'call' is
740
- * required but has no value.
741
- *
742
- * Note the registry's own `XmlTemplate` for `A2A.AgentExecution` emits exactly the
743
- * body-only shape that fails, which is the clearest statement that the two halves
744
- * of the platform disagree rather than that the SDK is writing the wrong thing.
745
- *
746
- * Whether a workaround exists is per-type and not derivable from the spec, so it is
747
- * not encoded here. Measured: `A2A.AgentExecution` accepts redundant sibling rows
748
- * alongside the merged body (`Valid`); `Maestro.SendMessageEvent` refuses them
749
- * outright — `does not support input payload "Reference"` as a row, `does not
750
- * support context input "Reference"` in context, and `ItemData`'s `target="body"`
751
- * is enforced — so for that type NO artifact satisfies both gates.
752
- *
753
- * Selects exactly `A2A.AgentExecution` and `Maestro.SendMessageEvent` today. The
754
- * three other types with required payload fields are `separateInputs`, whose rows
755
- * DO carry their own names, and are unaffected.
756
- *
757
- * @param type - The extension type.
758
- * @returns The required payload field names that cannot be expressed, or `[]`.
759
- */
760
- export function unsatisfiableRequiredInputs(type, inline) {
761
- const spec = registryType(type, inline);
762
- if (spec.inputPattern !== 'mergedBody' && spec.inputPattern !== 'splitInputsItemData')
763
- return [];
764
- return spec.inputs.filter((f) => f.required).map((f) => f.name);
765
- }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uipath/maestro-builder-sdk",
3
- "version": "6.40.0",
3
+ "version": "6.40.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",
@@ -93,5 +93,5 @@
93
93
  "@types/node": "^22.7.0",
94
94
  "esbuild": "^0.28.1"
95
95
  },
96
- "gitref": "b3dd153cbf30937f6caf22ae3ad103d6ea678cb1"
96
+ "gitref": "416f96b5db0e4bbfd59f19f8bd548f138a4a6918"
97
97
  }