@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,83 @@
1
+ # Decision Node — Implementation
2
+
3
+ ## Node Type
4
+
5
+ `core.logic.decision`
6
+
7
+ ## Registry Validation
8
+
9
+ ```bash
10
+ uip maestro flow registry get core.logic.decision --output json
11
+ ```
12
+
13
+ Confirm: input port `input`, output ports `true` and `false`, required input `expression`. Set the node instance `typeVersion` to the `version` field from this response — do not hardcode it.
14
+
15
+ ## JSON Structure
16
+
17
+ ```json
18
+ {
19
+ "id": "checkStatus",
20
+ "type": "core.logic.decision",
21
+ "typeVersion": "<DEFINITION_VERSION>",
22
+ "display": { "label": "Check Status" },
23
+ "inputs": {
24
+ "expression": "$vars.fetchData.output.statusCode === 200"
25
+ }
26
+ }
27
+ ```
28
+
29
+ ## Adding / Editing
30
+
31
+ For step-by-step add, delete, and wiring procedures, see [editing-operations.md](../../editing-operations.md). Use the JSON structure above for the node-specific `inputs`.
32
+
33
+ ## Expression Examples
34
+
35
+ ```javascript
36
+ // Simple comparison
37
+ $vars.fetchData.output.statusCode === 200
38
+
39
+ // Boolean field
40
+ $vars.processData.output.isValid
41
+
42
+ // Compound condition
43
+ $vars.httpCall.output.statusCode === 200 && $vars.httpCall.output.body.count > 0
44
+
45
+ // String check
46
+ $vars.classify.output.category === "urgent"
47
+
48
+ // Null check
49
+ $vars.lookupUser.output.user !== null
50
+ ```
51
+
52
+ ## Wiring
53
+
54
+ Output ports: `true` and `false`. Both branches must be wired. See [editing-operations.md](../../editing-operations.md) for edge add procedures.
55
+
56
+ ## Outputs
57
+
58
+ `registry get` shows a Decision declaring two outputs, `matchedCase` and `matchedCaseId`, and `flow format` writes them into `variables.nodes[]`. **Ignore both. Neither is ever assigned at runtime.**
59
+
60
+ They are synthetic. The scope resolver suppresses a gateway's outputs for every reader except the gateway itself, and the flow→BPMN serializer emits no writer for them — a Decision compiles to a gateway whose branch choice lives on the outgoing sequence flows' `conditionExpression`, never in a variable. They hold real values only in the Studio Web canvas, which evaluates gateways client-side. Because the variable is *declared* but never assigned, a downstream read fails **silently**: `undefined` flows into the reader's own logic and yields a wrong result instead of a fault.
61
+
62
+ | What you write | What happens |
63
+ | --- | --- |
64
+ | `$vars.<decisionId>.matchedCaseId` or `.matchedCase` | validate passes with `[EXPRESSION_DIAGNOSTIC] Property '<decisionId>' does not exist on type '{…}'`; reads `undefined` at runtime |
65
+ | `$vars.<decisionId>.output.matchedCaseId` | validate **fails**: `node "<decisionId>" has no output named "output" — its outputs are: matchedCase, matchedCaseId` |
66
+
67
+ > That second message then recommends `$vars.<decisionId>.matchedCaseId`. Take only half of it: drop the `.output.` segment **and** stop reading the gateway. The cross-reference check reads the registry's declared outputs and does not know the scope resolver suppresses them.
68
+
69
+ To act on which branch ran, use one of:
70
+
71
+ - **Recompute the condition** from a node upstream of the Decision, which is still in scope — `$vars.getWeather.output.tempF > 60` rather than the Decision's result. Cheapest when the condition's inputs are still reachable.
72
+ - **Write an `inout` global on each branch** with [`variables.variableUpdates`](../../editing-operations-json.md#add-a-variable-update), then read `$vars.<globalId>` where the branches rejoin. Use this when the condition cannot be recomputed. Map the global on every End node or it raises `MISSING_OUTPUT_MAPPING`.
73
+
74
+ This holds whether or not the branches rejoin, and applies identically to [Switch](../switch/impl.md#outputs).
75
+
76
+ ## Debug
77
+
78
+ | Error | Cause | Fix |
79
+ | --- | --- | --- |
80
+ | Expression does not evaluate to boolean | Expression returns non-boolean value | Ensure expression uses comparison operators (`===`, `>`, etc.) |
81
+ | `$vars.nodeId` is undefined | Upstream node not connected or wrong ID | Check edges and node IDs |
82
+ | `[400302] Error evaluating outgoing flow expression from gateway` | `expression` reads a node that runs *after* the Decision (typical after moving the Decision earlier in the flow) | Point `expression` at a node that still runs before the Decision (e.g. the HTTP node's `$vars.<node>.output…`), not at the node the branches lead to |
83
+ | Only one branch wired | Missing true or false edge | Add the missing edge — both branches are required |
@@ -0,0 +1,38 @@
1
+ # Decision Node — Planning
2
+
3
+ ## Node Type
4
+
5
+ `core.logic.decision`
6
+
7
+ ## When to Use
8
+
9
+ Use a Decision node for binary branching (if/else) based on a boolean condition.
10
+
11
+ ### Selection Heuristics
12
+
13
+ | Situation | Use Decision? |
14
+ | --- | --- |
15
+ | Two-path branch based on a boolean condition | Yes |
16
+ | Three or more paths | No — use [Switch](../switch/planning.md) |
17
+ | Branch on HTTP response status codes | No — use [HTTP](../http/planning.md) built-in branches |
18
+ | Branch requires reasoning on ambiguous input | No — use [Agent](../agent/planning.md) |
19
+
20
+ ## Ports
21
+
22
+ | Input Port | Output Port(s) |
23
+ | --- | --- |
24
+ | `input` | `true`, `false` |
25
+
26
+ ## Key Inputs
27
+
28
+ | Input | Required | Description |
29
+ | --- | --- | --- |
30
+ | `expression` | Yes | Boolean JavaScript expression (e.g., `$vars.fetchData.output.statusCode === 200`) |
31
+ | `trueLabel` | No | Custom label for the true branch |
32
+ | `falseLabel` | No | Custom label for the false branch |
33
+
34
+ ## Wiring Rules
35
+
36
+ - Decision nodes produce exactly **two** outgoing edges: one from `true`, one from `false`
37
+ - Both branches must lead to a downstream node (no dangling branches)
38
+ - Each branch typically ends at its own End node or merges back into a shared path
@@ -0,0 +1,38 @@
1
+ # Delay Node — Implementation
2
+
3
+ ## Node Type
4
+
5
+ `core.logic.delay`
6
+
7
+ ## Registry Validation
8
+
9
+ Run `uip maestro flow registry get core.logic.delay --output json`.
10
+
11
+ Confirm input port `input`, output port `output`, and required inputs `timerType` and `timerPreset`. Set the node instance `typeVersion` to the response `version` field; do not hardcode it.
12
+
13
+ ## JSON Structure
14
+
15
+ ```json
16
+ {
17
+ "id": "<id>",
18
+ "type": "core.logic.delay",
19
+ "typeVersion": "<DEFINITION_VERSION>",
20
+ "display": { "label": "<label>" },
21
+ "inputs": { "timerType": "<timerType>", "timerPreset": "<preset>" }
22
+ }
23
+ ```
24
+
25
+ - Duration preset: use `timerType: "timeDuration"` and `timerPreset: "<preset>"` (for example, `"PT15M"`).
26
+ - Custom duration: use `timerPreset: "custom"` and add `timerValue` as an ISO 8601 duration (for example, `"P1DT5H30M"`).
27
+ - Wait until a date: use `timerType: "timeDate"`, `timerPreset: "custom"`, and `timerDate` as an ISO 8601 datetime or `=js:` expression (for example, `"=js:$vars.scheduledDate"`).
28
+
29
+ For step-by-step add, delete, and wiring procedures, see [editing-operations.md](../../editing-operations.md). BPMN type and event definition come from `definitions[]`.
30
+
31
+ ## Debug
32
+
33
+ | Error | Cause | Fix |
34
+ | --- | --- | --- |
35
+ | Invalid timer value | Malformed ISO 8601 string | Check format: `P[n]Y[n]M[n]W[n]DT[n]H[n]M[n]S` |
36
+ | Missing `timerValue` | `timerPreset: "custom"` but no `timerValue` | Add `timerValue` with ISO 8601 duration |
37
+ | Missing `timerDate` | `timerType: "timeDate"` but no `timerDate` | Add `timerDate` with ISO 8601 datetime or `=js:` expression |
38
+ | BPMN timer event not emitted | Wrong `core.logic.delay` definition in `definitions[]` | Re-copy from `uip maestro flow registry get core.logic.delay --output json` — the definition carries `model.eventDefinition: "bpmn:TimerEventDefinition"` |
@@ -0,0 +1,53 @@
1
+ # Delay Node — Planning
2
+
3
+ ## Node Type
4
+
5
+ `core.logic.delay`
6
+
7
+ ## When to Use
8
+
9
+ Use a Delay node to pause execution for a duration or until a specific date.
10
+
11
+ ### Selection Heuristics
12
+
13
+ | Situation | Use Delay? |
14
+ | --- | --- |
15
+ | Fixed duration pause (wait 15 minutes, wait 1 day) | Yes |
16
+ | Wait until a specific date/time | Yes |
17
+ | Wait for external work to complete | No — use [Queue](../queue/planning.md) (`create-and-wait`) |
18
+ | Wait for human input | No — use [HITL](../hitl/planning.md) |
19
+
20
+ ## Ports
21
+
22
+ | Input Port | Output Port(s) |
23
+ | --- | --- |
24
+ | `input` | `output` |
25
+
26
+ ## Key Inputs
27
+
28
+ | Input | Required | Description |
29
+ | --- | --- | --- |
30
+ | `timerType` | Yes | `timeDuration` or `timeDate` |
31
+ | `timerPreset` | Yes | Preset value or `custom` |
32
+ | `timerValue` | Conditional | Required when `timerPreset: "custom"` (ISO 8601 duration) |
33
+ | `timerDate` | Conditional | Required when `timerType: "timeDate"` (ISO 8601 datetime or `=js:` expression) |
34
+
35
+ ## Duration Presets
36
+
37
+ | Preset Value | Duration |
38
+ | --- | --- |
39
+ | `PT5M` | 5 minutes |
40
+ | `PT15M` | 15 minutes |
41
+ | `PT30M` | 30 minutes |
42
+ | `PT1H` | 1 hour |
43
+ | `PT6H` | 6 hours |
44
+ | `PT12H` | 12 hours |
45
+ | `P1D` | 1 day |
46
+ | `P1W` | 1 week |
47
+ | `custom` | Use `timerValue` for custom ISO 8601 duration |
48
+
49
+ ## ISO 8601 Duration Format
50
+
51
+ `P[n]Y[n]M[n]W[n]DT[n]H[n]M[n]S`
52
+
53
+ Examples: `PT30S` (30 seconds), `PT2H30M` (2.5 hours), `P3DT12H` (3 days 12 hours)
@@ -0,0 +1,56 @@
1
+ # End Node — Implementation
2
+
3
+ ## Node Type
4
+
5
+ `core.control.end`
6
+
7
+ ## Registry Validation
8
+
9
+ Run `uip maestro flow registry get core.control.end --output json`. Confirm input port `input` and no output ports. Set the node instance `typeVersion` to the response `version` field; do not hardcode it.
10
+
11
+ ## JSON Structure
12
+
13
+ Without output variables:
14
+
15
+ ```json
16
+ {
17
+ "id": "<END_NODE_ID>",
18
+ "type": "core.control.end",
19
+ "typeVersion": "<DEFINITION_VERSION>",
20
+ "display": { "label": "<LABEL>" },
21
+ "inputs": {}
22
+ }
23
+ ```
24
+
25
+ When the workflow declares `out` variables, map every one on every End node:
26
+
27
+ ```json
28
+ {
29
+ "id": "<END_NODE_ID>",
30
+ "type": "core.control.end",
31
+ "typeVersion": "<DEFINITION_VERSION>",
32
+ "display": { "label": "<LABEL>" },
33
+ "inputs": {},
34
+ "outputs": {
35
+ "<VAR_ID>": {
36
+ "source": "=js:$vars.<UPSTREAM_NODE>.output.<FIELD>"
37
+ }
38
+ }
39
+ }
40
+ ```
41
+
42
+ Each `outputs` key must match a variable `id` in `variables.globals` with `direction: "out"`.
43
+
44
+ ## Adding / Editing
45
+
46
+ For step-by-step add, delete, and wiring procedures, see [editing-operations.md](../../editing-operations.md). Use the JSON structure above for node-specific `inputs` and `outputs`.
47
+
48
+ Add output mappings with `Edit` against the `.flow` file; see [Edit/Write: Add output mapping](../../editing-operations-json.md#add-output-mapping-on-an-end-node).
49
+
50
+ ## Debug
51
+
52
+ | Error | Cause | Fix |
53
+ | --- | --- | --- |
54
+ | Missing output mapping | An `out` variable is not mapped on this End node | Add `outputs.{varId}.source` for every `out` variable |
55
+ | Output expression unresolvable | The `$vars` reference points to an unreachable node | Ensure the node is upstream and connected via edges |
56
+ | Runtime silent failure | A reachable End node lacks an output mapping | Check **all** End nodes, not just the primary path |
@@ -0,0 +1,28 @@
1
+ # End Node — Planning
2
+
3
+ ## Node Type
4
+
5
+ `core.control.end`
6
+
7
+ ## When to Use
8
+
9
+ Use an End node for graceful workflow completion. Each terminal path in the flow needs its own End node.
10
+
11
+ ### Selection Heuristics
12
+
13
+ | Situation | Use End? |
14
+ | --- | --- |
15
+ | Normal completion of an execution path | Yes |
16
+ | Fatal error — abort everything immediately | No — use [Terminate](../terminate/planning.md) |
17
+
18
+ ## Ports
19
+
20
+ | Input Port | Output Port(s) |
21
+ | --- | --- |
22
+ | `input` | — (none) |
23
+
24
+ ## Key Rules
25
+
26
+ - A flow can have multiple End nodes (one per terminal path)
27
+ - Every `out` variable in `variables.globals` **must** be mapped on **every** reachable End node via `outputs`
28
+ - End nodes only terminate their own path — other parallel branches continue
@@ -0,0 +1,107 @@
1
+ # Flow Node — Implementation
2
+
3
+ Flow nodes invoke other flows as subprocesses. Pattern: `uipath.core.flow.{key}`.
4
+
5
+ ## Discovery
6
+
7
+ ### Published (tenant registry)
8
+
9
+ ```bash
10
+ uip maestro flow registry pull --force
11
+ uip maestro flow registry search "uipath.core.flow" --output json
12
+ ```
13
+
14
+ ### In-solution (sibling projects)
15
+
16
+ ```bash
17
+ uip maestro flow registry list --local --output json
18
+ uip maestro flow registry get "<node-type>" --local --output json
19
+ ```
20
+
21
+ ## Registry Validation
22
+
23
+ ```bash
24
+ # Published
25
+ uip maestro flow registry get "uipath.core.flow.{key}" --output json
26
+
27
+ # In-solution
28
+ uip maestro flow registry get "uipath.core.flow.{key}" --local --output json
29
+ ```
30
+
31
+ Confirm:
32
+
33
+ - Input port: `input`
34
+ - Output port: `output`
35
+ - `model.serviceType` — `Orchestrator.StartAgenticProcess` (shared with agentic-process nodes; `resourceSubType: "Flow"` differentiates)
36
+ - `model.bindings.resourceSubType` — `Flow`
37
+ - `model.bindings.resourceKey` — the `<FolderPath>.<FlowName>` string used to scope binding resolution
38
+ - `inputDefinition` — typically empty
39
+ - `outputDefinition.error` — error schema
40
+
41
+ ## Adding / Editing
42
+
43
+ For step-by-step add, delete, and wiring procedures, see [editing-operations.md](../../editing-operations.md). Use the JSON structure below for the node-specific `inputs`.
44
+
45
+ ## JSON Structure
46
+
47
+ ### Node instance (inside `nodes[]`)
48
+
49
+ The instance carries only per-instance data (`inputs`, `outputs`, `display`). BPMN type, serviceType, version, and binding/context templates come from the definition in `definitions[]`.
50
+
51
+ ```json
52
+ {
53
+ "id": "validateData",
54
+ "type": "uipath.core.flow.629edef0-8ce8-428e-a922-3f8bf19ea682",
55
+ "typeVersion": "<DEFINITION_VERSION>",
56
+ "display": { "label": "Validate Data" },
57
+ "inputs": {},
58
+ "outputs": {
59
+ "error": {
60
+ "type": "object",
61
+ "description": "Error information if the flow fails",
62
+ "source": "=Error",
63
+ "var": "error"
64
+ }
65
+ }
66
+ }
67
+ ```
68
+
69
+ **Declare `error` only — `output` is derived.** Authoring it makes the converter copy your `source` verbatim; `"=result.response"` then resolves to null at runtime while `flow validate` passes. See [file-format.md § Node outputs](../../../shared/file-format.md#node-outputs).
70
+
71
+ ### Top-level `bindings[]` entries (sibling of `nodes`/`edges`/`definitions`)
72
+
73
+ Add one entry per `(resourceKey, propertyAttribute)` pair. Share entries across node instances that reference the same flow — do NOT create duplicates.
74
+
75
+ ```json
76
+ "bindings": [
77
+ {
78
+ "id": "bValidateDataName",
79
+ "name": "name",
80
+ "type": "string",
81
+ "resource": "process",
82
+ "resourceKey": "Shared.Validate Data Flow",
83
+ "default": "Validate Data Flow",
84
+ "propertyAttribute": "name",
85
+ "resourceSubType": "Flow"
86
+ },
87
+ {
88
+ "id": "bValidateDataFolderPath",
89
+ "name": "folderPath",
90
+ "type": "string",
91
+ "resource": "process",
92
+ "resourceKey": "Shared.Validate Data Flow",
93
+ "default": "Shared",
94
+ "propertyAttribute": "folderPath",
95
+ "resourceSubType": "Flow"
96
+ }
97
+ ]
98
+ ```
99
+
100
+ > For the resolution mechanics and why these entries are required, see [file-format.md — Bindings](../../../shared/file-format.md#bindings--orchestrator-resource-bindings-top-level-bindings).
101
+
102
+ ## Debug
103
+
104
+ | Error | Cause | Fix |
105
+ | --- | --- | --- |
106
+ | Node type not found in registry | Flow not published or registry stale | Run `uip login` then `uip maestro flow registry pull --force`; for in-solution flows use `--local` |
107
+ | Flow execution failed | Underlying flow errored | Check `$vars.{nodeId}.error` for details |
@@ -0,0 +1,58 @@
1
+ # Flow Node — Planning
2
+
3
+ Flow nodes invoke other flows as subprocesses from within a flow. Published flows appear in the registry after `uip login` + `uip maestro flow registry pull`. **In-solution** (unpublished) flows in sibling projects are discovered via `--local` — no login or publish required.
4
+
5
+ ## Node Type Pattern
6
+
7
+ `uipath.core.flow.{key}`
8
+
9
+ ## When to Use
10
+
11
+ Use a Flow node when you need to call another published flow as a subprocess.
12
+
13
+ ### Selection Heuristics
14
+
15
+ | Situation | Use Flow? |
16
+ | --- | --- |
17
+ | Call another published flow as a subprocess | Yes |
18
+ | Group related steps with isolated scope (within same project) | No — use [Subflow](../subflow/planning.md) |
19
+ | Invoke a published orchestration process | No — use [Agentic Process](../agentic-process/planning.md) |
20
+ | Flow not yet published but in the same solution | Yes — discover with `--local` (no login or publish needed) |
21
+ | Flow does not exist yet | Create it in the same solution with `uipath-maestro-flow`, then use `--local` discovery |
22
+
23
+ ## Ports
24
+
25
+ | Input Port | Output Port(s) |
26
+ | --- | --- |
27
+ | `input` | `output` |
28
+
29
+ ## Output Variables
30
+
31
+ - `$vars.{nodeId}.error` — error details if execution fails (`code`, `message`, `detail`, `category`, `status`)
32
+
33
+ ## Discovery
34
+
35
+ ### Published (tenant registry)
36
+
37
+ ```bash
38
+ uip maestro flow registry pull --force
39
+ uip maestro flow registry search "uipath.core.flow" --output json
40
+ ```
41
+
42
+ Requires `uip login`. Only published flows from your tenant appear.
43
+
44
+ ### In-solution (sibling projects)
45
+
46
+ ```bash
47
+ uip maestro flow registry list --local --output json
48
+ uip maestro flow registry get "<node-type>" --local --output json
49
+ ```
50
+
51
+ No login or publish required. Discovers unpublished flows in sibling projects within the same solution.
52
+
53
+ ## Planning Annotation
54
+
55
+ In the architectural plan:
56
+
57
+ - If the flow exists: note as `resource: <name> (flow)`
58
+ - If it does not exist: note as `[CREATE NEW] <description>` with skill `uipath-maestro-flow`
@@ -0,0 +1,181 @@
1
+ # HITL Node — Implementation
2
+
3
+ Choose one checkpoint: an inline QuickForm or an existing deployed Action Center app.
4
+
5
+ ## Option 1 — `uipath.human-in-the-loop.quick-form` (Inline Schema — OOTB)
6
+
7
+ Preferred: no registry pull, app publishing, or tenant dependency. Write the node directly into the `.flow` file as JSON.
8
+
9
+ For schema design, node writing, JSON examples, and schema conversion rules, see [`uipath-human-in-the-loop` skill — hitl-node-quickform.md](../../../../../uipath-human-in-the-loop/references/hitl-node-quickform.md). Skills are self-contained: this cross-skill reference is for documentation context only — per Critical Rule 4, offer the handoff and let the user choose. This guide covers implementation-phase topology resolution only, not schema design or node writing.
10
+
11
+ For add, delete, and wiring procedures, see [editing-operations.md](../../editing-operations.md). **Use `Edit` / `Write` for HITL node authoring.** Do not use the dedicated HITL CLI for this non-carve-out structural edit. Wire one output edge per outcome — port `outcome-<outcome.id>` for each entry in `inputs.schema.outcomes[]` — never a single shared port.
12
+
13
+ ### Quick reference
14
+
15
+ ```json
16
+ {
17
+ "id": "hitlReview1",
18
+ "type": "uipath.human-in-the-loop.quick-form",
19
+ "typeVersion": "1.0",
20
+ "display": { "label": "Invoice Review" },
21
+ "inputs": {
22
+ "schema": {
23
+ "schemaId": "<uuid>",
24
+ "fields": [
25
+ { "id": "invoiceid", "label": "Invoice ID", "type": "text", "direction": "input", "binding": "vars.fetchInvoice.output.invoiceId" },
26
+ { "id": "amount", "label": "Amount", "type": "number", "direction": "input", "binding": "vars.fetchInvoice.output.amount" },
27
+ { "id": "decision", "label": "Decision", "type": "text", "direction": "output", "variable": "vars.decision" }
28
+ ],
29
+ "outcomes": [
30
+ { "id": "approve", "name": "Approve", "type": "string", "isPrimary": true, "action": "Continue" },
31
+ { "id": "reject", "name": "Reject", "type": "string", "isPrimary": false, "action": "End" }
32
+ ]
33
+ },
34
+ "recipient": { "channels": ["Email", "ActionCenter"], "connections": {}, "assignee": { "type": "group" } },
35
+ "priority": "Low"
36
+ },
37
+ "outputs": {
38
+ "output": {
39
+ "type": "object",
40
+ "description": "Task result data",
41
+ "source": "=result",
42
+ "var": "output",
43
+ "properties": {
44
+ "decision": { "type": "string" },
45
+ "Action": { "type": "string", "enum": ["Approve", "Reject"], "default": "Approve" }
46
+ }
47
+ },
48
+ "status": {
49
+ "type": "string",
50
+ "description": "Task completion status",
51
+ "source": "=result.Action",
52
+ "var": "status",
53
+ "enum": ["Approve", "Reject"],
54
+ "default": "Approve"
55
+ }
56
+ }
57
+ }
58
+ ```
59
+
60
+ Rules:
61
+ - Input fields use `binding: "vars.<nodeId>.output.<field>"` (raw path; no `=js:$` prefix) and no `variable`.
62
+ - Output fields use `variable: "vars.<globalName>"` (`vars.` required) and no `binding`.
63
+ - InOut fields use both properties in those formats.
64
+ - Use `schemaId` (not `id`) at schema level and generate a fresh UUID.
65
+ - `priority` is `"Low"` | `"Medium"` | `"High"`, default `Low`. No `Critical` on this node, unlike an Action Center case task. Take the value from the request, not from the literal in either option's example: explicit high-urgency language — "urgent", "high priority", "critical", "ASAP", a named or breached SLA — selects `High`; reserve `Medium` for mild or unquantified urgency, `Low` when none is expressed. The value must land in the node; acknowledging the urgency in conversation is not enough.
66
+ - `typeVersion` — always `"1.0"` for this node. **Do not run `registry get` to derive this value; do not use `"1.1"` or any other version.** The OOTB HITL node version is stable at `1.0`.
67
+ - Do not include a `model` block on node instances; only the definition carries it.
68
+ - `outputs` contains only `output` (with `properties` for output/inOut fields plus `Action`) and `status` (with outcome `enum`/`default`). Do not add per-field `custom: true` entries.
69
+ - Ports: `input` (target) → one `outcome-<outcome.id>` port per outcome (source), derived from `inputs.schema.outcomes[].id` verbatim — never lowercase it, never hardcode a port name. Every outcome needs a non-empty string `id`; one without gets no handle at all and any edge drawn to it is a no-op. `outcome-completed` is the port for a zero-outcome node, or for a real outcome whose `id` is literally `completed` — it is not a reserved string, so it is never a shared exit standing in for several outcomes. Wire every outcome port — an unwired one blocks that branch indefinitely.
70
+ - Outputs are `$vars.{nodeId}.output` (object keyed by field `id`), `$vars.{nodeId}.output.{fieldId}`, `$vars.{nodeId}.status` (selected outcome name), and `$vars.{globalId}` (workflow-global alias from `field.variable` with `vars.` stripped). **Do not use the alias in scripts; use `$vars.{nodeId}.output.{fieldId}`.**
71
+
72
+ ## Option 2 — App-Based HITL (`uipath.human-in-the-loop.coded-action-app`)
73
+
74
+ Use an existing deployed Action Center app as the task form.
75
+
76
+ ### Discovery
77
+
78
+ **Run:**
79
+
80
+ ```bash
81
+ uip solution resources list --kind App --output json
82
+ ```
83
+
84
+ Filter returned Action Center app types (`vB Action`, `workflow Action`, `Coded Action`, `JS Action`) by app name. **Run:**
85
+
86
+ ```bash
87
+ uip solution resources get <key> --output json
88
+ ```
89
+
90
+ If the CLI is unavailable, use:
91
+
92
+ ```
93
+ GET {BASE_URL}/{ORG}/studio_/backend/api/resourcebuilder/solutions/{SOLUTION_ID}/resources/search
94
+ ?kind=app&pageSize=25&projectKey={PROJECT_KEY}&includeSolutionResources=true
95
+ &types=VB%20Action&types=Workflow%20Action&types=Coded%20Action&types=CodedAction&types=JS%20Action
96
+ ```
97
+
98
+ For app search → retrieve-configuration → resource files → reference registration → debug overwrites, see **[hitl-node-apptask.md](../../../../../uipath-human-in-the-loop/references/hitl-node-apptask.md)**.
99
+
100
+ ### Quick reference
101
+
102
+ ```json
103
+ {
104
+ "id": "invoiceReview1",
105
+ "type": "uipath.human-in-the-loop.coded-action-app",
106
+ "typeVersion": "<DEFINITION_VERSION>",
107
+ "display": { "label": "Invoice Review" },
108
+ "inputs": {
109
+ "recipient": { "channels": ["ActionCenter"], "connections": {}, "assignee": { "type": "group" } },
110
+ "app": {
111
+ "displayName": "Invoice Approval",
112
+ "name": "Invoice Approval",
113
+ "key": "<app.key>",
114
+ "folderPath": "Shared",
115
+ "inputSchema": {
116
+ "type": "object",
117
+ "properties": { "<paramName>": { "type": "string" } }
118
+ },
119
+ "outputSchema": {
120
+ "type": "object",
121
+ "properties": { "<outputName>": { "type": "string" } }
122
+ }
123
+ },
124
+ "appInputBindings": {
125
+ "<inputParamName>": "=vars.<nodeId>.output.<field>",
126
+ "<inputParamName2>": "=metadata.InstanceId"
127
+ },
128
+ "priority": "Medium"
129
+ },
130
+ "outputs": {
131
+ "output": {
132
+ "type": "object",
133
+ "description": "Task result data",
134
+ "source": "=result",
135
+ "var": "output",
136
+ "properties": { "Action": { "type": "string", "enum": ["Submit"], "default": "Submit" } }
137
+ },
138
+ "status": {
139
+ "type": "string",
140
+ "description": "Task completion status",
141
+ "source": "=result.Action",
142
+ "var": "status",
143
+ "enum": ["Submit"],
144
+ "default": "Submit"
145
+ }
146
+ }
147
+ }
148
+ ```
149
+
150
+ Rules:
151
+ - Fill `typeVersion` with the version returned by `uip maestro flow registry get <appKey>` for the specific deployed app. Unlike QuickForm, AppTask versions vary by app definition.
152
+ - `inputs.app.inputSchema` and `outputSchema` are JSON Schema objects (`{ "type": "object", "properties": { ... } }`), not arrays.
153
+ - `inputs.appInputBindings` maps names from `inputSchema.properties` to `"=vars.<path>"` expressions (with `=` and no `js:`). Without these bindings, input fields are blank.
154
+ - `priority` follows Option 1's rule above — derived from the request, not the `"Medium"` literal in the example.
155
+ - Do not add `inputs.schema` to this node — its outcomes come from the deployed app (`inputs.app`), not a schema block. Adding one flips the port from the static `completed` handle this node type actually uses to a schema-derived `outcome-<id>` handle, which does not match what the app produces.
156
+ - Ports: `input` (target) → `completed` (source). Unlike QuickForm, this port stays static regardless of the app's own outcomes.
157
+
158
+ ### If the app does not exist
159
+
160
+ Record `[CREATE NEW] <description>` in the node table and use `core.logic.mock` as a placeholder. The app is out of scope; use the `uipath-coded-apps` skill to build it.
161
+
162
+ ## Common pattern
163
+
164
+ ```text
165
+ Manual Trigger -> RPA Process (extract) -> HITL (review, outcomes: Approve/Reject) ->
166
+ outcome-approve: Script (submit) -> End
167
+ outcome-reject: End
168
+ ```
169
+
170
+ Branch directly off each outcome's own handle. Do not insert a Decision node after a HITL node to re-derive the branch from `$vars.{nodeId}.status` — the outcome handles already are the branch points.
171
+
172
+ ## Debug
173
+
174
+ | Error | Cause | Fix |
175
+ | --- | --- | --- |
176
+ | Node type not found in registry (Option 2) | App not published or registry stale | If in same solution: `uip maestro flow registry list --local`. Otherwise: `uip login` then `uip maestro flow registry pull --force` |
177
+ | Task never completes | Human has not submitted the form | Check task assignment in Orchestrator |
178
+ | Output missing expected fields | App form does not match expected schema | Verify app form fields match what the flow expects |
179
+ | An outcome port unwired (Option 1) | Missing edge on one of the `outcome-<outcome.id>` handles | Wire every outcome's own port; an unwired outcome port blocks the flow indefinitely on that branch |
180
+ | Wired `outcome-completed` as if it were a shared exit for several outcomes (Option 1) | Confused the zero-outcome placeholder for a real port | Check `inputs.schema.outcomes` — if any entry's `id` isn't literally `completed`, rewire to `outcome-<outcome.id>` per outcome instead |
181
+ | Run never finishes; instance stays `Running` until the timeout, ports all wired | A HITL node sits in a flow nothing will attend — no assignee, or an unattended run (schedule, `flow debug`, eval) | Confirm a human will open the task. If the run is unattended, use a mechanism that completes on its own — see [planning.md](planning.md#when-to-select) |