@uipath/skills 1.204.0 → 1.204.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.
Files changed (191) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.cursor-plugin/plugin.json +1 -1
  4. package/CODEOWNERS +12 -14
  5. package/package.json +1 -1
  6. package/skills/uipath-agents/references/coded/embedding-in-flows.md +1 -3
  7. package/skills/uipath-agents/references/coded/quickstart.md +0 -2
  8. package/skills/uipath-agents/references/lowcode/capabilities/inline-in-flow/inline-in-flow.md +10 -8
  9. package/skills/uipath-agents/references/lowcode/prompting/autonomous-agent-prompting-guide.md +1 -1
  10. package/skills/uipath-human-in-the-loop/SKILL.md +1 -3
  11. package/skills/uipath-human-in-the-loop/references/hitl-node-apptask.md +0 -2
  12. package/skills/uipath-human-in-the-loop/references/hitl-node-coded-action-app.md +0 -2
  13. package/skills/uipath-human-in-the-loop/references/hitl-node-quickform.md +2 -2
  14. package/skills/uipath-maestro-flow/.maintenance/README.md +265 -0
  15. package/skills/uipath-maestro-flow/.maintenance/check-all.sh +40 -0
  16. package/skills/uipath-maestro-flow/.maintenance/check-anchors.sh +101 -0
  17. package/skills/uipath-maestro-flow/.maintenance/check-depth.sh +132 -0
  18. package/skills/uipath-maestro-flow/.maintenance/check-link-text.sh +123 -0
  19. package/skills/uipath-maestro-flow/.maintenance/check-links.sh +73 -0
  20. package/skills/uipath-maestro-flow/.maintenance/check-orphans.sh +93 -0
  21. package/skills/uipath-maestro-flow/.maintenance/check-plugin-pairs.sh +39 -0
  22. package/skills/uipath-maestro-flow/.maintenance/check-template.sh +42 -0
  23. package/skills/uipath-maestro-flow/.maintenance/check-uip-commands.sh +270 -0
  24. package/skills/uipath-maestro-flow/.maintenance/check-versions.sh +160 -0
  25. package/skills/uipath-maestro-flow/SKILL.md +69 -886
  26. package/skills/uipath-maestro-flow/references/author/CAPABILITY.md +207 -0
  27. package/skills/uipath-maestro-flow/references/author/brownfield.md +91 -0
  28. package/skills/uipath-maestro-flow/references/author/editing-operations-cli.md +190 -0
  29. package/skills/uipath-maestro-flow/references/author/editing-operations-json.md +374 -0
  30. package/skills/uipath-maestro-flow/references/author/editing-operations.md +104 -0
  31. package/skills/uipath-maestro-flow/references/author/greenfield.md +420 -0
  32. package/skills/uipath-maestro-flow/references/author/planning-arch.md +364 -0
  33. package/skills/uipath-maestro-flow/references/author/planning-impl.md +291 -0
  34. package/skills/uipath-maestro-flow/references/author/plugins/agent/impl.md +237 -0
  35. package/skills/uipath-maestro-flow/references/author/plugins/agent/planning.md +97 -0
  36. package/skills/uipath-maestro-flow/references/author/plugins/agentic-process/impl.md +107 -0
  37. package/skills/uipath-maestro-flow/references/author/plugins/agentic-process/planning.md +61 -0
  38. package/skills/uipath-maestro-flow/references/author/plugins/api-workflow/impl.md +108 -0
  39. package/skills/uipath-maestro-flow/references/author/plugins/api-workflow/planning.md +60 -0
  40. package/skills/uipath-maestro-flow/references/author/plugins/batch-transform/impl.md +171 -0
  41. package/skills/uipath-maestro-flow/references/author/plugins/batch-transform/planning.md +72 -0
  42. package/skills/uipath-maestro-flow/references/author/plugins/connector/impl-inline.md +120 -0
  43. package/skills/uipath-maestro-flow/references/author/plugins/connector/impl.md +463 -0
  44. package/skills/uipath-maestro-flow/references/author/plugins/connector/planning.md +186 -0
  45. package/skills/uipath-maestro-flow/references/author/plugins/connector-trigger/impl.md +517 -0
  46. package/skills/uipath-maestro-flow/references/author/plugins/connector-trigger/planning.md +115 -0
  47. package/skills/uipath-maestro-flow/references/author/plugins/conversational-agent/impl.md +309 -0
  48. package/skills/uipath-maestro-flow/references/author/plugins/conversational-agent/planning.md +133 -0
  49. package/skills/uipath-maestro-flow/references/author/plugins/data-fabric/impl.md +428 -0
  50. package/skills/uipath-maestro-flow/references/author/plugins/data-fabric/planning.md +188 -0
  51. package/skills/uipath-maestro-flow/references/author/plugins/decision/impl.md +83 -0
  52. package/skills/uipath-maestro-flow/references/author/plugins/decision/planning.md +38 -0
  53. package/skills/uipath-maestro-flow/references/author/plugins/delay/impl.md +38 -0
  54. package/skills/uipath-maestro-flow/references/author/plugins/delay/planning.md +53 -0
  55. package/skills/uipath-maestro-flow/references/author/plugins/end/impl.md +56 -0
  56. package/skills/uipath-maestro-flow/references/author/plugins/end/planning.md +28 -0
  57. package/skills/uipath-maestro-flow/references/author/plugins/flow/impl.md +107 -0
  58. package/skills/uipath-maestro-flow/references/author/plugins/flow/planning.md +58 -0
  59. package/skills/uipath-maestro-flow/references/author/plugins/hitl/impl.md +181 -0
  60. package/skills/uipath-maestro-flow/references/author/plugins/hitl/planning.md +166 -0
  61. package/skills/uipath-maestro-flow/references/author/plugins/http/impl-connector.md +86 -0
  62. package/skills/uipath-maestro-flow/references/author/plugins/http/impl-manual.md +68 -0
  63. package/skills/uipath-maestro-flow/references/author/plugins/http/impl.md +173 -0
  64. package/skills/uipath-maestro-flow/references/author/plugins/http/planning.md +107 -0
  65. package/skills/uipath-maestro-flow/references/author/plugins/inline-agent/impl.md +540 -0
  66. package/skills/uipath-maestro-flow/references/author/plugins/inline-agent/planning.md +115 -0
  67. package/skills/uipath-maestro-flow/references/author/plugins/inline-voice-agent/impl.md +269 -0
  68. package/skills/uipath-maestro-flow/references/author/plugins/inline-voice-agent/planning.md +128 -0
  69. package/skills/uipath-maestro-flow/references/author/plugins/ixp/impl.md +424 -0
  70. package/skills/uipath-maestro-flow/references/author/plugins/ixp/planning.md +95 -0
  71. package/skills/uipath-maestro-flow/references/author/plugins/loop/impl.md +403 -0
  72. package/skills/uipath-maestro-flow/references/author/plugins/loop/planning.md +60 -0
  73. package/skills/uipath-maestro-flow/references/author/plugins/merge/impl.md +43 -0
  74. package/skills/uipath-maestro-flow/references/author/plugins/merge/planning.md +24 -0
  75. package/skills/uipath-maestro-flow/references/author/plugins/queue/impl.md +82 -0
  76. package/skills/uipath-maestro-flow/references/author/plugins/queue/planning.md +44 -0
  77. package/skills/uipath-maestro-flow/references/author/plugins/rpa/impl.md +117 -0
  78. package/skills/uipath-maestro-flow/references/author/plugins/rpa/planning.md +61 -0
  79. package/skills/uipath-maestro-flow/references/author/plugins/scheduled-trigger/impl.md +56 -0
  80. package/skills/uipath-maestro-flow/references/author/plugins/scheduled-trigger/planning.md +93 -0
  81. package/skills/uipath-maestro-flow/references/author/plugins/script/impl.md +98 -0
  82. package/skills/uipath-maestro-flow/references/author/plugins/script/planning.md +42 -0
  83. package/skills/uipath-maestro-flow/references/author/plugins/subflow/impl.md +164 -0
  84. package/skills/uipath-maestro-flow/references/author/plugins/subflow/planning.md +35 -0
  85. package/skills/uipath-maestro-flow/references/author/plugins/summarize/impl.md +189 -0
  86. package/skills/uipath-maestro-flow/references/author/plugins/summarize/planning.md +66 -0
  87. package/skills/uipath-maestro-flow/references/author/plugins/switch/impl.md +72 -0
  88. package/skills/uipath-maestro-flow/references/author/plugins/switch/planning.md +34 -0
  89. package/skills/uipath-maestro-flow/references/author/plugins/terminate/impl.md +48 -0
  90. package/skills/uipath-maestro-flow/references/author/plugins/terminate/planning.md +29 -0
  91. package/skills/uipath-maestro-flow/references/author/plugins/transform/impl.md +252 -0
  92. package/skills/uipath-maestro-flow/references/author/plugins/transform/planning.md +47 -0
  93. package/skills/uipath-maestro-flow/references/diagnose/CAPABILITY.md +73 -0
  94. package/skills/uipath-maestro-flow/references/diagnose/failure-modes.md +353 -0
  95. package/skills/uipath-maestro-flow/references/diagnose/troubleshooting-guide.md +174 -0
  96. package/skills/uipath-maestro-flow/references/evaluate/CAPABILITY.md +134 -0
  97. package/skills/uipath-maestro-flow/references/evaluate/commands-reference.md +376 -0
  98. package/skills/uipath-maestro-flow/references/evaluate/eval-sets-guide.md +227 -0
  99. package/skills/uipath-maestro-flow/references/evaluate/evaluators-guide.md +143 -0
  100. package/skills/uipath-maestro-flow/references/evaluate/running-guide.md +215 -0
  101. package/skills/uipath-maestro-flow/references/evaluate/upload-safety.md +94 -0
  102. package/skills/uipath-maestro-flow/references/operate/CAPABILITY.md +77 -0
  103. package/skills/uipath-maestro-flow/references/operate/manage.md +39 -0
  104. package/skills/uipath-maestro-flow/references/operate/run.md +121 -0
  105. package/skills/uipath-maestro-flow/references/operate/ship.md +57 -0
  106. package/skills/uipath-maestro-flow/references/shared/action-nodes.md +100 -0
  107. package/skills/uipath-maestro-flow/references/shared/cli-commands.md +269 -0
  108. package/skills/uipath-maestro-flow/references/shared/cli-conventions.md +178 -0
  109. package/skills/uipath-maestro-flow/references/shared/file-format.md +582 -0
  110. package/skills/uipath-maestro-flow/references/shared/node-output-wiring.md +86 -0
  111. package/skills/uipath-maestro-flow/references/shared/ux-narration-and-todos.md +113 -0
  112. package/skills/uipath-maestro-flow/references/shared/variables-and-expressions.md +787 -0
  113. package/skills/uipath-platform/references/integration-service/activities.md +2 -2
  114. package/skills/uipath-platform/references/integration-service/activity-generation.md +8 -1
  115. package/skills/uipath-platform/references/integration-service/triggers.md +1 -3
  116. package/version-manifest.json +1 -1
  117. package/skills/uipath-maestro-flow/examples/AquariumSafetyStop.flow.ts +0 -26
  118. package/skills/uipath-maestro-flow/examples/ArchiveCardExtract.flow.ts +0 -38
  119. package/skills/uipath-maestro-flow/examples/BakeOffEntryForm.flow.ts +0 -27
  120. package/skills/uipath-maestro-flow/examples/BeeHiveLedger.flow.ts +0 -61
  121. package/skills/uipath-maestro-flow/examples/BeltProgression.flow.ts +0 -53
  122. package/skills/uipath-maestro-flow/examples/BirdCountLookup.flow.ts +0 -24
  123. package/skills/uipath-maestro-flow/examples/ClubDirectory.flow.ts +0 -56
  124. package/skills/uipath-maestro-flow/examples/ConcertSoundcheck.flow.ts +0 -59
  125. package/skills/uipath-maestro-flow/examples/DoorbellLog.flow.ts +0 -45
  126. package/skills/uipath-maestro-flow/examples/FestivalMapScaffold.flow.ts +0 -22
  127. package/skills/uipath-maestro-flow/examples/FieldTripQuickForm.flow.ts +0 -45
  128. package/skills/uipath-maestro-flow/examples/FossilCatalogEnrich.flow.ts +0 -26
  129. package/skills/uipath-maestro-flow/examples/GallerySubmission.flow.ts +0 -67
  130. package/skills/uipath-maestro-flow/examples/GreenhouseWatering.flow.ts +0 -39
  131. package/skills/uipath-maestro-flow/examples/HarbourRadioLine.flow.ts +0 -31
  132. package/skills/uipath-maestro-flow/examples/HerbariumDispatch.flow.ts +0 -34
  133. package/skills/uipath-maestro-flow/examples/KilnReview.flow.ts +0 -38
  134. package/skills/uipath-maestro-flow/examples/LibraryDeskChat.flow.ts +0 -39
  135. package/skills/uipath-maestro-flow/examples/LighthouseSignal.flow.ts +0 -30
  136. package/skills/uipath-maestro-flow/examples/MeteorShowerPages.flow.ts +0 -39
  137. package/skills/uipath-maestro-flow/examples/NeighborhoodWalkPlanner.flow.ts +0 -27
  138. package/skills/uipath-maestro-flow/examples/ObservatorySeeing.flow.ts +0 -51
  139. package/skills/uipath-maestro-flow/examples/OralHistoryDigest.flow.ts +0 -31
  140. package/skills/uipath-maestro-flow/examples/PlanetariumConfirmation.flow.ts +0 -34
  141. package/skills/uipath-maestro-flow/examples/PlantNameAdvisor.flow.ts +0 -28
  142. package/skills/uipath-maestro-flow/examples/PostcardCaption.flow.ts +0 -44
  143. package/skills/uipath-maestro-flow/examples/PotteryStudioCallback.flow.ts +0 -41
  144. package/skills/uipath-maestro-flow/examples/RecipeScaler.flow.ts +0 -62
  145. package/skills/uipath-maestro-flow/examples/SeedPacketReader.flow.ts +0 -49
  146. package/skills/uipath-maestro-flow/examples/TideTableConverter.flow.ts +0 -35
  147. package/skills/uipath-maestro-flow/examples/TrailLogSummary.flow.ts +0 -75
  148. package/skills/uipath-maestro-flow/examples/WorkshopInventory.flow.ts +0 -27
  149. package/skills/uipath-maestro-flow/examples/bindings.json +0 -85
  150. package/skills/uipath-maestro-flow/references/CLI-LOOP.md +0 -309
  151. package/skills/uipath-maestro-flow/references/agent-resources.md +0 -74
  152. package/skills/uipath-maestro-flow/references/agent.md +0 -175
  153. package/skills/uipath-maestro-flow/references/agentic-process.md +0 -41
  154. package/skills/uipath-maestro-flow/references/api-workflow.md +0 -29
  155. package/skills/uipath-maestro-flow/references/author.md +0 -178
  156. package/skills/uipath-maestro-flow/references/batch-transform.md +0 -23
  157. package/skills/uipath-maestro-flow/references/bindings.md +0 -178
  158. package/skills/uipath-maestro-flow/references/branch.md +0 -18
  159. package/skills/uipath-maestro-flow/references/brownfield.md +0 -152
  160. package/skills/uipath-maestro-flow/references/connector-params.md +0 -624
  161. package/skills/uipath-maestro-flow/references/conversational.md +0 -77
  162. package/skills/uipath-maestro-flow/references/data-fabric.md +0 -268
  163. package/skills/uipath-maestro-flow/references/delay.md +0 -26
  164. package/skills/uipath-maestro-flow/references/diagnose.md +0 -141
  165. package/skills/uipath-maestro-flow/references/document-pipeline.md +0 -47
  166. package/skills/uipath-maestro-flow/references/error-handling.md +0 -75
  167. package/skills/uipath-maestro-flow/references/evaluate.md +0 -168
  168. package/skills/uipath-maestro-flow/references/event-trigger.md +0 -155
  169. package/skills/uipath-maestro-flow/references/form-trigger.md +0 -41
  170. package/skills/uipath-maestro-flow/references/hitl.md +0 -169
  171. package/skills/uipath-maestro-flow/references/http.md +0 -105
  172. package/skills/uipath-maestro-flow/references/inline-agent.md +0 -132
  173. package/skills/uipath-maestro-flow/references/ixp.md +0 -167
  174. package/skills/uipath-maestro-flow/references/loops.md +0 -77
  175. package/skills/uipath-maestro-flow/references/manual-trigger.md +0 -39
  176. package/skills/uipath-maestro-flow/references/operate.md +0 -204
  177. package/skills/uipath-maestro-flow/references/or-processes.md +0 -91
  178. package/skills/uipath-maestro-flow/references/parallel-merge.md +0 -21
  179. package/skills/uipath-maestro-flow/references/placeholder.md +0 -70
  180. package/skills/uipath-maestro-flow/references/published-function.md +0 -66
  181. package/skills/uipath-maestro-flow/references/queue.md +0 -53
  182. package/skills/uipath-maestro-flow/references/return.md +0 -20
  183. package/skills/uipath-maestro-flow/references/rpa-workflow.md +0 -27
  184. package/skills/uipath-maestro-flow/references/scheduled-trigger.md +0 -34
  185. package/skills/uipath-maestro-flow/references/script.md +0 -52
  186. package/skills/uipath-maestro-flow/references/subflow.md +0 -33
  187. package/skills/uipath-maestro-flow/references/summarize.md +0 -20
  188. package/skills/uipath-maestro-flow/references/switch.md +0 -20
  189. package/skills/uipath-maestro-flow/references/terminate.md +0 -22
  190. package/skills/uipath-maestro-flow/references/transform.md +0 -32
  191. package/skills/uipath-maestro-flow/references/voice.md +0 -70
@@ -0,0 +1,252 @@
1
+ # Transform Node — Implementation
2
+
3
+ ## Node Types and Registry Validation
4
+
5
+ Supported node types:
6
+
7
+ - `core.action.transform` — generic; chains operations
8
+ - `core.action.transform.filter` — filter only
9
+ - `core.action.transform.map` — map only
10
+ - `core.action.transform.group-by` — group-by only
11
+
12
+ Run:
13
+
14
+ ```bash
15
+ uip maestro flow registry get core.action.transform --output json
16
+ uip maestro flow registry get core.action.transform.filter --output json
17
+ uip maestro flow registry get core.action.transform.map --output json
18
+ uip maestro flow registry get core.action.transform.group-by --output json
19
+ ```
20
+
21
+ Confirm each definition has input port `input`, output ports `output` and `error`, and required inputs `collection` and `operations`. Set each instance's `typeVersion` to the matching response's `version`; do not hardcode it.
22
+
23
+ For add, delete, and wiring procedures, see [editing-operations.md](../../editing-operations.md). Use the node-specific `inputs` and `model` structures below.
24
+
25
+ Every transform uses this output schema:
26
+
27
+ ```json
28
+ "outputs": {
29
+ "output": {
30
+ "type": "object",
31
+ "description": "The return value of the transform",
32
+ "source": "=result.response",
33
+ "var": "output"
34
+ },
35
+ "error": {
36
+ "type": "object",
37
+ "description": "Error information if the transform fails",
38
+ "source": "=Error",
39
+ "var": "error"
40
+ }
41
+ }
42
+ ```
43
+
44
+ ## Collection Input and Output Shape
45
+
46
+ `inputs.collection` is a transform-specific path containing the array. Use a plain path:
47
+
48
+ ```json
49
+ "collection": "$vars.orders.output.items"
50
+ ```
51
+
52
+ Never use `=js:` or an inline array literal:
53
+
54
+ ```json
55
+ "collection": "=js:$vars.orders.output.items"
56
+ ```
57
+
58
+ ```json
59
+ "collection": "=js:[{\"title\":\"Example\"}]"
60
+ ```
61
+
62
+ The runtime resolves the path as a lookup such as `vars.orders.output.items`; `=js:` and inline JSON/JS literals resolve to an empty collection. For static data, put the array in a workflow variable `defaultValue` or emit it from an upstream static-data/script node, then reference that variable or node output.
63
+
64
+ A transform's `$vars.<transformNode>.output` is a bare array: filter returns surviving elements, map returns mapped elements, and group-by returns group objects (`{<groupByField>, <alias>…}`). Chain transforms from `.output`, never `.output.items`; `.items` becomes `undefined` and silently yields empty input. `.items`/`.body.items` below refer only to HTTP-body or variable shapes.
65
+
66
+ ```json
67
+ "collection": "$vars.filterHighViewDays.output"
68
+ ```
69
+
70
+ In a Script node, read an element field as `$vars.groupByNode.output[0].totalViews`.
71
+
72
+ ## Generic Transform (`core.action.transform`)
73
+
74
+ Operations run in order; each feeds the next.
75
+
76
+ ```json
77
+ {
78
+ "id": "transformChain",
79
+ "type": "core.action.transform",
80
+ "typeVersion": "<DEFINITION_VERSION>",
81
+ "display": { "label": "Process Employees" },
82
+ "inputs": {
83
+ "collection": "$vars.fetchData.output.body.employees",
84
+ "operations": [
85
+ {
86
+ "id": "op1", "type": "filter",
87
+ "config": {
88
+ "operation": "and",
89
+ "filters": [
90
+ { "id": "f1", "field": "active", "condition": "equals", "value": true }
91
+ ]
92
+ }
93
+ },
94
+ {
95
+ "id": "op2", "type": "map",
96
+ "config": {
97
+ "keepOriginalFields": false,
98
+ "mappings": [
99
+ { "id": "m1", "field": "name", "transformation": "uppercase", "renameTo": "fullName" },
100
+ { "id": "m2", "field": "salary", "transformation": "copy", "renameTo": "" }
101
+ ]
102
+ }
103
+ }
104
+ ]
105
+ },
106
+ "outputs": {
107
+ "output": { "type": "object", "description": "The return value of the transform", "source": "=result.response", "var": "output" },
108
+ "error": { "type": "object", "description": "Error information if the transform fails", "source": "=Error", "var": "error" }
109
+ }
110
+ }
111
+ ```
112
+
113
+ ## Filter (`core.action.transform.filter`)
114
+
115
+ ```json
116
+ {
117
+ "id": "filterActive",
118
+ "type": "core.action.transform.filter",
119
+ "typeVersion": "<DEFINITION_VERSION>",
120
+ "display": { "label": "Filter Active Orders" },
121
+ "inputs": {
122
+ "collection": "$vars.orders.output.items",
123
+ "operations": [
124
+ {
125
+ "id": "op1", "type": "filter",
126
+ "config": {
127
+ "operation": "and",
128
+ "filters": [
129
+ { "id": "f1", "field": "status", "condition": "equals", "value": "active" },
130
+ { "id": "f2", "field": "amount", "condition": "greater_equal", "value": 100 }
131
+ ]
132
+ }
133
+ }
134
+ ]
135
+ },
136
+ "outputs": {
137
+ "output": { "type": "object", "description": "The return value of the transform", "source": "=result.response", "var": "output" },
138
+ "error": { "type": "object", "description": "Error information if the transform fails", "source": "=Error", "var": "error" }
139
+ }
140
+ }
141
+ ```
142
+
143
+ Conditions: `equals`, `not_equals`, `greater_than`, `less_than`, `greater_equal`, `less_equal`, `contains`, `starts_with`, `ends_with`, `is_null`, `is_not_null`.
144
+
145
+ Operations: `and` (all conditions), `or` (any condition).
146
+
147
+ `filter.value` is literal-only. It does not evaluate `$vars`, `=js:`, or brace templates; `"$vars.threshold"`, `"=js:$vars.threshold"`, and `"{$vars.threshold}"` are compared as literal strings and silently produce an empty result. Use literal scalars such as `500`, `"active"`, or `true`. For dynamic thresholds, filter in a [Script](../script/impl.md) node or hoist the literal into the flow design. `field` accepts dot-paths such as `order.amount`.
148
+
149
+ ## Map (`core.action.transform.map`)
150
+
151
+ ```json
152
+ {
153
+ "id": "mapFields",
154
+ "type": "core.action.transform.map",
155
+ "typeVersion": "<DEFINITION_VERSION>",
156
+ "display": { "label": "Normalize Names" },
157
+ "inputs": {
158
+ "collection": "$vars.rawData.output.items",
159
+ "operations": [
160
+ {
161
+ "id": "op1", "type": "map",
162
+ "config": {
163
+ "keepOriginalFields": false,
164
+ "mappings": [
165
+ { "id": "m1", "field": "firstName", "transformation": "uppercase", "renameTo": "name" },
166
+ { "id": "m2", "field": "email", "transformation": "lowercase", "renameTo": "" },
167
+ { "id": "m3", "field": "dept", "transformation": "copy", "renameTo": "department" }
168
+ ]
169
+ }
170
+ }
171
+ ]
172
+ },
173
+ "outputs": {
174
+ "output": { "type": "object", "description": "The return value of the transform", "source": "=result.response", "var": "output" },
175
+ "error": { "type": "object", "description": "Error information if the transform fails", "source": "=Error", "var": "error" }
176
+ }
177
+ }
178
+ ```
179
+
180
+ Transformations: `copy`, `uppercase`, `lowercase`, `trim`.
181
+
182
+ `keepOriginalFields: false` outputs only mapped fields; `true` passes through unmapped fields. `renameTo` changes the field name; `""` keeps the original name.
183
+
184
+ ## Group By (`core.action.transform.group-by`)
185
+
186
+ ```json
187
+ {
188
+ "id": "groupByDept",
189
+ "type": "core.action.transform.group-by",
190
+ "typeVersion": "<DEFINITION_VERSION>",
191
+ "display": { "label": "Group by Department" },
192
+ "inputs": {
193
+ "collection": "$vars.employees.output.items",
194
+ "operations": [
195
+ {
196
+ "id": "op1", "type": "groupBy",
197
+ "config": {
198
+ "groupByField": "department",
199
+ "aggregations": [
200
+ { "id": "a1", "field": "", "operation": "count", "alias": "headcount" },
201
+ { "id": "a2", "field": "salary", "operation": "sum", "alias": "totalSalary" },
202
+ { "id": "a3", "field": "salary", "operation": "average", "alias": "avgSalary" },
203
+ { "id": "a4", "field": "salary", "operation": "min", "alias": "minSalary" },
204
+ { "id": "a5", "field": "salary", "operation": "max", "alias": "maxSalary" },
205
+ { "id": "a6", "field": "name", "operation": "collect", "alias": "names" },
206
+ { "id": "a7", "field": "name", "operation": "first", "alias": "firstHire" }
207
+ ]
208
+ }
209
+ }
210
+ ]
211
+ },
212
+ "outputs": {
213
+ "output": { "type": "object", "description": "The return value of the transform", "source": "=result.response", "var": "output" },
214
+ "error": { "type": "object", "description": "Error information if the transform fails", "source": "=Error", "var": "error" }
215
+ }
216
+ }
217
+ ```
218
+
219
+ Aggregation operations:
220
+
221
+ | Operation | Description | `field` required |
222
+ | --- | --- | --- |
223
+ | `count` | Number of items in group | No |
224
+ | `sum` | Sum of numeric field | Yes |
225
+ | `average` | Average of numeric field | Yes |
226
+ | `min` | Minimum value | Yes |
227
+ | `max` | Maximum value | Yes |
228
+ | `collect` | Array of all field values | Yes |
229
+ | `first` | First item's field value | Yes |
230
+ | `last` | Last item's field value | Yes |
231
+
232
+ **One figure over the whole collection.** Aggregations are group-scoped, so a grand total needs a single group: set `groupByField: ""`. The node returns a one-element array; read the aggregate at `output[0].<alias>`.
233
+
234
+ ```json
235
+ { "id": "op1", "type": "groupBy", "config": {
236
+ "groupByField": "",
237
+ "aggregations": [{ "id": "a1", "field": "views", "operation": "sum", "alias": "total" }] } }
238
+ ```
239
+
240
+ The group object also carries a `value` key holding the first row — read the alias, not `value`.
241
+
242
+ ## Debug
243
+
244
+ | Error | Cause | Fix |
245
+ | --- | --- | --- |
246
+ | Filter passes all items through | Wrong condition name, such as `greater` instead of `greater_than` | Use exact names: `equals`, `not_equals`, `greater_than`, `less_than`, `greater_equal`, `less_equal`, `contains`, `starts_with`, `ends_with`, `is_null`, `is_not_null` |
247
+ | Filter silently returns empty array | `value` contains an unresolved expression; Transform compares it as a literal string | Use a literal scalar such as `"value": 500`; for dynamic thresholds, use a Script node |
248
+ | Collection is null/empty | `collection` uses `=js:` or an inline array literal | Use a plain path such as `"$vars.loadCatalog.output.catalog"` or `"$vars.catalog"`; store static arrays in a variable default or upstream node |
249
+ | Map output missing fields | `keepOriginalFields: false` and the field is unmapped | Add the field to mappings or set `keepOriginalFields: true` |
250
+ | GroupBy produces empty groups | No items match `groupByField` | Check that `groupByField` matches the actual data fields |
251
+ | Need one total across every row, not per group | Aggregations are group-scoped | Set `groupByField: ""` for a single group; read `output[0].<alias>` |
252
+ | Chained transform gets empty input although upstream had rows | Used `$vars.<transform>.output.items`; transform output is a bare array | Use `$vars.<transform>.output`; see [Output Shape](#collection-input-and-output-shape) |
@@ -0,0 +1,47 @@
1
+ # Transform Node — Planning
2
+
3
+ ## Node Types
4
+
5
+ | Node Type | Description |
6
+ | --- | --- |
7
+ | `core.action.transform` | Chain multiple operations (filter, map, groupBy) in a single node |
8
+ | `core.action.transform.filter` | Filter an array based on conditions |
9
+ | `core.action.transform.map` | Transform each item (rename, convert fields) |
10
+ | `core.action.transform.group-by` | Group items by a field with aggregations |
11
+
12
+ ## When to Use
13
+
14
+ Use Transform nodes for declarative map, filter, or group-by on a collection — no custom code needed.
15
+
16
+ ### Selection Heuristics
17
+
18
+ | Situation | Use Transform? |
19
+ | --- | --- |
20
+ | Standard filter/map/group-by on an array | Yes |
21
+ | Custom logic, string manipulation, computation | No — use [Script](../script/planning.md) |
22
+ | Iterate and perform actions per item (API calls, etc.) | No — use [Loop](../loop/planning.md) |
23
+
24
+ ## Ports
25
+
26
+ All transform variants share the same port layout:
27
+
28
+ | Input Port | Output Port(s) |
29
+ | --- | --- |
30
+ | `input` | `output`, `error` |
31
+
32
+ The `error` port is the implicit error port shared with all action nodes — see [Implicit error port on action nodes](../../../shared/file-format.md#implicit-error-port-on-action-nodes).
33
+
34
+ ## Output Variables
35
+
36
+ - `$vars.{nodeId}.output` — the transformed collection
37
+
38
+ ## Key Inputs
39
+
40
+ | Input | Required | Description |
41
+ | --- | --- | --- |
42
+ | `collection` | Yes | `$vars` reference to the input array |
43
+ | `operations` | Yes | Array of operation objects (filter, map, or groupBy) |
44
+
45
+ > The `collection` input accepts `$vars` references directly. Unlike condition expressions, the `=js:` prefix is optional — both `$vars.x` and `=js:$vars.x` work.
46
+
47
+ > **Filter `value` is literal-only.** `core.action.transform.filter`'s per-filter `value` field does NOT resolve `$vars.x`, `=js:`, or brace-template expressions — any such expression ships as a string literal and the filter silently returns an empty array. Only literal scalars work (`500`, `"active"`, `true`). If the threshold must be dynamic, move the filter into a [Script](../script/planning.md) node; keep Transform for static-threshold filters, maps, and group-by. See [impl.md](impl.md#filter-coreactiontransformfilter) for details.
@@ -0,0 +1,73 @@
1
+ # Diagnose — Investigate failed or misbehaving flow runs
2
+
3
+ Capability index for postmortem on a failed `flow debug` or deployed process run. Diagnose owns the diagnostic priority ladder (incidents → runtime variables → flow correlation → traces) and recurring failure modes (missing `=js:`, misshapen nodes, HITL-stuck, reused reference IDs, single-nested layout). Requires `uip login`.
4
+
5
+ > **Navigation.** Diagnose follows Operate when a run faults and points to Author for the fix. Re-running and lifecycle are in [operate/CAPABILITY.md](../operate/CAPABILITY.md); building or editing `.flow` files is in [author/CAPABILITY.md](../author/CAPABILITY.md).
6
+ >
7
+ > **Inherited rules:** use `--output json` and prefer `--output-filter` for extraction; do not run `flow debug` without consent; never invoke other skills automatically; use the dropdown question pattern; provide plain-English narration and a granular progress list only when the user asks for verbosity, and remain silent by default. These rules apply in addition to the rules below.
8
+
9
+ ## When to use this capability
10
+
11
+ - Triage a failed `flow debug` or deployed process run.
12
+ - Read incidents for the error category, message, and faulting element.
13
+ - Inspect runtime variables at failure time.
14
+ - Map a faulting element ID to a `.flow` node.
15
+ - Stream verbose execution traces.
16
+ - Recognize known failures, including missing `=js:` and format skips.
17
+
18
+ ## Critical rules
19
+
20
+ 0. **Read the faulted `flow debug` response before any other call — never re-run debug to "see the error again".** See [troubleshooting-guide.md — Step 0](troubleshooting-guide.md#step-0--read-the-cause-in-the-debug-output-you-already-have).
21
+ 1. **Investigate in order: incidents → variables → flow correlation → traces.** Stop when the root cause is identified; traces are verbose and last-resort. See [troubleshooting-guide.md](troubleshooting-guide.md).
22
+ 2. **Always include `--folder-key <FOLDER_KEY>` (`-f` shorthand) on `instance` and `incident get` commands.** Run `uip or folders list --output json` to obtain the folder key, or obtain it from the job/process context. See [shared/cli-conventions.md](../shared/cli-conventions.md#6---folder-key-requirement).
23
+ 3. **Never call underlying APIs directly.** Run supported `uip` CLI commands; `instance` and `incident` are the diagnostic surface.
24
+ 4. **When the local `.flow` may differ from the deployed BPMN, fetch the deployed asset.** Run `uip maestro flow instance asset <INSTANCE_ID> --folder-key <FOLDER_KEY> --output json` and correlate against what actually ran.
25
+
26
+ ## Workflow
27
+
28
+ | Journey | Read |
29
+ | --- | --- |
30
+ | Triage a failed run (priority ladder) | [troubleshooting-guide.md](troubleshooting-guide.md) |
31
+ | Look up a known failure mode | [failure-modes.md](failure-modes.md) |
32
+
33
+ ## Common tasks
34
+
35
+ | Need | Read |
36
+ | --- | --- |
37
+ | Triage a failed flow run | [troubleshooting-guide.md](troubleshooting-guide.md) |
38
+ | An in-solution chat agent shows as autonomous | The registry builds that node from the sibling project's `agent.json` and falls back to autonomous when it cannot read it. `--log-level debug` names the reason ("Unparseable agent.json" / "No readable agent.json"); nothing else reports it. See [conversational-agent/impl.md](../author/plugins/conversational-agent/impl.md#resolve-the-agent) |
39
+ | A chat flow "hangs" or times out during debug | Not a fault. `flow debug` hands a `core.trigger.conversation` flow off rather than running it, and a flow parked on `wait-for-message` is waiting for a user message that no headless run will send. Drive it from a chat UI — Studio Web or the UiPath Maestro VS Code extension. See [conversational-agent/impl.md](../author/plugins/conversational-agent/impl.md#debug--the-cli-hands-off) |
40
+ | Read the cause out of a faulted `flow debug` response | [troubleshooting-guide.md — Step 0](troubleshooting-guide.md#step-0--read-the-cause-in-the-debug-output-you-already-have) |
41
+ | Find the error message and faulting element | [troubleshooting-guide.md — Step 2 Fetch incidents](troubleshooting-guide.md#step-2--fetch-incidents) |
42
+ | See data state at failure time | [troubleshooting-guide.md — Step 3 Fetch runtime variable state](troubleshooting-guide.md#step-3--fetch-runtime-variable-state) |
43
+ | Map a faulting element ID to a `.flow` node | [troubleshooting-guide.md — Step 4 Correlate with the flow definition](troubleshooting-guide.md#step-4--correlate-with-the-flow-definition) |
44
+ | Pull verbose execution timeline | [troubleshooting-guide.md — Step 5 Traces](troubleshooting-guide.md#step-5--traces-last-resort) |
45
+ | Identify a `vars.X.output.Y` literal-string failure | [failure-modes.md — `=js:` prefix missing](failure-modes.md#js-prefix-missing) |
46
+ | Identify misshapen Studio Web nodes | [failure-modes.md — misshapen nodes](failure-modes.md#misshapen-rectangle-nodes-in-studio-web) |
47
+ | Diagnose a hung HITL node | [failure-modes.md — HITL outcome port unwired](failure-modes.md#hitl-outcome-port-unwired) |
48
+ | Diagnose a connector silent fault | [failure-modes.md — Reused reference ID](failure-modes.md#reused-reference-id--cross-connection-id-leakage) |
49
+ | Diagnose a publish/upload structural error | [failure-modes.md — Single-nested layout](failure-modes.md#single-nested-layout) |
50
+ | Diagnose `Folder does not exist` on a resource node | [failure-modes.md — Missing `bindings[]` on resource node](failure-modes.md#missing-bindings-on-resource-node) |
51
+ | Triage "validate passes, debug faults" | [failure-modes.md — `flow validate` passes, `flow debug` faults](failure-modes.md#flow-validate-passes-flow-debug-faults) |
52
+ | Look up `instance` / `incident` CLI syntax | [shared/cli-commands.md](../shared/cli-commands.md) + [troubleshooting-guide.md — CLI command reference](troubleshooting-guide.md#cli-command-reference) |
53
+
54
+ ## Anti-patterns
55
+
56
+ - **Do not start with traces.** Start with incidents (Step 2), then variables, flow correlation, and traces only if needed.
57
+ - **Do not call underlying APIs directly.** Run `uip maestro flow instance` / `incident` / `job` subcommands.
58
+ - **Do not assume the local `.flow` matches the deployed BPMN.** If a republish, branch, or solution-version difference is possible, run `instance asset` before correlating IDs.
59
+ - **Do not omit `--folder-key`** from `instance` or `incident get`; the command rejects the request before reaching the API.
60
+
61
+ ## References
62
+
63
+ ### Diagnose-scoped
64
+
65
+ - [troubleshooting-guide.md](troubleshooting-guide.md) — diagnostic priority ladder (incidents → variables → flow correlation → traces) and full `instance` / `incident` CLI reference
66
+ - [failure-modes.md](failure-modes.md) — recurring failures: missing `=js:`, misshapen nodes, HITL-stuck, reused reference IDs, single-nested layout, and "validate passes / debug faults"
67
+
68
+ ### Cross-capability (shared)
69
+
70
+ - [shared/cli-commands.md](../shared/cli-commands.md) — flat CLI lookup including `instance` / `incident` / `job` subcommands
71
+ - [shared/cli-conventions.md](../shared/cli-conventions.md) — `--folder-key` requirement, login state, JSON output shape
72
+ - [shared/file-format.md](../shared/file-format.md) — correlate faulting element IDs to `.flow` nodes
73
+ - [shared/node-output-wiring.md](../shared/node-output-wiring.md) — referenced from the `=js:` prefix-missing failure mode