@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,364 @@
1
+ # Planning Phase 1: Discovery & Architectural Design
2
+
3
+ Discover capabilities, then design flow topology: node types, edges, inputs, and outputs. Produce a **mermaid diagram** and structured tables for review before implementation.
4
+
5
+ > **Registry rules:** `registry search` and `registry list` are allowed for discovery. Run `registry get` once for every OOTB action node type used (`core.action.http`, `core.action.http.v2`, `core.action.script`, `core.action.transform`, queue actions, etc.); this provides real schemas, ports, and required fields. Defer `registry get` for connector nodes requiring `--connection-id` and resource nodes requiring `--local` or published-resource resolution to [Planning Phase 2: Implementation](planning-impl.md).
6
+
7
+ ## Before You Build: Is Maestro the Right Home?
8
+
9
+ Run this gate before designing topology. Maestro fits long-running cases requiring one durable instance, multiple waits, branching, parallelism, SLAs, cross-product composition, or per-case visibility. A single-wait, mostly linear process may be simpler as a queue + Action Center state machine; if so, stop and hand off to [/uipath:uipath-rpa](/uipath:uipath-rpa) + [/uipath:uipath-platform](/uipath:uipath-platform).
10
+
11
+ Ask: **Where does the case live now, and where should it live between steps?**
12
+
13
+ | Factor | Maestro flow | Queue + Action Center |
14
+ | --- | --- | --- |
15
+ | Waits | Several waits, branches, or parallel paths | One human or external wait |
16
+ | Visibility | Need exact current case location | Queue status is sufficient |
17
+ | Topology | Branching, fan-out/merge, SLAs | Mostly linear |
18
+ | Ownership | Team accepts orchestration as an artifact | RPA-only team with queue infrastructure |
19
+ | Composition | RPA, agents, connectors, humans | RPA + Action Center |
20
+ | Overhead | Justified by lifecycle complexity | Not justified for one-shot work |
21
+
22
+ A single-wait lifecycle is valid queue + Action Center; multi-wait, branched, or visibility-critical lifecycles favor Maestro. For existing RPA projects, keep executors and lift only orchestration; see [brownfield.md — Converting an existing project to Maestro](brownfield.md#converting-an-existing-project-to-maestro).
23
+
24
+ ## Process
25
+
26
+ 1. Analyze the user's requirements.
27
+ 2. **Discover capabilities** when connector or resource nodes are needed; run `registry search` / `registry list` (see [Capability Discovery](#capability-discovery)).
28
+ 3. Select node types from the [Plugin Index](#plugin-index); read each relevant `planning.md` for heuristics, ports, and key inputs.
29
+ 4. Define edges using [Wiring Rules](#wiring-rules) and plugin port documentation.
30
+ 5. Identify suspected inputs and outputs for every node.
31
+ 6. Generate a mermaid diagram.
32
+ 7. Validate mermaid syntax using [Mermaid Validation Rules](#mermaid-validation-rules).
33
+ 8. Present the plan for review.
34
+ 9. Iterate until approved, then hand off to [Planning Phase 2: Implementation](planning-impl.md).
35
+
36
+ ## Capability Discovery
37
+
38
+ Run discovery when connector or resource nodes are needed; skip it for OOTB-only flows. Discovery confirms connectors, operations, and published or in-solution resources before topology selection.
39
+
40
+ ```bash
41
+ # Registry should already be refreshed (greenfield.md Step 3 runs `registry pull`)
42
+ uip maestro flow registry search <keyword> --output json
43
+ uip maestro flow registry search outlook --output json
44
+ uip maestro flow registry search "invoice process" --output json
45
+ uip maestro flow registry search agent --output json
46
+ uip maestro flow registry list --output json
47
+
48
+ # Run `get` for every OOTB action node type used:
49
+ uip maestro flow registry get core.action.script --output json
50
+ # Repeat for transform, queue actions, and every other OOTB action type.
51
+ # `core.action.http.v2` is a managed-HTTP connector node, not OOTB; discover it via
52
+ # [http/planning.md](plugins/http/planning.md).
53
+ ```
54
+
55
+ Without `uip login`, the registry shows OOTB nodes only. If connectors or resources are required, run `uip login status --output json` first. For sibling projects in the same `.uipx` solution, run from the flow project directory:
56
+
57
+ ```bash
58
+ uip maestro flow registry list --local --output json
59
+ uip maestro flow registry search "<keyword>" --local --output json
60
+ ```
61
+
62
+ Prefer in-solution resources over mocks. `--local` omits `AvailableOnTenant`; an empty `search --local` is not authoritative, so confirm with `list --local` before treating a resource as absent.
63
+
64
+ ### Check Connector Connections
65
+
66
+ For every discovered connector, follow [plugins/connector/planning.md](plugins/connector/planning.md). Never guess a connector key; use the key from registry search. Run:
67
+
68
+ ```bash
69
+ uip is connections list "<connector-key>" --all-folders --output json
70
+ ```
71
+
72
+ `--all-folders` is mandatory; plain `uip is connections list "<connector-key>"` is forbidden for discovery. Record a connection only when `IsDefault: Yes` and `State: Enabled`.
73
+
74
+ Treat an empty result as suspicious. Treat it as a real absence only when: (a) the key came from `registry search`, (b) `--all-folders` was used, and (c) a `--refresh` retry was also empty. Only then put the gap in **Open Questions**; do not ask about connection creation before verification. See [connector/impl.md](plugins/connector/impl.md) for the shared empty-result recovery path.
75
+
76
+ Record:
77
+
78
+ - **Connectors:** existence, available operations from node type names, and healthy connection availability. Defer field details to Phase 2.
79
+ - **Resources:** check `list --local` or `search --local` first, then tenant registry; record whether each RPA process, agent, or flow exists. Defer schemas to Phase 2.
80
+ - **Gaps:** use `core.action.http.v2` manual mode when no connector exists; use `--local` resources when unpublished but in solution; use `core.logic.mock` when a resource is neither in solution nor published; flag connectors lacking connections after verified empty results.
81
+
82
+ Run `registry get` for OOTB actions during discovery. Defer connector `registry get --connection-id` and resource `registry get --local` or published resolution to Phase 2.
83
+
84
+ ## Plugin Index
85
+
86
+ Read the relevant plugin `planning.md` when selecting a type.
87
+
88
+ ### Triggers
89
+
90
+ | Node Type | Plugin | Select when |
91
+ | --- | --- | --- |
92
+ | `core.trigger.manual` | inline | On-demand user or API start |
93
+ | `core.trigger.scheduled` | [scheduled-trigger](plugins/scheduled-trigger/planning.md) | Recurring schedule |
94
+ | IS connector trigger | [connector-trigger](plugins/connector-trigger/planning.md) | External event; type `uipath.connector.trigger.<key>.<trigger>` |
95
+ | `core.trigger.conversation` | [conversational-agent](plugins/conversational-agent/planning.md) | Flow starts when a chat conversation is created, and emits its `conversationId` |
96
+ | `core.trigger.voice` | [inline-voice-agent](plugins/inline-voice-agent/planning.md) | Flow starts when a phone call arrives on a bound number (inbound voice topology) |
97
+
98
+ Every flow has exactly one trigger, first in topology. IS connector triggers replace manual or scheduled triggers. `core.trigger.manual` has no inputs and output port `output`.
99
+
100
+ ### Actions
101
+
102
+ | Node Type | Plugin | Select when |
103
+ | --- | --- | --- |
104
+ | `core.action.script` | [script](plugins/script/planning.md) | Custom logic, computation, formatting, transformation |
105
+ | `core.action.http.v2` | [http](plugins/http/planning.md) | REST API; connector or manual mode; replaces deprecated `core.action.http` |
106
+ | `core.action.transform` | [transform](plugins/transform/planning.md) | Declarative map, filter, or group-by |
107
+ | Wait for events | [connector-trigger](plugins/connector-trigger/planning.md) | Mid-flow external event; type `uipath.connector.event.<key>.<event>` with `input` |
108
+ | `uipath.pattern.batch-transform` | [batch-transform](plugins/batch-transform/planning.md) | Append LLM-generated columns to CSV rows |
109
+ | `uipath.pattern.deep-rag` (Summarize) | [summarize](plugins/summarize/planning.md) | Synthesis/Q&A over one document with optional citations |
110
+ | `core.logic.delay` | [delay](plugins/delay/planning.md) | Duration or date wait |
111
+ | `core.action.queue.create` | [queue](plugins/queue/planning.md) | Fire-and-forget robot work |
112
+ | `core.action.queue.create-and-wait` | [queue](plugins/queue/planning.md) | Robot work with result wait |
113
+ | `core.datafabric.read` | [data-fabric](plugins/data-fabric/planning.md) | Read one record or a filtered list from a Data Fabric entity |
114
+ | `core.datafabric.create` | [data-fabric](plugins/data-fabric/planning.md) | Insert a record and return the stored row |
115
+ | `core.datafabric.update` | [data-fabric](plugins/data-fabric/planning.md) | Patch named columns on one record |
116
+ | `core.datafabric.delete` | [data-fabric](plugins/data-fabric/planning.md) | Delete one record |
117
+ | `uipath.human-in-the-loop.quick-form` | [hitl](plugins/hitl/planning.md) | Inline human review, approval, or data entry |
118
+ | `uipath.conversational.wait-for-message` | [conversational-agent](plugins/conversational-agent/planning.md) | Pause until the user sends a chat message (initiates an exchange); returns the conversation context |
119
+ | `uipath.conversational.send-message` | [conversational-agent](plugins/conversational-agent/planning.md) | Write a message the flow composes itself into the chat |
120
+ | `uipath.conversational.get-conversation-context` | [conversational-agent](plugins/conversational-agent/planning.md) | Read latest conversation context without waiting for a new user message |
121
+ | `uipath.conversational.voice.create-outgoing-call` | [inline-voice-agent](plugins/inline-voice-agent/planning.md) | Dial an outbound phone call and emit its `callContext` (outbound voice topology) |
122
+ | `uipath.conversational.voice.end-call` | [inline-voice-agent](plugins/inline-voice-agent/planning.md) | End the active call in a voice flow |
123
+
124
+ ### Control Flow
125
+
126
+ | Node Type | Plugin | Select when |
127
+ | --- | --- | --- |
128
+ | `core.logic.decision` | [decision](plugins/decision/planning.md) | Binary boolean branch |
129
+ | `core.logic.switch` | [switch](plugins/switch/planning.md) | Three or more ordered cases |
130
+ | `core.logic.loop` | [loop](plugins/loop/planning.md) | Iterate collection |
131
+ | `core.logic.merge` | [merge](plugins/merge/planning.md) | Synchronize parallel branches |
132
+ | `core.control.end` | [end](plugins/end/planning.md) | Graceful completion; one per terminal path |
133
+ | `core.logic.terminate` | [terminate](plugins/terminate/planning.md) | Immediate fatal abort |
134
+ | `core.subflow` | [subflow](plugins/subflow/planning.md) | Isolated-scope group within one flow |
135
+
136
+ ### Connector Nodes
137
+
138
+ Connector nodes are Integration Service nodes, not built-in. They appear after `uip login` and `uip maestro flow registry pull`. Use [connector](plugins/connector/planning.md) when a pre-built connector exists. In Phase 1 record `connector: <service-name>` and intended operation; Phase 2 resolves exact type, connection, and fields.
139
+
140
+ ### Agent Nodes
141
+
142
+ | Type | Plugin | Select when |
143
+ | --- | --- | --- |
144
+ | `uipath.agent.autonomous` | [inline-agent](plugins/inline-agent/planning.md) | Low-code agent scaffolded inside this flow via `uip agent init --inline-in-flow`, tightly coupled, not independently reused |
145
+ | `uipath.core.agent.{key}` | [agent](plugins/agent/planning.md) | Separate in-solution or published agent, reusable and independently versioned |
146
+ | `uipath.agent.conversational` | [conversational-agent](plugins/conversational-agent/planning.md) | AI agent that runs a single response turn given a chat-history, streaming its messages and tool-calls to the conversation. In-solution and published chat agents use `uipath.core.agent.{key}` above |
147
+ | `uipath.agent.voice` | [inline-voice-agent](plugins/inline-voice-agent/planning.md) | AI agent that converses in real time on a live phone call — an inline conversational agent (`settings.voice` in its `agent.json`) wired to a `callContext` |
148
+
149
+ See [inline-agent/planning.md — Inline vs Published Agent Decision Table](plugins/inline-agent/planning.md#inline-vs-published-agent-decision-table).
150
+
151
+ ### Resource Nodes
152
+
153
+ | Category | Type | Plugin |
154
+ | --- | --- | --- |
155
+ | RPA Process | `uipath.core.rpa-workflow.{key}` | [rpa](plugins/rpa/planning.md) |
156
+ | Agent | `uipath.core.agent.{key}` | [agent](plugins/agent/planning.md) |
157
+ | Agentic Process | `uipath.core.agentic-process.{key}` | [agentic-process](plugins/agentic-process/planning.md) |
158
+ | Flow | `uipath.core.flow.{key}` | [flow](plugins/flow/planning.md) |
159
+ | API Workflow | `uipath.core.api-workflow.{key}` | [api-workflow](plugins/api-workflow/planning.md) |
160
+ | Human Task | `uipath.core.human-task.{key}` | [hitl](plugins/hitl/planning.md) |
161
+ | Document Extraction | `uipath.ixp.{modelName}.{fullyQualifiedName}` | [ixp](plugins/ixp/planning.md) |
162
+
163
+ IxP has a two-segment tail, unlike other resource types' single `{key}` tail; both segments are sanitized at registry emit time. See [plugins/ixp/planning.md](plugins/ixp/planning.md).
164
+
165
+ ### Placeholders
166
+
167
+ Use `core.logic.mock` for TBD steps, missing resources, or prototypes; it has `input` -> `output`.
168
+
169
+ ## Selecting External Service Nodes
170
+
171
+ Prefer, in order:
172
+
173
+ 1. A curated Integration Service connector ([connector](plugins/connector/planning.md)).
174
+ 2. A generated non-catalog activity when the connector lacks the activity but reports `V4Compatible` ([connector — decision order](plugins/connector/planning.md#decision-order)).
175
+ 3. `core.action.http.v2` connector mode when the connector lacks the activity and does not report `V4Compatible`, or manual mode for APIs without connectors ([http](plugins/http/planning.md)).
176
+ 4. An RPA workflow only when there is no API, such as a desktop app or terminal ([rpa](plugins/rpa/planning.md)).
177
+
178
+ Tiers 2 and 3 are decided by one call: `uip is connectors metadata <key> --output json`, then `Data[0].Flags.V4Compatible`.
179
+
180
+ **Data Fabric entity records are the one exception, and the split is by operation.** Record CRUD has two paths — the native `core.datafabric.*` nodes and the `uipath-uipath-dataservice` connector activities:
181
+
182
+ - **Record CRUD (read / create / update / delete) — default to the native node** wherever Flow carries it natively. It needs no Integration Service connection.
183
+ - **Every other Data Service operation — use the connector activities.** Only the four CRUD operations exist natively; attachments, file fields, entity metadata and everything else have no native node, so the connector is not a fallback there, it is the only path.
184
+ - **An explicit request for connector activities wins over both.** If the user asks for the Data Service connector by name, build it with the connector as long as that activity exists — do not override them with the native node.
185
+
186
+ Confirm the native node with the probe and recovery in [data-fabric/impl.md — Registry validation](plugins/data-fabric/impl.md#registry-validation), the single procedure for this error; on its final "use the connector" outcome, build with the connector activities. Never hand-write a `definitions[]` entry for a node the registry will not return. Rationale and the federated-entity case in [data-fabric/planning.md — Native node vs Data Service connector](plugins/data-fabric/planning.md#native-node-vs-data-service-connector--the-operation-decides).
187
+
188
+ ## Standard Port Reference
189
+
190
+ Every edge requires `sourcePort` and `targetPort`.
191
+
192
+ | Node Type | Inputs | Outputs |
193
+ | --- | --- | --- |
194
+ | `core.trigger.manual` | — | `output` |
195
+ | `core.trigger.scheduled` | — | `output` |
196
+ | `uipath.connector.trigger.*` | — | `output` |
197
+ | `core.trigger.conversation` | — | `output` |
198
+ | `core.trigger.voice` | — | `output` |
199
+ | `uipath.connector.event.*` | `input` | `output`, `error` |
200
+ | `core.action.script` | `input` | `success`, `error` |
201
+ | `core.action.http.v2` | `input` | `default`, `error`, `branch-{id}` dynamic per `inputs.branches` |
202
+ | `core.action.transform` | `input` | `output`, `error` |
203
+ | `uipath.pattern.batch-transform` | `input` | `output`, `error` |
204
+ | `uipath.pattern.deep-rag` | `input` | `output`, `error` |
205
+ | `core.logic.delay` | `input` | `output` |
206
+ | `core.logic.decision` | `input` | `true`, `false` |
207
+ | `core.logic.switch` | `input` | `case-{id}` dynamic per case, `default` |
208
+ | `core.logic.loop` | outer `input`; inner `continue`, `break` | outer `success`, `error`; inner `start` |
209
+ | `core.logic.merge` | multiple `input` | `output` |
210
+ | `core.control.end` | `input` | — |
211
+ | `core.logic.terminate` | `input` | — |
212
+ | `core.subflow` | `input` | `output`, `error` |
213
+ | `core.logic.mock` | `input` | `output` |
214
+ | `uipath.agent.autonomous` | `input` | `success`, `error`, `tool`, `context`, `escalation` |
215
+ | `uipath.agent.conversational` | `input` | `success`, `escalation`, `context`, `tool` |
216
+ | `uipath.agent.voice` | `input` | `success`, `error`, `tool`, `context`, `escalation` |
217
+ | `uipath.conversational.wait-for-message` | `input` | `output` |
218
+ | `uipath.conversational.send-message` | `input` | `output` |
219
+ | `uipath.conversational.get-conversation-context` | `input` | `output` |
220
+ | `uipath.conversational.voice.create-outgoing-call` | `input` | `success`, `error` |
221
+ | `uipath.conversational.voice.end-call` | `input` | `success`, `error` |
222
+ | `uipath.core.agent.*` | `input` | `output`, `error` |
223
+ | `uipath.core.rpa-workflow.*` | `input` | `output`, `error` |
224
+ | `uipath.core.human-task.*` | `input` | `output`, `error` |
225
+ | `uipath.core.flow.*` | `input` | `output`, `error` |
226
+ | `uipath.core.agentic-process.*` | `input` | `output`, `error` |
227
+ | `uipath.core.api-workflow.*` | `input` | `output`, `error` |
228
+ | `uipath.ixp.*` | `input` | `success`, `error` |
229
+ | `uipath.connector.*` | `input` | `output`, `error` |
230
+ | `core.action.queue.create` | `input` | `success` |
231
+ | `core.action.queue.create-and-wait` | `input` | `success` |
232
+ | `core.datafabric.read` | `input` | `output` |
233
+ | `core.datafabric.create` | `input` | `output` |
234
+ | `core.datafabric.update` | `input` | `output` |
235
+ | `core.datafabric.delete` | `input` | `output` (sequencing only — the node produces no data) |
236
+ | `uipath.human-in-the-loop.quick-form` | `input` | one `outcome-<outcome.id>` per outcome — see [hitl/impl.md](plugins/hitl/impl.md) |
237
+ | `uipath.core.human-task.{key}` | `input` | `output` |
238
+
239
+ `error` is an implicit source port on action nodes with `supportsErrorHandling: true`, off by default. Wire it only when requirements specify failure behavior; otherwise the node faults the flow. This differs from HTTP `inputs.branches` and content-based decision/switch routing. See [Implicit error port on action nodes](../shared/file-format.md#implicit-error-port-on-action-nodes).
240
+
241
+ ## Wiring Rules
242
+
243
+ 1. Connect source output ports to target input ports.
244
+ 2. Triggers have no input and are sources only.
245
+ 3. End/Terminate nodes have no output and are targets only.
246
+ 4. Every non-trigger node has at least one incoming edge.
247
+ 5. Every non-terminal node has at least one outgoing edge.
248
+ 6. Decisions have exactly one `true` and one `false` edge.
249
+ 7. Switches have one edge per case, plus `default` unless the cases are provably exhaustive (an agent-authored discriminator never is).
250
+ 8. A loop's inner `start` feeds the body, the last body node returns to `continue`, and outer `success` continues after all iterations.
251
+ 9. Merge accepts one input per parallel path.
252
+ 10. Do not create cycles except through Loop's `continue` handle.
253
+ 11. No dangling nodes: every node appears in the edge table as source or target.
254
+ 12. Add an `error` edge only for a specified failure fallback. Do not set `inputs.errorHandlingEnabled: true` without an error edge. When an error edge exists, set `inputs.errorHandlingEnabled: true`; CLI edge-add/format commands do this automatically, while direct JSON edits must include it. See [Implicit error port on action nodes](../shared/file-format.md#implicit-error-port-on-action-nodes).
255
+
256
+ Error handlers must produce a distinguishable failure terminal: a distinct End mapping an error/status `out`, `core.logic.terminate`, or a recovery path that rejoins only after valid data is obtained. Never route failure into the happy path or success End. Use Decision/Switch for successful-content routing, not failure detection. Plan required error edges in Phase 1.
257
+
258
+ ## Common Topology Patterns
259
+
260
+ - **Linear:** `Trigger -> Action A -> Action B -> End`
261
+ - **Conditional:** `Trigger -> Fetch -> Decision`; connect `true` and `false` to separate paths and terminals.
262
+ - **Parallel:** `Trigger -> Prepare`; fork to actions; join at `Merge`; continue to End.
263
+ - **Loop:** `Trigger -> Fetch List -> Loop`; `start` enters the body, the body returns to `continue`, and `success` exits to summary and End.
264
+ - **Mixed orchestration:** Maestro owns state, waits, branches, and SLAs; RPA performs mechanical legacy-system work; agents reason; humans approve. Reference separate published or in-solution artifacts rather than rebuilding them in the flow.
265
+ - **Scheduled batch:** `Scheduled Trigger -> HTTP -> Loop`; loop body creates queue items; outer success summarizes and ends.
266
+
267
+ ### No-API Source
268
+
269
+ A source with no API or connector cannot trigger Maestro directly. Use a scheduled RPA bot outside the flow to scrape it and add queue items or upload bucket files; the Maestro flow consumes the queue or scheduled bucket drop. Queue is best for separate cases; bucket is best for batches. Polling latency is at least the scraper interval; real-time is unavailable. Prefer a connector trigger when an event, webhook, or connector exists. The scraper belongs to [/uipath:uipath-rpa](/uipath:uipath-rpa) with scheduling from [/uipath:uipath-platform](/uipath:uipath-platform); only the consuming flow belongs here.
270
+
271
+ ## Output Format
272
+
273
+ Generate `<SolutionName>.uipath.flow.arch.plan.md` in the **solution directory**, the folder containing `.uipx`, not the project subfolder. The plan covers the entire solution.
274
+
275
+ ### 1. Summary
276
+
277
+ Write 2–3 sentences describing the end-to-end flow.
278
+
279
+ ### 2. Flow Diagram (Mermaid)
280
+
281
+ Use a complete diagram with all nodes, edges, branches, and port labels. Use `graph LR`, never `graph TD` or `flowchart`. Use `subgraph` for flows with 10+ nodes. Labels must be plain alphanumeric and spaces only: no `>`, `<`, `(`, `)`, `[`, `]`, `{`, `}`, `:`, `;`, `?`, `&`, or quotes. Do not put node types in labels. Use only `(text)`, `[text]`, and `{text}` shapes: triggers and terminals rounded, actions/connectors/placeholders rectangular, decisions/switches diamonds. Do not use quotes inside delimiters.
282
+
283
+ ### 3. Node Table
284
+
285
+ | # | Node ID | Name | Category | Node Type | Inputs | Outputs | Notes |
286
+ | --- | --- | --- | --- | --- | --- | --- | --- |
287
+ | 1 | trigger | Manual Trigger | trigger | `core.trigger.manual` | — | Trigger event | — |
288
+
289
+ Include one row per node. Use short alphanumeric or underscore IDs matching the diagram. Inputs are best guesses; use `<PLACEHOLDER>` for URLs, IDs, and connection details Phase 2 must resolve. Outputs describe values downstream nodes consume via `$vars.{nodeId}.*`. Notes identify Phase 2 concerns.
290
+
291
+ ### 4. Edge Table
292
+
293
+ | # | Source Node | Source Port | Target Node | Target Port | Condition/Label |
294
+ | --- | --- | --- | --- | --- | --- |
295
+ | 1 | trigger | output | nextNode | input | — |
296
+
297
+ Every node except the trigger must be a target; every node except End/Terminate must be a source. Ports must match [Standard Port Reference](#standard-port-reference). Include error edges exactly when requirements specify failure fallbacks, and ensure they reach a distinguishable failure terminal.
298
+
299
+ ### 5. Inputs & Outputs
300
+
301
+ | Direction | Name | Type | Description |
302
+ | --- | --- | --- | --- |
303
+ | `in` | inputName | `string` | Input description |
304
+ | `out` | outputName | `number` | Output description |
305
+ | `inout` | stateName | `array` | State description |
306
+
307
+ Include all flow inputs, outputs, and inout state.
308
+
309
+ ### 6. Connector Summary (omit if no connectors)
310
+
311
+ | Node ID | Service | Intended Operation | Phase 2 Action |
312
+ | --- | --- | --- | --- |
313
+ | nodeId | Service | Operation | Resolve connector key, bind connection, resolve IDs and fields |
314
+
315
+ ### 7. Open Questions (omit if none)
316
+
317
+ Prefix each item with `**[REQUIRED]**` or `**[OPTIONAL]**`. Include unresolved user decisions and verified missing connections/resources.
318
+
319
+ ## Mermaid Validation Rules
320
+
321
+ Before presenting the plan, validate every rule:
322
+
323
+ 1. First line is `graph LR`, not `flowchart`.
324
+ 2. Node IDs contain only `[a-zA-Z0-9_]`; use `fetchData`, not `fetch-data` or `fetch.data`.
325
+ 3. IDs must not start with or equal reserved words: `end`, `subgraph`, `graph`, `flowchart`, `direction`, `click`, `style`, `classDef`, `class`, `linkStyle`, `callback`, `default`. Avoid IDs such as `endWarm`, `defaultPath`, and `styleNode`.
326
+ 4. Labels have no quotes or prohibited special characters; replace `>` / `<` with words like over/under.
327
+ 5. Shapes are only `(text)`, `[text]`, and `{text}`. Do NOT use `([text])` (stadium), `{{text}}` (hexagon), or other extended shapes.
328
+ 6. Edges use `-->` or `-->|label|`; empty labels such as `-->||` are invalid. Write `A -->|success| B`, not `A -->success B` or `A --success--> B`.
329
+ 7. Subgraph IDs are unique and do not collide with node IDs.
330
+ 8. Every `subgraph` has a matching `end`.
331
+ 9. Do not use semicolons.
332
+ 10. Do not put blank lines inside the mermaid block.
333
+ 11. Every defined node is connected; every node-table node appears in the diagram; every edge-table edge appears in the diagram.
334
+ 12. Decisions show `true` and `false`; switches show every case plus `default` when the edge table has one; loops show the body and `continue`; parallel branches fork and converge at Merge.
335
+
336
+ ## Node Selection Heuristics
337
+
338
+ - **External service:** curated `uipath.connector.<key>.<operation>` -> [connector](plugins/connector/planning.md); connector without the activity and `V4Compatible` -> generated non-catalog activity ([connector/impl-inline.md](plugins/connector/impl-inline.md)); connector without the activity and not `V4Compatible` -> `core.action.http.v2` connector mode; no connector but REST API -> `core.action.http.v2` manual mode; no API -> [rpa](plugins/rpa/planning.md) or `core.logic.mock` if unpublished.
339
+ - **Branch:** two paths -> [decision](plugins/decision/planning.md); three or more -> [switch](plugins/switch/planning.md); HTTP response-status branch -> [http](plugins/http/planning.md) built-in branches.
340
+ - **Transform:** map/filter/group-by -> [transform](plugins/transform/planning.md); custom computation or strings -> [script](plugins/script/planning.md).
341
+ - **End:** normal completion -> [end](plugins/end/planning.md); fatal abort -> [terminate](plugins/terminate/planning.md).
342
+ - **Wait:** duration or date -> [delay](plugins/delay/planning.md); external robot result -> [queue](plugins/queue/planning.md) `create-and-wait`.
343
+ - **Human:** approval or data entry -> [hitl](plugins/hitl/planning.md), or `core.logic.mock` if unavailable.
344
+ - **Agent:** tightly coupled low-code agent inside flow -> [inline-agent](plugins/inline-agent/planning.md), `uipath.agent.autonomous`; coded or separate in-solution/published agent -> [agent](plugins/agent/planning.md), `uipath.core.agent.{key}`.
345
+ - **Chat:** text-based conversation the flow holds turn by turn -> [conversational-agent](plugins/conversational-agent/planning.md), `core.trigger.conversation` plus `uipath.conversational.wait-for-message` with responding chat agent(s) and `send-message` node(s); agent inside this flow -> `uipath.agent.conversational`; sibling or published agent -> [agent](plugins/agent/planning.md), `uipath.core.agent.{key}` with `isConversational`; single approval or data-entry without a full conversation -> [hitl](plugins/hitl/planning.md).
346
+ - **LLM over CSV/document:** CSV row columns -> [batch-transform](plugins/batch-transform/planning.md), `uipath.pattern.batch-transform`; one-document synthesis/Q&A/citations -> [summarize](plugins/summarize/planning.md), `uipath.pattern.deep-rag`; multi-step tool reasoning -> inline or published agent; ordinary reshaping -> transform.
347
+ - **Document extraction:** variable-layout PDF, scan, photo, or attachment -> [ixp](plugins/ixp/planning.md), `uipath.ixp.{modelName}.{fullyQualifiedName}`; structured source -> script or transform; free-form reasoning -> agent; untrained IxP model -> `core.logic.mock` plus Open Question.
348
+ - **Missing capability:** use `core.logic.mock`; identify the needed artifact and owning skill (`uipath-rpa` for desktop/browser or coded C# workflows, `uipath-agents` for agents). Phase 2 replaces the mock if published.
349
+
350
+ ## Handoff to Phase 2
351
+
352
+ Once the plan is approved, [Planning Phase 2: Implementation](planning-impl.md) must:
353
+
354
+ 1. Validate every node type with `uip maestro flow registry get`; read each plugin's `impl.md`.
355
+ 2. Resolve connector and resource nodes using relevant `impl.md` files, including [connector](plugins/connector/impl.md) and [rpa](plugins/rpa/impl.md).
356
+ 3. Confirm resources are published and obtain definitions.
357
+ 4. Validate required fields against user values.
358
+ 5. Replace `<PLACEHOLDER>` values with resolved IDs.
359
+ 6. Replace `core.logic.mock` nodes with real resources when available.
360
+ 7. Finalize implementation-ready details.
361
+
362
+ **Do not proceed to Phase 2 until the plan is approved, and route that approval through [SKILL.md](../../SKILL.md) rule #5 with the proceed option marked recommended.** Rule #5 then owns both branches: a user approves interactively, and its non-interactive fallback takes the marked option and records the unreviewed handoff. The mark is the whole mechanism — the fallback carries a headless run past a gate that has one and stops at a gate that does not.
363
+
364
+ **Write the plan before asking, always.** Phase 2 and the build both read its node and edge tables; without them the topology gets re-derived from scratch at every step, which costs more than the plan it replaces.