@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,291 @@
1
+ # Planning Phase 2: Implementation Resolution
2
+
3
+ Resolve every implementation detail in the approved `.uipath.flow.arch.plan.md` and produce a build-ready `.uipath.flow.impl.plan.md`, using plugin `impl.md` files, wiring rules, and flow patterns.
4
+
5
+ > **Prerequisite:** `.uipath.flow.arch.plan.md` exists and its approval went through rule #5 ([planning-arch.md — Handoff to Phase 2](planning-arch.md#handoff-to-phase-2)).
6
+ >
7
+ > **Always validate with the registry**, including OOTB nodes. Port names, required inputs, and output schemas can change.
8
+
9
+ ## Implementation Resolution Process
10
+
11
+ ### Step 1 — Identify Nodes and Validate with Registry
12
+
13
+ Scan the approved architectural-plan node table and connector summary. Classify every node:
14
+
15
+ | Category | Identification | Action |
16
+ |---|---|---|
17
+ | Connector | Type starts with `uipath.connector.*`, or Notes say `connector:` | Run Step 2 with [connector/impl.md](plugins/connector/impl.md); for a non-catalog `uipath.connector.custom.*` type use [connector/impl-inline.md](plugins/connector/impl-inline.md). |
18
+ | Resource | Type starts with `uipath.core.*`, or Notes say `resource:` | Run Step 3 with the relevant plugin: [rpa](plugins/rpa/impl.md), [agent](plugins/agent/impl.md), [agentic-process](plugins/agentic-process/impl.md), [flow](plugins/flow/impl.md), [api-workflow](plugins/api-workflow/impl.md), or [hitl](plugins/hitl/impl.md). |
19
+ | Mock | Type is `core.logic.mock` | Run Step 4. |
20
+ | OOTB | All other nodes, including Script, HTTP, Decision, and Loop | Run Step 1a with the relevant plugin `impl.md`. |
21
+
22
+ Validate **all nodes** through the registry before proceeding.
23
+
24
+ #### Step 1a — Validate All Node Types with Registry
25
+
26
+ For each node type, read its plugin `impl.md`, then run:
27
+
28
+ ```bash
29
+ uip maestro flow registry pull --force
30
+ uip maestro flow registry get <node-type> --output json
31
+ ```
32
+
33
+ Use these plugin mappings:
34
+
35
+ | Node type | Plugin |
36
+ |---|---|
37
+ | `core.action.script` | [script/impl.md](plugins/script/impl.md) |
38
+ | `core.action.http.v2` | [http/impl.md](plugins/http/impl.md) |
39
+ | `core.action.transform` | [transform/impl.md](plugins/transform/impl.md) |
40
+ | `core.logic.delay` | [delay/impl.md](plugins/delay/impl.md) |
41
+ | `core.logic.decision` | [decision/impl.md](plugins/decision/impl.md) |
42
+ | `core.logic.switch` | [switch/impl.md](plugins/switch/impl.md) |
43
+ | `core.logic.loop` | [loop/impl.md](plugins/loop/impl.md) |
44
+ | `core.logic.merge` | [merge/impl.md](plugins/merge/impl.md) |
45
+ | `core.control.end` | [end/impl.md](plugins/end/impl.md) |
46
+ | `core.logic.terminate` | [terminate/impl.md](plugins/terminate/impl.md) |
47
+ | `core.subflow` | [subflow/impl.md](plugins/subflow/impl.md) |
48
+ | `core.trigger.scheduled` | [scheduled-trigger/impl.md](plugins/scheduled-trigger/impl.md) |
49
+ | `core.trigger.conversation` | [conversational-agent/impl.md](plugins/conversational-agent/impl.md) |
50
+ | `uipath.agent.conversational` | [conversational-agent/impl.md](plugins/conversational-agent/impl.md) |
51
+ | `uipath.conversational.wait-for-message` | [conversational-agent/impl.md](plugins/conversational-agent/impl.md) |
52
+ | `uipath.conversational.send-message` | [conversational-agent/impl.md](plugins/conversational-agent/impl.md) |
53
+ | `uipath.conversational.get-conversation-context` | [conversational-agent/impl.md](plugins/conversational-agent/impl.md) |
54
+ | `core.trigger.voice` | [inline-voice-agent/impl.md](plugins/inline-voice-agent/impl.md) |
55
+ | `core.action.queue.*` | [queue/impl.md](plugins/queue/impl.md) |
56
+ | `core.datafabric.*` | [data-fabric/impl.md](plugins/data-fabric/impl.md) |
57
+ | `uipath.agent.autonomous` | [inline-agent/impl.md](plugins/inline-agent/impl.md) |
58
+ | `uipath.agent.voice` | [inline-voice-agent/impl.md](plugins/inline-voice-agent/impl.md) |
59
+ | `uipath.conversational.voice.create-outgoing-call` | [inline-voice-agent/impl.md](plugins/inline-voice-agent/impl.md) |
60
+ | `uipath.conversational.voice.end-call` | [inline-voice-agent/impl.md](plugins/inline-voice-agent/impl.md) |
61
+ | `uipath.core.agent.*` | [agent/impl.md](plugins/agent/impl.md) |
62
+ | `uipath.core.rpa-workflow.*` | [rpa/impl.md](plugins/rpa/impl.md) |
63
+ | `uipath.core.agentic-process.*` | [agentic-process/impl.md](plugins/agentic-process/impl.md) |
64
+ | `uipath.core.flow.*` | [flow/impl.md](plugins/flow/impl.md) |
65
+ | `uipath.core.api-workflow.*` | [api-workflow/impl.md](plugins/api-workflow/impl.md) |
66
+ | `uipath.core.hitl.*` | [hitl/impl.md](plugins/hitl/impl.md) |
67
+ | `uipath.ixp.*` | [ixp/impl.md](plugins/ixp/impl.md) |
68
+ | `uipath.connector.custom.*` | [connector/impl-inline.md](plugins/connector/impl-inline.md) |
69
+ | `uipath.connector.*` | [connector/impl.md](plugins/connector/impl.md) |
70
+ | `uipath.connector.trigger.*` | [connector-trigger/impl.md](plugins/connector-trigger/impl.md) |
71
+
72
+ For every node, record input port names for edge `targetPort`, output port names for edge `sourcePort`, fields where `required: true` in `inputDefinition`, and the `outputDefinition` schema. Update the node table when registry values differ from the planning guide.
73
+
74
+ ### Step 2 — Resolve Connector Nodes
75
+
76
+ For each connector node, follow the Configuration Workflow in [connector/impl.md](plugins/connector/impl.md), including connection binding, metadata retrieval, field resolution, and validation. Record the connection ID and resolved field values for the build.
77
+
78
+ ### Step 3 — Resolve Resource Nodes
79
+
80
+ For each RPA process, agent, flow, API workflow, or human-task node, follow its plugin discovery and validation steps. Run:
81
+
82
+ ```bash
83
+ uip maestro flow registry get "<node-type>" --output json
84
+ ```
85
+
86
+ Record `inputDefinition` and `outputDefinition` in the node table.
87
+
88
+ If Phase 1 marked a resource not found, use in-solution discovery first. Run from the flow project directory:
89
+
90
+ ```bash
91
+ uip maestro flow registry list --local --output json
92
+ uip maestro flow registry search "<resource-name>" --local --output json # keyword match when the list is long
93
+ ```
94
+
95
+ For a sibling project in the same `.uipx` solution, run:
96
+
97
+ ```bash
98
+ uip maestro flow registry get "<node-type>" --local --output json
99
+ ```
100
+
101
+ If it is not in the solution, run:
102
+
103
+ ```bash
104
+ uip maestro flow registry pull --force
105
+ uip maestro flow registry search "<resource-name>" --output json
106
+ ```
107
+
108
+ If neither source finds it, retain `core.logic.mock` and record the gap.
109
+
110
+ #### IxP nodes — context-dispatched, no bindings
111
+
112
+ IxP extraction nodes (`uipath.ixp.*`) skip binding resolution. At build time, emit design-time `folderKey` and `modelName` into the BPMN `model.context[]` array; the serializer pins `digitizationMode` to `"fileUpload"`. Do not put these in `bindings_v2.json`, a top-level `bindings[]`, or a connection binding.
113
+
114
+ Use `inputs.*` as the runtime source of truth and validate it against `registry get` `inputDefinition.properties`. Each node must carry structured `inputs.model` extraction-model metadata read by the `ixp-model-taxonomy` property-panel component. Copy `inputDefaults.model` verbatim; omitting it crashes the panel with `Cannot destructure property 'modelName' of 't' as it is undefined`. See [plugins/ixp/impl.md](plugins/ixp/impl.md) for the full JSON shape.
115
+
116
+ ### Step 4 — Replace Mock Nodes
117
+
118
+ For each `core.logic.mock` node:
119
+
120
+ 1. Run `uip maestro flow registry list --local --output json`, or run `uip maestro flow registry search "<name>" --local --output json` for a keyword match.
121
+ 2. If found locally, replace the mock with the in-solution resource type and update inputs and outputs.
122
+ 3. If not found locally, run `uip maestro flow registry search "<name>" --output json`.
123
+ 4. If published, replace the mock with the real resource type and update inputs and outputs.
124
+ 5. If absent from both, retain the mock and record it in **Open Questions** for user resolution.
125
+
126
+ ### Step 5 — Replace Placeholders
127
+
128
+ Update the architectural-plan node table:
129
+
130
+ - Replace `<PLACEHOLDER>` values with resolved IDs.
131
+ - Replace `connector: <service>` with actual node types.
132
+ - Replace `resource: <name>` with actual node types.
133
+ - Add resolved reference-field values to inputs.
134
+ - Derive outputs from registry `outputDefinition`, mirroring both keys and their `source`; an invented `source` can pass `flow validate` but resolve to null at runtime.
135
+
136
+ ### Step 6 — Write the Implementation Plan
137
+
138
+ Create `<SolutionName>.uipath.flow.impl.plan.md` beside `.uipath.flow.arch.plan.md` in the solution directory.
139
+
140
+ #### Output Format
141
+
142
+ ````markdown
143
+ # <SolutionName> Implementation Plan
144
+
145
+ ## Summary
146
+
147
+ 2-3 sentences describing the end-to-end flow and what this phase resolved: connector bindings, confirmed resources, and registry validations.
148
+
149
+ ## Flow Diagram (Mermaid)
150
+
151
+ Copy the mermaid diagram from `.uipath.flow.arch.plan.md`; update labels if mock replacement or connector resolution changes node types. Keep the same flow structure as the architectural visual reference.
152
+
153
+ ```mermaid
154
+ graph LR
155
+ trigger(Manual Trigger)
156
+ action1[Resolved Action 1]
157
+ decision{Resolved Decision}
158
+ end1(Done)
159
+ trigger -->|output| action1
160
+ action1 -->|success| decision
161
+ decision -->|true| end1
162
+ ```
163
+
164
+ ## Resolved Node Table
165
+
166
+ | # | Node ID | Name | Node Type | Inputs | Outputs | Connection ID | Notes |
167
+ |---|---|---|---|---|---|---|---|
168
+
169
+ ## Resolved Edge Table
170
+
171
+ Copy from `.uipath.flow.arch.plan.md`; update only if node IDs changed due to mock replacement.
172
+
173
+ ## Bindings
174
+
175
+ | Connector Key | Connection ID | Activity | Verified |
176
+ |---|---|---|---|
177
+
178
+ ## Global Variables
179
+
180
+ Copy the architectural plan's Inputs and Outputs section.
181
+
182
+ ## Changes from Architectural Plan
183
+
184
+ - List changes between `.uipath.flow.arch.plan.md` and this plan.
185
+ - Record connector resolutions, mock replacements, and node-type changes.
186
+ - Record port or input-field changes found during registry validation.
187
+
188
+ ## Open Questions
189
+
190
+ Prefix every question with `**[REQUIRED]**` or `**[OPTIONAL]**`. If none remain, write: `No open questions — all details resolved.`
191
+
192
+ - **[REQUIRED]** Which connection should be used for the connector?
193
+ - **[OPTIONAL]** Should the retry count be increased from the default?
194
+ ````
195
+
196
+ Add these architectural-plan columns: **Connection ID** (bound connection UUID for connector nodes) and **Verified** (whether the connection was pinged successfully).
197
+
198
+ ### Step 7 — Get Approval
199
+
200
+ Present a short chat summary containing:
201
+
202
+ 1. Registry validation results, confirming all OOTB ports and inputs match the plan.
203
+ 2. Number of resolved connector/resource nodes.
204
+ 3. Port or input-field changes found during validation.
205
+ 4. Remaining mock placeholders.
206
+ 5. Required fields needing user input.
207
+ 6. Connections needing creation.
208
+
209
+ Tell the user to review `<SolutionName>.uipath.flow.impl.plan.md`, including its updated mermaid diagram and registry confirmations. **Do not build until the plan is approved, and route that approval through [SKILL.md](../../SKILL.md) rule #5 with the proceed option marked recommended** — rule #5 owns both branches, so a user approves interactively and its non-interactive fallback takes the marked option and records the unreviewed build.
210
+
211
+ **Write the plan before asking, always.** The resolved node table, edge table, and bindings are what make the build mechanical instead of a per-node re-derivation.
212
+
213
+ ## Product Heuristics
214
+
215
+ These org-wide selection rules complement individual node descriptions.
216
+
217
+ ### Connecting to External Services
218
+
219
+ See [planning-arch.md — Selecting External Service Nodes](planning-arch.md#selecting-external-service-nodes) for the four-tier order: connector -> HTTP within connector -> standalone HTTP -> RPA.
220
+
221
+ ### Agent Nodes vs Workflow Logic
222
+
223
+ See [agent/planning.md](plugins/agent/planning.md) for the decision table:
224
+
225
+ - Use **agent nodes** for ambiguous input, reasoning, judgment, NLG, and similar tasks.
226
+ - Use **Script/Decision/Switch** for structured input, deterministic logic, and data transformation.
227
+ - Do not use an agent where Decision + Script is sufficient; agents are slower, more expensive due to LLM tokens, and less predictable.
228
+ - Use the hybrid pattern: workflow nodes fetch, transform, and route; agent nodes classify intent, draft responses, or extract entities.
229
+
230
+ ## Expressions and Variables
231
+
232
+ For declaration, types, scoping, updates, and expressions, see [variables-and-expressions.md](../shared/variables-and-expressions.md).
233
+
234
+ ### Quick Reference
235
+
236
+ Nodes communicate through `$vars`; downstream nodes access outputs as `$vars.{nodeId}.{outputProperty}`.
237
+
238
+ ```javascript
239
+ $vars.rollDice.output.roll // Script return value
240
+ $vars.fetchData.output.body // HTTP response body
241
+ $vars.fetchData.output.statusCode // HTTP response status
242
+ $vars.someNode.error.message // Error information
243
+ $vars.<loopId>.currentItem // Loop item inside loop body
244
+ ```
245
+
246
+ Prefixes:
247
+
248
+ - `=js:` is a full JavaScript expression evaluated by Jint, such as `=js:$vars.count > 10`.
249
+ - `{ }` performs string interpolation, such as `Order {$vars.orderId} is {$vars.status}`.
250
+
251
+ Variable directions in `variables.globals`:
252
+
253
+ - `in`: external, read-only after start.
254
+ - `out`: workflow output; map it on End nodes.
255
+ - `inout`: state variable updated through `variableUpdates`.
256
+
257
+ ## Wiring Rules
258
+
259
+ ### Port Compatibility
260
+
261
+ - Connect a source output port to a target input port.
262
+ - Source handles have `type: "source"`; target handles have `type: "target"`.
263
+ - Never connect two source ports or two target ports.
264
+
265
+ ### Connection Constraints
266
+
267
+ Nodes may enforce handle constraints:
268
+
269
+ | Constraint | Meaning |
270
+ |---|---|
271
+ | `minConnections: N` | Handle requires at least N edges; otherwise validation fails. |
272
+ | `maxConnections: N` | Handle accepts at most N edges. |
273
+ | `forbiddenSourceCategories: ["trigger"]` | The handle cannot receive connections from trigger nodes. |
274
+ | `forbiddenTargetCategories: ["trigger"]` | The output cannot connect to trigger nodes. |
275
+
276
+ Additional rules:
277
+
278
+ - Trigger nodes have only outgoing connections and no input port.
279
+ - End/Terminate nodes have only incoming connections and no output port.
280
+ - Control-flow outputs generally cannot loop to triggers.
281
+ - Decision and Switch nodes cannot receive connections from agent resource nodes.
282
+
283
+ ### Dynamic Ports
284
+
285
+ Some ports are configuration-generated:
286
+
287
+ - **HTTP Request:** one port per `branches` entry, named `branch-{id}`; see [http/impl.md](plugins/http/impl.md).
288
+ - **Switch:** one port per `cases` entry, named `case-{id}`; see [switch/impl.md](plugins/switch/impl.md).
289
+ - **Loop:** `success` fires after completion; `output` carries aggregated results; see [loop/impl.md](plugins/loop/impl.md).
290
+
291
+ When wiring a dynamic port, its ID must equal the configured item's `id`.
@@ -0,0 +1,237 @@
1
+ # Agent Node — Implementation
2
+
3
+ Agent nodes invoke UiPath AI agents through `uipath.core.agent.{key}`. Coded (Python) agents always use this plugin. Standalone low-code (`agent.json`) agents use it when in-solution siblings or published; inline low-code agents embedded as a UUID subdirectory use `uipath.agent.autonomous`—see the [inline-agent plugin](../inline-agent/impl.md).
4
+
5
+ Agents are either:
6
+
7
+ - **In this solution**: a sibling project. `{key}` is the local `resource.key` minted by `uip solution projects add` and written to `resources/solution_folder/process/agent/<CodedAgentProject>.json`. Runtime resolution uses the Studio Web projects API after `uip solution upload`; `definitions[]` uses `model.section: "In this solution"`.
8
+ - **Published**: an Orchestrator tenant resource. `{key}` is the Orchestrator-assigned resource key, discoverable with `uip maestro flow registry search`; `definitions[]` uses `category: "agent.published"` (registry output omits `model.section`).
9
+
10
+ The `nodes[]` shape is the same; only the `definitions[]` manifest differs.
11
+
12
+ ## Discovery and Registry Validation
13
+
14
+ Run these commands for published agents (requires `uip login`):
15
+
16
+ ```bash
17
+ uip maestro flow registry pull --force
18
+ uip maestro flow registry search "uipath.core.agent" --output json
19
+ ```
20
+
21
+ Only published agents from the logged-in tenant appear. Run these commands inside the flow project directory for in-solution agents; no login is required:
22
+
23
+ ```bash
24
+ uip maestro flow registry list --local --output json
25
+ uip maestro flow registry get "<node-type>" --local --output json
26
+ ```
27
+
28
+ These discover sibling agent projects in the same `.uipx` solution.
29
+
30
+ Run:
31
+
32
+ ```bash
33
+ uip maestro flow registry get "uipath.core.agent.{key}" --output json
34
+ uip maestro flow registry get "uipath.core.agent.{key}" --local --output json
35
+ ```
36
+
37
+ The non-local command requires `uip login` and shows only published tenant agents. Confirm from `registry get`:
38
+
39
+ - Ports are input `input` and output `output`.
40
+ - `outputDefinition.output.schema` contains `content` (string).
41
+ - `outputDefinition.error.schema` contains `code`, `message`, `detail`, `category`, `status`.
42
+ - `model.serviceType` is `Orchestrator.StartAgentJob`.
43
+ - `model.bindings.resourceSubType` is `Agent`.
44
+ - `model.bindings.resourceKey` is the `<FolderPath>.<AgentName>` string used to scope binding resolution.
45
+ - `inputDefinition` is the typed input schema, with one property per `entry-points.json` input field. Each property requires an `inputs.<field>` entry on the node instance; it is empty only for agents with no typed inputs (free-form). See [Wiring Inputs](#wiring-inputs).
46
+
47
+ For add, delete, and wiring procedures, see [editing-operations.md](../../editing-operations.md). Use the JSON below for node-specific `inputs`.
48
+
49
+ ## Node Instances
50
+
51
+ Per-instance data is `inputs`, `outputs`, and `display`; BPMN type, service type, version, and binding/context templates come from `definitions[]`.
52
+
53
+ ### Published
54
+
55
+ ```json
56
+ {
57
+ "id": "<NODE_ID>",
58
+ "type": "uipath.core.agent.<AGENT_UUID>",
59
+ "typeVersion": "<DEFINITION_VERSION>",
60
+ "display": { "label": "<LABEL>" },
61
+ "inputs": {
62
+ "<INPUT_FIELD>": {
63
+ "type": "jsExpression",
64
+ "expression": "$vars.<UPSTREAM_NODE_ID>.output.<FIELD>",
65
+ "fieldType": "<FIELD_TYPE>"
66
+ }
67
+ },
68
+ "outputs": {
69
+ "error": {
70
+ "type": "object",
71
+ "description": "Error information if the agent fails",
72
+ "source": "=Error",
73
+ "var": "error"
74
+ }
75
+ }
76
+ }
77
+ ```
78
+
79
+ Never invent these values; confirm all three with `registry get` before wiring:
80
+
81
+ - `type` suffix: the Orchestrator-assigned UUID, per ring and agent; read `nodeType` from `uip maestro flow registry search "uipath.core.agent"` or `registry get`.
82
+ - `typeVersion`: the manifest `version`, read from `uip maestro flow registry get <node-type> --output json` (`.version`).
83
+ - `resourceKey`: composite `<FolderPath>.<AgentName>`, read from `model.bindings.resourceKey`.
84
+
85
+ The `model` block belongs on the `definitions[]` manifest, not the instance. The manifest is auto-populated by `uip maestro flow registry pull`; never hand-author it.
86
+
87
+ ### In-solution
88
+
89
+ ```json
90
+ {
91
+ "id": "<NODE_ID>",
92
+ "type": "uipath.core.agent.<resourceKey>",
93
+ "typeVersion": "<DEFINITION_VERSION>",
94
+ "display": { "label": "<LABEL>", "icon": "<AGENT_ICON>" },
95
+ "inputs": {},
96
+ "outputs": {
97
+ "error": { "type": "object", "description": "Error information if the agent fails", "source": "=Error", "var": "error" }
98
+ }
99
+ }
100
+ ```
101
+
102
+ Declare `error` only; `output` is derived. Hand-authoring it makes the converter copy `source` verbatim, so `"=result.response"` resolves to null at runtime even when `flow validate` passes. `output` is allowed only with exactly `source: "=this"` and the agent's output schema. See [file-format.md § Node outputs](../../../shared/file-format.md#node-outputs).
103
+
104
+ Set `display.icon` by inspecting the sibling project root: use `"autonomous-agent"` when `agent.json` exists, otherwise `"coded-agent"`. Do not copy `.display.icon` from `uip maestro flow registry get --local`; that manifest reports `"coded-agent"` for every in-solution agent.
105
+
106
+ Never hand-author `definitions[]`. Run:
107
+
108
+ ```bash
109
+ uip maestro flow registry get "uipath.core.agent.<resourceKey>" --local --output json
110
+ ```
111
+
112
+ Extract the `Data.Node` object verbatim into `definitions[]`; hand construction can omit `model.section`, `runtimeConstraints`, and `supportsErrorHandling`. Read `<resourceKey>` from `resources/solution_folder/process/agent/<CodedAgentProject>.json` or from `uip maestro flow registry list --local --output json`. Read `<DEFINITION_VERSION>` from `.version` in local `registry get` output.
113
+
114
+ ## Top-level `bindings[]`
115
+
116
+ `bindings[]` is a sibling of `nodes`, `edges`, and `definitions`. Create exactly one entry per `(resourceKey, propertyAttribute)` pair. Multiple instances referencing one agent must reuse the same `bindings[].id`; never duplicate entries.
117
+
118
+ After writing the flow, group `bindings[]` by `(resourceKey, propertyAttribute)` and require each group to have length 1. Deduplicate any group longer than 1 before saving.
119
+
120
+ ```json
121
+ "bindings": [
122
+ {
123
+ "id": "<BINDING_ID_NAME>",
124
+ "name": "name",
125
+ "type": "string",
126
+ "resource": "process",
127
+ "resourceKey": "<resourceKey>",
128
+ "default": "<agent-name>",
129
+ "propertyAttribute": "name",
130
+ "resourceSubType": "Agent"
131
+ },
132
+ {
133
+ "id": "<BINDING_ID_FOLDER>",
134
+ "name": "folderPath",
135
+ "type": "string",
136
+ "resource": "process",
137
+ "resourceKey": "<resourceKey>",
138
+ "default": "<folder-path-or-empty>",
139
+ "propertyAttribute": "folderPath",
140
+ "resourceSubType": "Agent"
141
+ }
142
+ ]
143
+ ```
144
+
145
+ See [file-format.md — Bindings](../../../shared/file-format.md#bindings--orchestrator-resource-bindings-top-level-bindings) for resolution mechanics and why these entries are required.
146
+
147
+ ## Wiring Inputs
148
+
149
+ Create one `inputs.<field>` entry for every property in `inputDefinition.properties`. Use either shape below with the same binding:
150
+
151
+ ```json
152
+ "<INPUT_FIELD>": {
153
+ "type": "jsExpression",
154
+ "expression": "$vars.<UPSTREAM_NODE_ID>.output.<FIELD>",
155
+ "fieldType": "<FIELD_TYPE>"
156
+ }
157
+ ```
158
+
159
+ or:
160
+
161
+ ```json
162
+ "<INPUT_FIELD>": {
163
+ "type": "literal",
164
+ "expression": "{{ $vars.<UPSTREAM_NODE_ID>.output.<FIELD> }}",
165
+ "fieldType": "<FIELD_TYPE>"
166
+ }
167
+ ```
168
+
169
+ `literal` may mix static text and `{{ }}` interpolation. Never use a plain `"=js:..."` string; it is sent verbatim to the activity and fails with `Cannot find name '<identifier>'`. Set `<FIELD_TYPE>` to the property's JSON-schema type (`string`, `boolean`, `number`, etc.) from `inputDefinition.properties`; do not invent it.
170
+
171
+ For a trigger-to-agent flow, surface a flow input as a trigger-bound global:
172
+
173
+ ```json
174
+ "variables": {
175
+ "globals": [
176
+ { "id": "<INPUT_FIELD>", "direction": "in", "type": "string", "defaultValue": "", "triggerNodeId": "<TRIGGER_ID>" }
177
+ ]
178
+ }
179
+ ```
180
+
181
+ Connect trigger → agent → end:
182
+
183
+ ```json
184
+ "edges": [
185
+ { "id": "<EDGE_1>", "sourceNodeId": "<TRIGGER_ID>", "sourcePort": "output", "targetNodeId": "<AGENT_ID>", "targetPort": "input" },
186
+ { "id": "<EDGE_2>", "sourceNodeId": "<AGENT_ID>", "sourcePort": "output", "targetNodeId": "<END_ID>", "targetPort": "input" }
187
+ ]
188
+ ```
189
+
190
+ Reference upstream values as `$vars.<nodeId>.output.<field>` and flow globals as `$vars.<global>`. Agent inputs therefore reference `$vars.<TRIGGER_ID>.output.<INPUT_FIELD>`.
191
+
192
+ ## Conversational Agents
193
+
194
+ A conversational (text chat) agent uses this node type with a different input shape — `isConversational: true` plus a `conversationalAgentSettings` block, instead of the agent's own schema fields. It also needs the conversation trigger and wait-for-message loop around it.
195
+
196
+ All of that — the five-key settings block, the node JSON, the loop, and the ports — lives in [conversational-agent/impl.md](../conversational-agent/impl.md). Come back here only for discovery: an in-solution agent is visible only with `--local`.
197
+
198
+ ```bash
199
+ uip maestro flow registry get "uipath.core.agent.{key}" --local --output json
200
+ ```
201
+
202
+ ## Accessing Output
203
+
204
+ ```javascript
205
+ const response = $vars.<AGENT_NODE_ID>.output.content;
206
+ return { result: response };
207
+ ```
208
+
209
+ - `$vars.{nodeId}.output.content`: agent text response.
210
+ - `$vars.{nodeId}.error`: failure details.
211
+
212
+ ## If the Agent Does Not Exist Yet
213
+
214
+ Create it before wiring:
215
+
216
+ - **In-solution sibling, coded or low-code**: scaffold with `uipath-agents`, register with `uip solution projects add` to mint `resource.key`, then discover with `uip maestro flow registry list --local`. For coded agents, see [coded/embedding-in-flows.md](../../../../../uipath-agents/references/coded/embedding-in-flows.md).
217
+ - **Published coded**: run `uip codedagent deploy`, then `uip maestro flow registry pull --force`.
218
+ - **Published low-code**: run `uip solution deploy`, then `uip maestro flow registry pull --force`.
219
+
220
+ ## Using an Agent as a Tool Resource
221
+
222
+ To use a published coded or low-code agent as another agent's tool, add a `uipath.agent.resource.tool.agent` resource node inside the parent agent's canvas and wire it to the parent agent's `tool` handle. Do not add it at the top level of the flow.
223
+
224
+ For format and wiring details, see the `uipath-agents` skill:
225
+
226
+ - Coded agents: [coded/flow-integration.md § Pattern 3](../../../../../uipath-agents/references/coded/flow-integration.md#pattern-3-tool-resource-for-another-agent)
227
+ - Low-code agents: the `uipath-agents` skill's low-code references.
228
+
229
+ ## Debug
230
+
231
+ | Error | Cause | Fix |
232
+ | --- | --- | --- |
233
+ | Node type not found in registry | Agent is unpublished or registry is stale | For an in-solution agent, run `registry list --local`. Otherwise run `uip login` then `uip maestro flow registry pull --force`. For coded agents, ensure `uip codedagent deploy` completed successfully. |
234
+ | In-solution node does not resolve | `resourceKey` was invented, or `uip solution projects add` was not run | Run `uip maestro flow registry list --local` and use its `resourceKey`, which must equal `resource.key` in `resources/solution_folder/process/agent/<CodedAgentProject>.json`. |
235
+ | Agent execution failed | Underlying agent error | Inspect `$vars.{nodeId}.error`; for coded agents, test locally with `uip codedagent run`. |
236
+ | Empty `output.content` | Agent returned no response | Verify configuration in Orchestrator for published agents or Studio Web for in-solution agents. |
237
+ | `inputDefinition` is empty | Agent declares no typed input schema (free-form) | Wire upstream data through `jsExpression` inputs; see [Wiring Inputs](#wiring-inputs). |
@@ -0,0 +1,97 @@
1
+ # Agent Node — Planning
2
+
3
+ Agent nodes invoke UiPath AI agents from within a flow. Published agents appear in the registry after `uip login` + `uip maestro flow registry pull`. **In-solution** (unpublished) agents in sibling projects are discovered via `--local` — no login or publish required. Both **coded** (Python) and **low-code** (agent.json) agents appear here once deployed — the flow treats them identically.
4
+
5
+ > **Related plugin:** [inline-agent](../inline-agent/planning.md) covers low-code agents embedded as a UUID subdirectory **inside** the flow project (`uipath.agent.autonomous`). Coded agents always use this `agent` plugin, not `inline-agent`.
6
+
7
+ > **Choosing between coded and low-code, or wiring them into a flow:** see the `uipath-agents` skill — [coded-vs-lowcode-guide.md](../../../../../uipath-agents/references/coded-vs-lowcode-guide.md) for the comparison, [coded/flow-integration.md](../../../../../uipath-agents/references/coded/flow-integration.md) for coded-agent Flow patterns.
8
+
9
+ > **If the user names an existing agent, it is a published agent — not inline.** When a prompt says "use the X agent" / "call the Y agent" / "invoke the Z coded agent" / "use the W low-code agent", the user is referring to an agent that already exists in the tenant (or in-solution). ALWAYS run `uip maestro flow registry search "<name>" --output json` BEFORE deciding to scaffold an inline agent. The words "coded" and "low-code" describe the *implementation style* of a published agent — they do NOT mean "inline". Inline (`uipath.agent.autonomous`) is only correct when the user explicitly asks to embed, inline, or create a new agent from scratch inside this flow.
10
+
11
+ ## Node Type Pattern
12
+
13
+ `uipath.core.agent.{key}`
14
+
15
+ The `{key}` is the agent's unique identifier (typically a GUID) from Orchestrator.
16
+
17
+ ## When to Use
18
+
19
+ Use an Agent node when the flow needs to invoke a published AI agent for reasoning, judgment, or natural language processing.
20
+
21
+ ### Agent vs Script/Decision Decision Table
22
+
23
+ | Use an Agent node when... | Use Script/Decision/Switch when... |
24
+ | --- | --- |
25
+ | Input is ambiguous or unstructured (free text, emails, support tickets) | Input is structured and well-defined (JSON, form data) |
26
+ | Task requires reasoning or judgment (triage, classification, summarization) | Task is deterministic (if X then Y, map/filter/transform) |
27
+ | Branching depends on context that can't be reduced to simple conditions | Branching conditions are explicit and enumerable |
28
+ | You need natural language generation (draft emails, summaries) | You need data transformation or computation |
29
+
30
+ ### Anti-Pattern
31
+
32
+ Don't use an agent node for tasks that can be done with a Decision + Script. Agents are slower, more expensive (LLM tokens), and less predictable. Use them where their flexibility is actually needed.
33
+
34
+ ### Hybrid Pattern
35
+
36
+ Use workflow nodes for the deterministic parts (fetch data, transform, route) and agent nodes for the ambiguous parts (classify intent, draft response, extract entities). The flow orchestrates; the agent reasons.
37
+
38
+ ### When NOT to Use
39
+
40
+ - **Agent in the same solution but not yet published** — use `--local` discovery (see below)
41
+ - **Agent does not exist yet** — tell the user to create it in the same solution with `uipath-agents`, then use `--local` discovery
42
+ - **Task is deterministic** — use [Script](../script/planning.md) or [Decision](../decision/planning.md)
43
+ - **Need to call an external service API** — use [Connector](../connector/planning.md) or [HTTP](../http/planning.md)
44
+ - **Agent should be a tool for another agent** — don't use this node; instead add the agent as a tool resource (`uipath.agent.resource.tool.agent`) wired to a parent agent node. See the `uipath-agents` skill for the resource file format
45
+
46
+ ## Conversational Agents
47
+
48
+ A **conversational** agent — one that holds a text chat — uses this same node type. `uip agent init --conversational` and the registry mark it out:
49
+
50
+ | | Autonomous | Conversational |
51
+ | --- | --- | --- |
52
+ | `display.icon` | `autonomous-agent` | `conversational-agent` |
53
+ | `inputDefaults` | the agent's own input schema | `isConversational: true`, `conversationalAgentSettings: {}` |
54
+ | Usable as another agent's tool | yes | no — no `uipath.agent.resource.tool.agent.<id>` sibling is emitted |
55
+
56
+ The conversational agent node is only part of a chat. The conversation trigger, the wait-for-message loop, the `conversationalAgentSettings` wiring, and the node JSON for all three agent flavors live in [conversational-agent/planning.md](../conversational-agent/planning.md) — start there for any chat flow.
57
+
58
+ A published conversational agent gets its `isConversational` flag from its Orchestrator release; an in-solution one gets it from the sibling project's `agent.json`. Either way the registry reports it, so trust `registry get` rather than guessing from the name.
59
+
60
+ ## Ports
61
+
62
+ | Input Port | Output Port(s) |
63
+ | --- | --- |
64
+ | `input` | `output`, `error` |
65
+
66
+ The `error` port is the implicit error port shared with all action nodes — see [Implicit error port on action nodes](../../../shared/file-format.md#implicit-error-port-on-action-nodes).
67
+
68
+ ## Output Variables
69
+
70
+ - `$vars.{nodeId}.output` — the agent's response (contains `content` string)
71
+ - `$vars.{nodeId}.error` — error details if the agent fails (`code`, `message`, `detail`, `category`, `status`)
72
+
73
+ ## Discovery
74
+
75
+ **Published (tenant registry):**
76
+
77
+ ```bash
78
+ uip maestro flow registry pull --force
79
+ uip maestro flow registry search "uipath.core.agent" --output json
80
+ ```
81
+
82
+ Requires `uip login`. Returns published tenant resources only — for in-solution sibling projects, use the `--local` discovery below.
83
+
84
+ **In-solution (local, no login required):**
85
+
86
+ ```bash
87
+ uip maestro flow registry list --local --output json
88
+ uip maestro flow registry get "<node-type>" --local --output json
89
+ ```
90
+
91
+ Run from inside the flow project directory. Discovers sibling agent projects in the same `.uipx` solution.
92
+
93
+ ## Planning Annotation
94
+
95
+ In the architectural plan:
96
+ - If the agent exists: note as `resource: <agent-name> (agent)`
97
+ - If it does not exist: note as `[CREATE NEW] <description>` with skill `uipath-agents`