@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
@@ -66,7 +66,7 @@ The **Operation** field on trigger activities indicates the trigger type:
66
66
 
67
67
  Some IS activities — most notably **List All Records** and other list/query operations — accept a server-side filter expressed in **CEQL** (Connector Expression Query Language). As with trigger filters (which compile to JMESPath), CEQL filters are authored as a **structured filter tree** and the CLI compiles them to a CEQL string. Authoring as a tree keeps the CLI and Studio Web in lockstep so the activity round-trips cleanly when re-opened in SW.
68
68
 
69
- **Never hand-write the CEQL string** outside a builder-SDK Flow. The tree is the only authored form; the grammar below describes what the compiler emits, so you can read a compiled query and recognize a malformed one. **A builder-SDK (`.flow.ts`) Flow is the exception:** there you write the CEQL string and the SDK derives the tree — see [connector-params.md § Structured filters (CEQL)](../../../uipath-maestro-flow/references/connector-params.md#structured-filters-ceql).
69
+ **Never hand-write the CEQL string.** The tree is the only authored form; the grammar below describes what the compiler emits, so you can read a compiled query and recognize a malformed one. For a connector node in a Maestro flow, follow the filter-tree step in [uipath-maestro-flow — connector/impl.md Step 6a](../../../uipath-maestro-flow/references/author/plugins/connector/impl.md), which discovers the FilterBuilder parameter name from the node registry.
70
70
 
71
71
  ### Contract — three signals from IS metadata
72
72
 
@@ -212,7 +212,7 @@ Logical operators between siblings:
212
212
 
213
213
  Connectors with extensible/custom fields (Jira project+issuetype → custom Jira fields, Mailchimp list_id → audience merge fields, Salesforce custom objects) expose `Api`-type entries under `objectActions[]`. Each entry's `apiConfiguration.url`/`body` carries `{token}` placeholders naming the parent fields. The runtime replays the ObjectAction with cached parent values to fetch the connector-specific custom-field schema.
214
214
 
215
- **For Maestro flows**, this lives on the activity node as `essentialConfiguration.customFieldsRequestDetails`. In a builder-SDK Flow, the `registry prepare` that `check` names creates it — see [connector-params.md § Schema-dynamic operations](../../../uipath-maestro-flow/references/connector-params.md#schema-dynamic-operations-the-parent-field-loop).
215
+ **For Maestro flows**, this lives on the activity node as `essentialConfiguration.customFieldsRequestDetails`. Authoring contract → [uipath-maestro-flow connector/impl.md Step 6c](../../../uipath-maestro-flow/references/author/plugins/connector/impl.md).
216
216
 
217
217
  Shape:
218
218
 
@@ -301,7 +301,14 @@ $WORK/<Name>.json the compiled activity metadata
301
301
 
302
302
  ## Putting it in a flow
303
303
 
304
- The builder-SDK Flow skill (`uipath-maestro-flow`) has no node for a generated activity: `rawNode` refuses every `uipath.connector.*` type, and `connector()` only takes catalog operations. Report that gap to the user rather than hand-editing the compiled `.flow`, and offer managed HTTP in connector mode ([http.md](../../../uipath-maestro-flow/references/http.md)) as the fallback.
304
+ The activity can be placed in a Maestro flow as a node of type
305
+ `uipath.connector.custom.<connector-key>.<slug>`. Nothing is published: `uip maestro
306
+ flow node add <file>.flow <type> --metadata $WORK/<Name>.json --scripts $WORK`
307
+ builds the node definition from the metadata and embeds every script in the node,
308
+ and `node configure` reads the metadata from the node. Keep `$WORK` until that
309
+ has run. The flow-side steps are the `uipath-maestro-flow` skill's
310
+ [connector/impl-inline.md](../../../uipath-maestro-flow/references/author/plugins/connector/impl-inline.md);
311
+ hand off to it rather than authoring the node from here.
305
312
 
306
313
  ## Keep the scripts readable
307
314
 
@@ -169,9 +169,7 @@ Trigger filters narrow which events fire the trigger (e.g. only emails from a sp
169
169
  These steps assume the consuming skill has already loaded the trigger's `filterFields.fields` array (the source command varies by surface — e.g. maestro-flow uses `flow registry get`).
170
170
 
171
171
  1. For each user-intent condition, pick a matching `name` from `filterFields.fields` — using an unknown field name will be rejected by the CLI at configure time.
172
- 2. Choose an operator based on the user's intent and the field type (see the operator table in the consuming skill — e.g. [uipath-maestro-flow event-trigger.md § Filter operators](../../../uipath-maestro-flow/references/event-trigger.md#filter-operators)).
173
- **Builder-SDK Flow (`.flow.ts`): stop after step 2.** Write `filters: [{ field: '<name>', <operator>: <value> }]` on `onEvent(...)` / `waitForEvent(...)` — see [event-trigger.md](../../../uipath-maestro-flow/references/event-trigger.md#filter-operators); `check` validates each field and operator. Steps 3–6 describe the classic structured tree.
174
-
172
+ 2. Choose an operator based on the user's intent and the field type (see the operator table in the consuming skill — e.g. [uipath-maestro-flow > connector-trigger](../../../uipath-maestro-flow/references/author/plugins/connector-trigger/impl.md#supported-operators)).
175
173
  3. Build one leaf per condition; place multiple conditions under the same `groupOperator` (`0` for AND, `1` for OR).
176
174
  4. If you need mixed AND/OR logic, use nested `groups` (same shape as the root tree).
177
175
  5. **Wrap string values in a `value` object** with `value`, `rawString` (verbatim user-entered text including quotes for strings), and `isLiteral` — passing a bare string fails validation. A filter-tree leaf operand may be dynamic (`isLiteral: false`, compiled to a `{var_…}` placeholder plus `filterVariables`), but `eventParameters` must be literals, because a trigger is evaluated before any flow run exists.
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "schemaVersion": 2,
3
- "skillsVersion": "1.204.0",
3
+ "skillsVersion": "1.204.1",
4
4
  "targetCli": "^1.204.0"
5
5
  }
@@ -1,26 +0,0 @@
1
- /**
2
- * CAPABILITY: terminate the whole run from a guard branch.
3
- *
4
- * Unlike `return`, terminate publishes no flow output and leaves no outgoing
5
- * path. It is appropriate when continuing the run would be unsafe.
6
- *
7
- * Generic scenario: stop an aquarium maintenance round when oxygen is too low.
8
- */
9
- import { flow, script, input, out, js, types } from '@uipath/maestro-builder-sdk';
10
-
11
- export default flow('aquarium-safety-stop')
12
- .name('AquariumSafetyStop')
13
- .version('1.0.0')
14
- .input({ tank: types.string, oxygenMgL: types.number })
15
- .output({ status: types.string })
16
- .branch(
17
- 'oxygenSafe',
18
- js`${input('oxygenMgL')} >= 6`,
19
- (safe) => safe
20
- .step('recordSafe', script({
21
- code: 'return "safe:" + $vars.start.output.tank + ":" + $vars.start.output.oxygenMgL;',
22
- }))
23
- .return({ status: out('recordSafe') }),
24
- (unsafe) => unsafe.terminate('stopRound', 'Oxygen below the safe maintenance threshold'),
25
- )
26
- .build();
@@ -1,38 +0,0 @@
1
- /**
2
- * CAPABILITY: extract structured fields with a published IxP project.
3
- *
4
- * The registry supplies the complete project node type. Extraction results use
5
- * the nested `ExtractionResult.ResultsDocument.Fields[]` schema.
6
- *
7
- * Generic scenario: read the catalog fields on a scanned archive card.
8
- */
9
- import { flow, ixpExtract, script, out, err, tmpl, types } from '@uipath/maestro-builder-sdk';
10
-
11
- const PROJECT =
12
- 'uipath.ixp.archive-cards.2f6e5c18-43ac-4d6a-91d5-c7b1240e8a36-74a4b14d-8ef5-4f24-a6aa-0d6f52a08c11';
13
-
14
- export default flow('archive-card-extract')
15
- .name('ArchiveCardExtract')
16
- .version('1.0.0')
17
- .input({ cardFile: types.file })
18
- .output({ result: types.string })
19
- .step('extractCard', ixpExtract({
20
- project: PROJECT,
21
- modelName: 'Archive Cards',
22
- name: 'Archive Cards',
23
- folderName: 'Shared',
24
- fileRef: out('start', 'cardFile'),
25
- }))
26
- .onError((handler) => handler.return({
27
- result: tmpl`could not extract archive card: ${err('extractCard', 'detail')}`,
28
- }))
29
- .step('readCard', script({
30
- code: `const doc = $vars.extractCard.output.ExtractionResult.ResultsDocument || {};
31
- const fields = Array.isArray(doc.Fields) ? doc.Fields : [];
32
- const first = fields.length ? fields[0] : {};
33
- return 'type:' + (doc.DocumentTypeName || '?')
34
- + ' fields:' + fields.length
35
- + ' first:' + (first.FieldName || '-') + '=' + ((first.Values || [])[0] ?? '-');`,
36
- }))
37
- .return({ result: out('readCard') })
38
- .build();
@@ -1,27 +0,0 @@
1
- /**
2
- * CAPABILITY: start a flow from a submitted FORM (`core.trigger.form`).
3
- *
4
- * `formTrigger()` takes no arguments. The form's fields are derived from
5
- * `.input()` — one field per input, required unless the input has a default —
6
- * so the submitted values ARE the flow's inputs and are read from
7
- * `$vars.start.output.<name>` exactly like a manual trigger's.
8
- *
9
- * Generic scenario: accept an entry into a village bake-off.
10
- *
11
- * No local rung renders a form; supply the values with `--input` when running.
12
- */
13
- import { flow, formTrigger, script, out, types } from '@uipath/maestro-builder-sdk';
14
-
15
- export default flow('bake-off-entry-form')
16
- .name('BakeOffEntryForm')
17
- .version('1.0.0')
18
- .input({ bakerName: types.string, category: types.string, servings: types.number })
19
- .output({ confirmation: types.string })
20
- .trigger(formTrigger())
21
- .step('confirmEntry', script({
22
- code:
23
- 'return $vars.start.output.bakerName + " entered " + $vars.start.output.category'
24
- + ' + " with " + String($vars.start.output.servings) + " servings";',
25
- }))
26
- .return({ confirmation: out('confirmEntry') })
27
- .build();
@@ -1,61 +0,0 @@
1
- /**
2
- * CAPABILITY: native Data Fabric CRUD — query, create, update, delete.
3
- *
4
- * `core.datafabric.*` covers all four verbs, so entity CRUD needs no connector
5
- * and no connection binding. "Data Service" is the SAME product under its
6
- * connector name (`uipath-uipath-dataservice`); route there only for what the
7
- * native family lacks — get-by-id, a query with a row limit, file record
8
- * fields, and Record Created / Updated events.
9
- *
10
- * `record` is exactly one of `{ byId }` or `{ fromRead: '<read step name>' }`.
11
- * Chaining a write off the read — as here — avoids carrying an id by hand.
12
- * Filters default to `operator: '='`; `or: true` joins a row with OR.
13
- *
14
- * `resultMode: 'multiple'` publishes the matches under `output.results` and
15
- * selects the read node's 1.4 definition; omit it and the step stays on 1.0 and
16
- * reads ONE record. A delete publishes NOTHING — take what you need off the
17
- * read step that found the record, before the delete.
18
- *
19
- * Nothing here is checked against the real entity: a column name that does not
20
- * exist is DROPPED rather than rejected, so the flow validates, runs green, and
21
- * writes nothing. Resolve columns with `uip df entities get` before trusting a
22
- * write, and never write a system column (`Id`, `CreateTime`, `CreatedBy`,
23
- * `UpdateTime`, `UpdatedBy`) — Data Fabric assigns those.
24
- *
25
- * Generic scenario: find a hive by its tag, record today's inspection, log it,
26
- * and clear the stale draft the inspection replaces.
27
- */
28
- import {
29
- flow, dataFabricRead, dataFabricCreate, dataFabricUpdate, dataFabricDelete,
30
- script, input, out, types,
31
- } from '@uipath/maestro-builder-sdk';
32
-
33
- export default flow('bee-hive-ledger')
34
- .name('BeeHiveLedger')
35
- .version('1.0.0')
36
- .input({ hiveTag: types.string, inspectedOn: types.string, draftId: types.string })
37
- .output({ ledgerNote: types.string })
38
- .step('findHive', dataFabricRead({
39
- entity: 'Hives',
40
- filters: [{ field: 'HiveTag', value: input('hiveTag') }],
41
- }))
42
- .step('recordInspection', dataFabricUpdate({
43
- entity: 'Hives',
44
- record: { fromRead: 'findHive' },
45
- set: { LastInspectedOn: input('inspectedOn'), Status: 'Inspected' },
46
- }))
47
- .step('logInspection', dataFabricCreate({
48
- entity: 'HiveInspections',
49
- values: { HiveTag: input('hiveTag'), InspectedOn: input('inspectedOn') },
50
- }))
51
- .step('dropDraft', dataFabricDelete({
52
- entity: 'HiveInspectionDrafts',
53
- record: { byId: input('draftId') },
54
- }))
55
- .step('noteLedger', script({
56
- code:
57
- 'return "hive " + $vars.start.output.hiveTag'
58
- + ' + " inspected on " + $vars.start.output.inspectedOn;',
59
- }))
60
- .return({ ledgerNote: out('noteLedger') })
61
- .build();
@@ -1,53 +0,0 @@
1
- /**
2
- * CAPABILITY: an N-way `.switch` — the many-armed sibling of `.branch`.
3
- *
4
- * A case matches when `<discriminant> === <case value>`, compared STRICTLY, so
5
- * the value's type counts (the ranks below are strings, so the cases are
6
- * strings). The optional last function is the DEFAULT arm, taken when nothing
7
- * matched. Each arm ends in its own `.return()`.
8
- *
9
- * Generic scenario (a dojo belt rank → what its next grading needs) so it reads
10
- * as "here is the switch shape", not as any task's expected output.
11
- */
12
- import { flow, script, input, out, types } from '@uipath/maestro-builder-sdk';
13
-
14
- export default flow('belt-progression')
15
- .name('BeltProgression')
16
- .version('1.0.0')
17
- .input({ rank: types.string })
18
- .output({ nextGrading: types.string })
19
-
20
- .switch(
21
- 'byRank',
22
- input('rank'),
23
- [
24
- {
25
- value: 'white',
26
- body: (b) =>
27
- b
28
- .step('whiteNext', script({ code: 'return "yellow: 8 basic forms";' }))
29
- .return({ nextGrading: out('whiteNext') }),
30
- },
31
- {
32
- value: 'yellow',
33
- body: (b) =>
34
- b
35
- .step('yellowNext', script({ code: 'return "green: 12 forms plus one spar";' }))
36
- .return({ nextGrading: out('yellowNext') }),
37
- },
38
- {
39
- value: 'green',
40
- body: (b) =>
41
- b
42
- .step('greenNext', script({ code: 'return "brown: 20 forms plus board break";' }))
43
- .return({ nextGrading: out('greenNext') }),
44
- },
45
- ],
46
- // Default arm — any rank not listed above.
47
- (other) =>
48
- other
49
- .step('unknownRank', script({ code: 'return "see the head instructor";' }))
50
- .return({ nextGrading: out('unknownRank') }),
51
- )
52
-
53
- .build();
@@ -1,24 +0,0 @@
1
- /**
2
- * CAPABILITY: run a deployed API workflow as one flow step.
3
- *
4
- * The workflow key selects the published node; name and folder locate the
5
- * deployment. Declared returns make its response readable and typed.
6
- *
7
- * Generic scenario: look up the latest bird count for a nature reserve.
8
- */
9
- import { flow, apiWorkflow, input, out, types } from '@uipath/maestro-builder-sdk';
10
-
11
- export default flow('bird-count-lookup')
12
- .name('BirdCountLookup')
13
- .version('1.0.0')
14
- .input({ reserve: types.string })
15
- .output({ count: types.number })
16
- .step('lookupCount', apiWorkflow({
17
- key: '3a6f4d22-8388-41c7-9f6a-6e4ea9154c32',
18
- name: 'Reserve Bird Count',
19
- folderPath: 'Shared/nature-observations',
20
- inputs: { reserve: input('reserve') },
21
- returns: { ObservedBirds: 'integer' },
22
- }))
23
- .return({ count: out('lookupCount', 'ObservedBirds') })
24
- .build();
@@ -1,56 +0,0 @@
1
- /**
2
- * CAPABILITY: call a CONNECTOR and read its LIST output as a TYPED COLLECTION.
3
- *
4
- * connector('<connector-key>', '<operation>', { …params }, { connection, folder })
5
- *
6
- * The operation is resolved from the curated library at compile — a typo'd
7
- * operation or field is caught there. A LIST output is a typed collection, so:
8
- *
9
- * $vars.groups.output[0].displayName // index an element, then a field
10
- * $vars.groups.output.length // a member of the collection
11
- * $vars.each.currentItem.displayName // the loop item, typed from the collection
12
- *
13
- * Reading a field off the collection WITHOUT indexing is refused — it is
14
- * undefined at run time. `connection` / `folder` are `bindings.json` ids (see
15
- * that file). Narrow a call with the operation's own `where` / `pageSize`
16
- * parameters — one call is one page.
17
- *
18
- * Generic scenario: build a community board of the org's interest groups.
19
- */
20
- import { flow, connector, out, script, js, types } from '@uipath/maestro-builder-sdk';
21
-
22
- const DIRECTORY = { connection: 'entra', folder: 'shared' } as const;
23
-
24
- export default flow('club-directory')
25
- .name('ClubDirectory')
26
- .output({ headline: types.string, firstContact: types.string })
27
-
28
- // The list call — one page of groups.
29
- .step('groups', connector(
30
- 'uipath-microsoft-azureactivedirectory', 'list-groups',
31
- {},
32
- DIRECTORY,
33
- ))
34
-
35
- // An ELEMENT's field and the collection's LENGTH, in one expression site.
36
- .step('headline', script({
37
- code: `
38
- return { text: $vars.groups.output.length + ' clubs; first up: '
39
- + $vars.groups.output[0].displayName };
40
- `,
41
- }))
42
-
43
- // Iterate the collection — `currentItem` is typed from what it holds, so the
44
- // body's field reads are CHECKED. A loop runs for effect: its results are not
45
- // readable after it, so what gates the read below is `check`.
46
- .loop('eachClub', out('groups'), (body) =>
47
- body.step('poster', script({
48
- code: 'return { line: "This week: " + $vars.eachClub.currentItem.displayName };',
49
- })),
50
- )
51
-
52
- .return({
53
- headline: out('headline', 'text'),
54
- firstContact: js`$vars.groups.output[0].mail`,
55
- })
56
- .build();
@@ -1,59 +0,0 @@
1
- /**
2
- * CAPABILITY: a `.parallel` fan-out and its join — the builder's only non-linear
3
- * shape.
4
- *
5
- * .parallel('mergeName', [
6
- * (a) => a.step(…).step(…), // an arm can be a CHAIN
7
- * (b) => b.step(…),
8
- * (c) => c.step(…),
9
- * ])
10
- * .step('after', …) // continues from the Merge, so it sees every arm
11
- *
12
- * The name passed to `.parallel` is the MERGE, not a fork — reading its own
13
- * output is an error (`PARALLEL_HAS_NO_OUTPUT`); read the arms' steps instead.
14
- * Locally the arms run sequentially, so a green run proves the fork/join graph
15
- * is right and every arm ran — not that they ran at the same instant. Use it for
16
- * genuinely independent work.
17
- *
18
- * Generic scenario: three independent pre-show checks at a concert. No `.input`:
19
- * the data is variable defaults so the example is self-contained.
20
- */
21
- import { flow, script, out, types } from '@uipath/maestro-builder-sdk';
22
-
23
- export default flow('concert-soundcheck')
24
- .name('ConcertSoundcheck')
25
- .version('1.0.0')
26
- .output({ verdict: types.string })
27
-
28
- .var('mics', types.object, { live: 6, expected: 6 })
29
- .var('monitors', types.object, { working: 4, total: 4 })
30
- .var('lightingCues', types.number, 18)
31
-
32
- // Three checks with nothing to say to each other → they fan out.
33
- .parallel('checksDone', [
34
- // An arm can be a CHAIN: count, then phrase it.
35
- (a) => a
36
- .step('micCount', script({
37
- code: 'return $vars.mics.live === $vars.mics.expected ? "all mics live" : ($vars.mics.expected - $vars.mics.live) + " mic(s) dead";',
38
- }))
39
- .step('micLine', script({
40
- code: 'return "mics: " + $vars.micCount.output;',
41
- })),
42
-
43
- (b) => b.step('monitorLine', script({
44
- code: 'return "monitors: " + ($vars.monitors.working === $vars.monitors.total ? "all good" : $vars.monitors.working + "/" + $vars.monitors.total);',
45
- })),
46
-
47
- (c) => c.step('lightingLine', script({
48
- code: 'return "lighting: " + ($vars.lightingCues > 0 ? $vars.lightingCues + " cues loaded" : "no cues");',
49
- })),
50
- ])
51
-
52
- // Runs after the join, so all three arms' outputs are readable here.
53
- .step('verdict', script({
54
- code: 'return [$vars.micLine.output, $vars.monitorLine.output, $vars.lightingLine.output].join("; ");',
55
- }))
56
-
57
- .return({ verdict: out('verdict') })
58
-
59
- .build();
@@ -1,45 +0,0 @@
1
- /**
2
- * CAPABILITY: a flow that STARTS on a connector event (`onEvent` trigger).
3
- *
4
- * .trigger(onEvent({
5
- * connector: 'uipath-http-webhook',
6
- * event: 'http-webhook',
7
- * connection: 'bWebhook', folder: 'bWebhookFolder', // bindings.json ids
8
- * }))
9
- *
10
- * There is no manual start: the event IS the start, and its payload arrives on
11
- * `$vars.start.output`. For the HTTP Webhook connector the CONNECTION is the
12
- * subscription's scope (each connection has its own URL), so there are no event
13
- * parameters and no `where` — binding the connection is what points the flow at
14
- * a URL at all. A local run subscribes to nothing; a start trigger's payload is
15
- * supplied AS FLOW INPUT for the dry run.
16
- *
17
- * Generic scenario: a smart doorbell posts to a webhook; the flow logs who rang.
18
- */
19
- import { flow, script, onEvent, out, types } from '@uipath/maestro-builder-sdk';
20
-
21
- export default flow('doorbell-log')
22
- .name('DoorbellLog')
23
- .version('1.0.0')
24
- .output({ entry: types.string })
25
-
26
- .trigger(onEvent({
27
- connector: 'uipath-http-webhook',
28
- event: 'http-webhook',
29
- connection: 'bWebhook',
30
- folder: 'bWebhookFolder',
31
- }))
32
-
33
- // `request_body` is TEXT — parse it, and handle a body that is not JSON, since
34
- // a webhook's body is whatever the caller sent.
35
- .step('readPing', script({
36
- code: `
37
- var raw = $vars.start.output.request_body;
38
- var who = "unknown";
39
- try { who = JSON.parse(raw).visitor || "unknown"; } catch (e) { who = "unparseable"; }
40
- return { entry: "doorbell: " + who + " rang" };
41
- `,
42
- }))
43
- .return({ entry: out('readPing', 'entry') })
44
-
45
- .build();
@@ -1,22 +0,0 @@
1
- /**
2
- * CAPABILITY: keep an unfinished step in a deployable graph with `mock()`.
3
- *
4
- * A placeholder publishes no value. Downstream work must use author-supplied
5
- * data until the real implementation replaces the placeholder.
6
- *
7
- * Generic scenario: reserve a map-rendering step while a festival layout is
8
- * still being designed.
9
- */
10
- import { flow, mock, script, out, types } from '@uipath/maestro-builder-sdk';
11
-
12
- export default flow('festival-map-scaffold')
13
- .name('FestivalMapScaffold')
14
- .version('1.0.0')
15
- .input({ mapName: types.string })
16
- .output({ note: types.string })
17
- .step('drawLegend', mock())
18
- .step('announceDraft', script({
19
- code: 'return "festival map draft: " + $vars.start.output.mapName;',
20
- }))
21
- .return({ note: out('announceDraft') })
22
- .build();
@@ -1,45 +0,0 @@
1
- /**
2
- * CAPABILITY: a `quick-form` human task with shown and answered fields, routed
3
- * per outcome.
4
- *
5
- * A shown field has `direction: 'input'` and a value from the flow. An answered
6
- * field has `direction: 'output'` and is read by its id after the reviewer picks
7
- * an outcome. The explicit variant emits the quick-form node family, which has
8
- * one exit per outcome (`outcome-approve`, `outcome-revise`): `.stepSwitch`
9
- * gives each one its own arm. A plain `.step()` after the task would instead
10
- * continue every outcome to that one next step.
11
- *
12
- * Generic scenario: a coordinator reviews a proposed field-trip destination.
13
- */
14
- import { flow, hitl, input, lit, out, types } from '@uipath/maestro-builder-sdk';
15
-
16
- export default flow('field-trip-quick-form')
17
- .name('FieldTripQuickForm')
18
- .version('1.0.0')
19
- .input({ destination: types.string })
20
- .output({ outcome: types.string, note: types.string })
21
- .stepSwitch('review', hitl({
22
- variant: 'quick-form',
23
- title: 'Review field trip',
24
- priority: 'Medium',
25
- fields: [
26
- {
27
- id: 'destination',
28
- label: 'Destination',
29
- type: 'text',
30
- direction: 'input',
31
- value: input('destination'),
32
- },
33
- {
34
- id: 'note',
35
- label: 'Coordinator note',
36
- type: 'text',
37
- direction: 'output',
38
- },
39
- ],
40
- outcomes: ['Approve', 'Revise'],
41
- }), [
42
- { value: 'Approve', body: (b) => b.return({ outcome: lit('approved'), note: out('review', 'note') }) },
43
- { value: 'Revise', body: (b) => b.return({ outcome: lit('sent back for revision'), note: out('review', 'note') }) },
44
- ])
45
- .build();
@@ -1,26 +0,0 @@
1
- /**
2
- * CAPABILITY: append AI-generated columns to an uploaded CSV with batch transform.
3
- *
4
- * The service receives a file attachment and returns a new file handle. Each
5
- * output column declares both the CSV header and the instruction for its cells.
6
- *
7
- * Generic scenario: add era and material labels to a fossil catalog export.
8
- */
9
- import { flow, batchTransform, out, types } from '@uipath/maestro-builder-sdk';
10
-
11
- export default flow('fossil-catalog-enrich')
12
- .name('FossilCatalogEnrich')
13
- .version('1.0.0')
14
- .input({ catalogFile: types.file })
15
- .output({ result: types.file })
16
- .step('labelSpecimens', batchTransform({
17
- attachment: out('start', 'catalogFile'),
18
- prompt: 'Classify each specimen from the catalog description.',
19
- outputColumns: [
20
- { name: 'Era', description: 'The geological era most consistent with the row' },
21
- { name: 'Material', description: 'The preserved material described by the row' },
22
- ],
23
- enableWebSearchGrounding: false,
24
- }))
25
- .return({ result: out('labelSpecimens') })
26
- .build();
@@ -1,67 +0,0 @@
1
- /**
2
- * CAPABILITY: a `hitl` human task, and routing on WHICH BUTTON was pressed.
3
- *
4
- * More than one outcome routes PER OUTCOME by default: the task leaves on an
5
- * `outcome-<slug>` exit, one per button, and `.stepSwitch` gives each of them an
6
- * arm. There is no tacit next step and no decision node in the middle — an arm
7
- * that does not `.return()` converges, which is why a flow VARIABLE plus one
8
- * `.return()` beats returning separately from every arm.
9
- *
10
- * fields[]: direction: 'input' → shown to the reviewer (bind to a value)
11
- * direction: 'output' → the reviewer fills it in (read by id)
12
- * outcomes[]: the buttons; each one gets an arm
13
- *
14
- * Generic scenario (an art-gallery submission going to a curator) so it teaches
15
- * the human-task shape rather than a task answer.
16
- */
17
- import { flow, hitl, script, input, out, v, lit, types } from '@uipath/maestro-builder-sdk';
18
-
19
- export default flow('gallery-submission')
20
- .name('GallerySubmission')
21
- .version('1.0.0')
22
- .input({ title: types.string, medium: types.string, widthCm: types.number, heightCm: types.number })
23
- .output({ outcome: types.string, note: types.string })
24
- // The arms' shared state. Its names are NOT the outputs' names: inputs, outputs
25
- // and vars share one list in the .flow, so `.var('outcome')` beside the `outcome`
26
- // output would be two globals with one id (`check`: VARIABLE_NAME_COLLISION).
27
- .var('decision', types.string)
28
- .var('curatorReply', types.string)
29
-
30
- // A derived fact for the curator to judge by, rather than raw dimensions.
31
- .step('wallSpace', script({
32
- code: 'return Math.round(($vars.start.output.widthCm * $vars.start.output.heightCm) / 100) + " dm2 of wall";',
33
- }))
34
-
35
- // One arm per button. Each assigns the shared variables; the single return reads them.
36
- .stepSwitch('curate', hitl({
37
- title: 'Curate submission',
38
- priority: 'Medium',
39
- fields: [
40
- { id: 'pieceTitle', label: 'Title', type: 'text', direction: 'input', value: input('title') },
41
- { id: 'medium', label: 'Medium', type: 'text', direction: 'input', value: input('medium') },
42
- { id: 'wall', label: 'Wall space', type: 'text', direction: 'input', value: out('wallSpace') },
43
- { id: 'note', label: 'Curator note', type: 'text', direction: 'output' },
44
- ],
45
- outcomes: ['Accept', 'Decline'],
46
- }), [
47
- {
48
- value: 'Accept',
49
- body: (b) => b.step(
50
- 'hang',
51
- script({ code: 'return "accepted for the spring wall: " + $vars.curate.output.note;' }),
52
- { updates: { decision: lit('Accept'), curatorReply: out('hang') } },
53
- ),
54
- },
55
- {
56
- value: 'Decline',
57
- body: (b) => b.step(
58
- 'returnPiece',
59
- script({ code: 'return "returned to artist: " + $vars.curate.output.note;' }),
60
- { updates: { decision: lit('Decline'), curatorReply: out('returnPiece') } },
61
- ),
62
- },
63
- ])
64
-
65
- .return({ outcome: v('decision'), note: v('curatorReply') })
66
-
67
- .build();