@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,227 @@
1
+ # Eval Sets and Data Points
2
+
3
+ An eval set is a JSON file containing test cases (data points) and evaluators. A Flow project may have multiple sets, typically one per scenario.
4
+
5
+ ## Eval Set Lifecycle
6
+
7
+ Run:
8
+
9
+ ```bash
10
+ uip maestro flow eval set add "<set_name>" \
11
+ [--evaluators <ref1>,<ref2>] \
12
+ [--entry-point <node_id>] \
13
+ --path <flow_project> --output json
14
+
15
+ uip maestro flow eval set list --path <flow_project> --output json
16
+
17
+ uip maestro flow eval set remove "<id_or_name>" --path <flow_project> --output json
18
+ ```
19
+
20
+ `--evaluators` accepts comma-separated evaluator IDs or generated file base names. If omitted, the set links to all evaluators present at creation and writes generated evaluator file refs such as `greeting-match-62c0793a.json`; prefer omission when using every current evaluator. Do not pass an evaluator display name such as `greeting-match`: this writes the display name into `evaluatorRefs`, which Studio Web eval runs cannot resolve. For an explicit list, run `uip maestro flow eval evaluator add/list --output json` and pass the generated ID/file ref. Evaluators added later are not auto-attached; rerun `set add` with explicit generated refs or carefully repair `evaluatorRefs` using CLI-created evaluator file refs.
21
+
22
+ `--entry-point` is stored as `selectedEntrypoint` and accepts `/Main.bpmn#start` or a start node ID such as `start_a1b2c3d4`. `eval run start` uses it unless overridden with `--entry-point`. Pin it when multiple entry points exist; otherwise the first start node found is used.
23
+
24
+ ## Data Point Lifecycle
25
+
26
+ Data points live inline in the eval set JSON. Run:
27
+
28
+ ```bash
29
+ uip maestro flow eval add "<data_point_name>" \
30
+ --set "<set_name>" \
31
+ --inputs '{"...":"..."}' \
32
+ [--expected '{"...":"..."}'] \
33
+ [--criteria '{"<evaluator_id>": {...}}'] \
34
+ [--input-file <key>=<path>] \
35
+ [--search-text "<text>"] \
36
+ --path <flow_project> --output json
37
+
38
+ uip maestro flow eval list --set "<set_name>" --path <flow_project> --output json
39
+
40
+ uip maestro flow eval remove "<id_or_name>" --set "<set_name>" --path <flow_project> --output json
41
+ ```
42
+
43
+ <a id="--criteria"></a>
44
+ <a id="--input-file-keypath"></a>
45
+ ### Inputs, Expected Values, and Criteria
46
+
47
+ `--inputs` must contain only keys matching the chosen entry point's declared input variables. If a variable is missing, add it or change the input JSON. To add a string input named `name`, run:
48
+
49
+ ```bash
50
+ uip maestro flow variable add ./MySolution/MyFlow/MyFlow.flow name \
51
+ --direction in --type string --output json
52
+ ```
53
+
54
+ Evaluator behavior:
55
+
56
+ - `exact-match`: compares output verbatim, or `expected[targetKey]` when the evaluator has `--target-key`.
57
+ - `json-similarity`: tree-compares with tolerance.
58
+ - `contains`: does not use `--expected`; use `--search-text`.
59
+ - `llm-judge-output`: substitutes `--expected` into `{{ExpectedOutput}}`.
60
+ - `llm-judge-strict-json`: substitutes it per key into `{{ExpectedOutput}}`.
61
+ - `llm-judge-trajectory`: uses it with `--expected-agent-behavior` set through `--criteria`.
62
+ - `llm-judge-trajectory-simulation`: behaves like `trajectory`, with simulation context.
63
+
64
+ `--criteria` contains per-evaluator overrides keyed by evaluator ID. Use it when evaluators in one set need different criteria:
65
+
66
+ ```json
67
+ {
68
+ "<evaluator_ref_for_trajectory>": {
69
+ "expectedAgentBehavior": "Agent calls the weather tool with the user's location, then returns a one-sentence summary."
70
+ },
71
+ "<evaluator_ref_for_output>": {
72
+ "expectedOutput": {"summary": "Sunny in NYC, 72°F"}
73
+ }
74
+ }
75
+ ```
76
+
77
+ When omitted, output evaluators fall back to `--expected` and trajectory evaluators use defaults. Always provide `expectedAgentBehavior` for trajectory evaluators; scoring against an empty `{{ExpectedAgentBehavior}}` is meaningless.
78
+
79
+ ### File and Contains Inputs
80
+
81
+ `--input-file <key>=<path>` is repeatable and attaches a staged file under the specified key for runtime use, including PDFs, CSVs, and images. Do not delete the source before the run completes.
82
+
83
+ `--search-text` is for `contains` evaluators. It attaches the substring to test and is equivalent to writing `criteria` for that evaluator.
84
+
85
+ ## Eval Set JSON Shape
86
+
87
+ ```json
88
+ {
89
+ "id": "<uuid>",
90
+ "name": "Smoke Tests",
91
+ "version": "1.0",
92
+ "evaluatorRefs": ["<evaluator-file-ref-1>.json", "<evaluator-file-ref-2>.json"],
93
+ "selectedEntrypoint": "/Main.bpmn#start",
94
+ "evaluations": [
95
+ {
96
+ "id": "<uuid>",
97
+ "name": "hello-test",
98
+ "inputs": {"message": "hello"},
99
+ "expectedOutput": {"reply": "Hello! How can I help you?"},
100
+ "evaluationCriterias": {
101
+ "<evaluator-ref-2>": {
102
+ "expectedAgentBehavior": "Agent responds with a friendly greeting."
103
+ }
104
+ }
105
+ }
106
+ ]
107
+ }
108
+ ```
109
+
110
+ Keep `version: "1.0"`; it identifies the new eval format. <!-- version-check-skip --> (eval-set file schema version, CLI-emitted by `eval set add` — not a `.flow` version)
111
+
112
+ - `evaluatorRefs` references CLI-generated evaluator files; prefer CLI commands over hand-editing.
113
+ - `selectedEntrypoint` pins the set's entry point; override it per run with `eval run start --entry-point`.
114
+ - `evaluations[]` is the inline data-point list; order is informational.
115
+ - `evaluationCriterias` (plural) maps per-data-point, per-evaluator overrides.
116
+
117
+ ## Aligning Inputs with the Flow Schema
118
+
119
+ The data point's `inputs` must match the chosen entry point's input schema. Mismatches produce errors such as `Input "name" is not declared as an input variable in the flow`. Before adding data points, inspect `<flow>.flow` for `variables` entries with `direction: "in"`, or run:
120
+
121
+ ```bash
122
+ uip maestro flow variable list <flow_file> --output json
123
+ ```
124
+
125
+ ## Simulations on Data Points
126
+
127
+ Simulations replace selected nodes during an eval run with controlled outputs. Target a component by its `.flow` node `id`. Run:
128
+
129
+ ```bash
130
+ uip maestro flow eval simulation add <component-id> \
131
+ --set "<set_name>" \
132
+ --data-point "<data_point_name>" \
133
+ --strategy Llm \
134
+ --component-type connector \
135
+ --simulation-instructions "Pretend to send the email and return success." \
136
+ --path <flow_project> --output json
137
+
138
+ uip maestro flow eval simulation add <component-id> \
139
+ --set "<set_name>" \
140
+ --data-point "<data_point_name>" \
141
+ --strategy Static \
142
+ --component-type agent \
143
+ --mock-value '{"status":"ok"}' \
144
+ --path <flow_project> --output json
145
+
146
+ uip maestro flow eval simulation list \
147
+ --set "<set_name>" \
148
+ --data-point "<data_point_name>" \
149
+ --path <flow_project> --output json
150
+
151
+ uip maestro flow eval simulation remove <component-id> \
152
+ --set "<set_name>" \
153
+ --data-point "<data_point_name>" \
154
+ --path <flow_project> --output json
155
+ ```
156
+
157
+ | Strategy | Use | Required or relevant flags |
158
+ |---|---|---|
159
+ | `Llm` | Plausible, non-deterministic output | `--simulation-instructions` (output schema auto-resolved) |
160
+ | `Static` | Identical output every run | `--mock-value <json>` |
161
+
162
+ The output schema is always auto-resolved — for both top-level and child (`--parent`) simulations. Top-level reads the `.flow` node outputs; child simulations resolve from the `.flow` edges (inline agents), `agent.json` resources (same-solution agents), or the platform API (published agents, requires `uip login`).
163
+
164
+ Simulations are stored inline in the data point's `simulations` array. Adding one for an existing `<component-id>` and data point replaces the existing simulation.
165
+
166
+ ### Child Simulations (Agent Tool Simulation)
167
+
168
+ When a flow has an agent node, you can simulate individual tools inside that agent instead of mocking the whole agent as one unit. Use `--parent <agent-component-id>` to target a child tool. The child's `<component-id>` is the tool's runtime name (e.g. `Web_Search`, `Send_Email`), not a workflow node ID.
169
+
170
+ ```bash
171
+ # Add a child tool simulation (Static — fixed output).
172
+ # If no parent simulation exists for <agent-node-id>, one is auto-created
173
+ # (type: agent, strategy: Llm).
174
+ uip maestro flow eval simulation add Web_Search \
175
+ --parent <agent-node-id> \
176
+ --set "<set_name>" \
177
+ --data-point "<data_point_name>" \
178
+ --strategy Static \
179
+ --mock-value '{"results": [{"title": "Example", "url": "https://example.com"}]}' \
180
+ --path <flow_project> --output json
181
+
182
+ # Add a child tool simulation (Llm — prompt-guided).
183
+ # Output schema is auto-resolved from the agent's tool definitions
184
+ # (inline, same-solution, or published agents).
185
+ uip maestro flow eval simulation add Send_Email \
186
+ --parent <agent-node-id> \
187
+ --set "<set_name>" \
188
+ --data-point "<data_point_name>" \
189
+ --strategy Llm \
190
+ --simulation-instructions "Return a success status with a generated messageId." \
191
+ --path <flow_project> --output json
192
+
193
+ # List child simulations on an agent node
194
+ uip maestro flow eval simulation list \
195
+ --parent <agent-node-id> \
196
+ --set "<set_name>" \
197
+ --data-point "<data_point_name>" \
198
+ --path <flow_project> --output json
199
+
200
+ # Remove a child simulation
201
+ uip maestro flow eval simulation remove Web_Search \
202
+ --parent <agent-node-id> \
203
+ --set "<set_name>" \
204
+ --data-point "<data_point_name>" \
205
+ --path <flow_project> --output json
206
+ ```
207
+
208
+ No separate parent simulation step is needed — passing `--parent` auto-creates the parent simulation (type `agent`, strategy `Llm`) if it does not exist yet. This means a single command is enough to add a child tool simulation.
209
+
210
+ When `--parent` is used, `--component-type` defaults to `Node` (the convention for child tool simulations). You can override it if needed.
211
+
212
+ The output schema is auto-resolved for child simulations on all agent types:
213
+ - **Inline canvas agents** (`uipath.agent.*`): resolved from the child tool node's outputs in the `.flow` file.
214
+ - **Same-solution agents** (with `inputs.source`): resolved from the inline agent's `agent.json` resources.
215
+ - **Published agents** (`uipath.core.agent.*`): resolved via the platform API (`simulatableComponents`). Requires `uip login`.
216
+
217
+ For `Static` strategy, the CLI also validates that `--mock-value` keys match the resolved schema properties, catching shape mismatches before the eval run.
218
+
219
+ Child simulations are stored in the parent's `childSimulations` array in the eval set JSON. Running `simulation add` with `--parent` twice for the same child `<component-id>` replaces the existing child simulation.
220
+
221
+ ## Anti-patterns
222
+
223
+ - Do not hand-write data-point `id` UUIDs. Run `uip maestro flow eval add`; the CLI generates fresh UUIDs and maintains `evalSetId`.
224
+ - Do not pass `--inputs` keys absent from the flow input schema; the CLI rejects them.
225
+ - Do not set `--expected '{}'` while omitting `--criteria` for trajectory evaluators; both placeholders are empty and scoring is meaningless.
226
+ - Do not delete attached input files before the run completes; the CLI references them until upload to Studio Web finishes.
227
+ - Do not expect `--evaluators` on `set add` to update automatically; later evaluators are not retroactively linked.
@@ -0,0 +1,143 @@
1
+ # Flow Evaluators Guide
2
+
3
+ The seven evaluator types for `uip maestro flow eval evaluator add --type <type>`. Flow uses the same `uipath-*` evaluator type IDs as the coded evaluator engine (NOT the legacy IDs the low-code `uipath-agents` skill uses). Each `--type` kebab-case value maps to a `uipath-*` evaluator under the hood:
4
+
5
+ | `--type` flag | Internal `evaluatorTypeId` | LLM-based | Score scale |
6
+ |---------------|---------------------------|-----------|-------------|
7
+ | `exact-match` | `uipath-exact-match` | No | Binary (0/1) |
8
+ | `json-similarity` | `uipath-json-similarity` | No | Continuous (0–1) |
9
+ | `contains` | `uipath-contains` | No | Binary (0/1) |
10
+ | `llm-judge-output` | `uipath-llm-judge-output-semantic-similarity` | Yes | Continuous (0–1) |
11
+ | `llm-judge-strict-json` | `uipath-llm-judge-output-strict-json-similarity` | Yes | Continuous (0–1) |
12
+ | `llm-judge-trajectory` | `uipath-llm-judge-trajectory-similarity` | Yes | Continuous (0–1) |
13
+ | `llm-judge-trajectory-simulation` | `uipath-llm-judge-trajectory-simulation` | Yes | Continuous (0–1) |
14
+
15
+ The four classification and tool-call evaluators (`uipath-binary-classification`, `uipath-multiclass-classification`, `uipath-tool-call-*`) that exist in the coded SDK are **not** exposed by `uip maestro flow eval evaluator add`. Use the seven listed above.
16
+
17
+ ## When to Pick Each Type
18
+
19
+ | Goal | Type | Notes |
20
+ |------|------|-------|
21
+ | Strict equality of a known output value | `exact-match` | Binary; no LLM. Cheapest. Use for deterministic agents. |
22
+ | Compare structured JSON outputs with tolerance for ordering / minor diffs | `json-similarity` | Tree-based; numeric tolerance ~1%, string Levenshtein. |
23
+ | Pass/fail on whether a substring appears | `contains` | Use `--search-text` on the data point, not the evaluator. |
24
+ | Score natural-language similarity between expected and actual | `llm-judge-output` | Default LLM judge. Set `--model`. |
25
+ | Per-key strict JSON scoring with LLM judgment on differences | `llm-judge-strict-json` | LLM penalizes per-field. Use when each output key matters independently. |
26
+ | Score whether the agent's reasoning path matches expected behavior | `llm-judge-trajectory` | Reads agent run history. Use `--expected-agent-behavior` on data points. |
27
+ | As above but with simulated tool calls / inputs | `llm-judge-trajectory-simulation` | Use when the flow can't safely execute real tools during eval. |
28
+
29
+ ## Adding an Evaluator (CLI)
30
+
31
+ ```bash
32
+ # Deterministic — no model needed
33
+ uip maestro flow eval evaluator add exact-greeting \
34
+ --type exact-match \
35
+ --target-key "greeting" \
36
+ --path ./MySolution/MyFlow --output json
37
+
38
+ # LLM-judge — model is effectively required
39
+ uip maestro flow eval evaluator add greeting-quality \
40
+ --type llm-judge-output \
41
+ --model gpt-4.1-2025-04-14 \
42
+ --description "Score greeting tone and completeness" \
43
+ --path ./MySolution/MyFlow --output json
44
+ ```
45
+
46
+ Critical: pass `--model` on every `llm-judge-*` evaluator. Empty `model` triggers a 500 from the LLM gateway only after retries — unfriendly to debug.
47
+
48
+ ## `--target-key`
49
+
50
+ Defaults to `*` (the entire output object). Set a specific key when only one field of the output should be scored:
51
+
52
+ - Output: `{"greeting": "Hello!", "metadata": {"latencyMs": 12}}`
53
+ - `--target-key "greeting"` scores only the greeting string, ignoring metadata noise.
54
+ - `--target-key "*"` (default) scores the whole object.
55
+
56
+ ## Evaluator JSON Shape
57
+
58
+ The CLI writes evaluator JSON files into the project's evaluator directory. Filenames follow `<name>-<suffix>.json` for CLI-created files; hand-written files can use any descriptive name. Let `eval set add` write `evaluatorRefs` instead of hand-editing them.
59
+
60
+ ### Deterministic example (`exact-match`)
61
+
62
+ ```json
63
+ {
64
+ "id": "<generate-uuid>",
65
+ "name": "exact-greeting",
66
+ "description": "Strict greeting match",
67
+ "version": "1.0",
68
+ "evaluatorTypeId": "uipath-exact-match",
69
+ "evaluatorConfig": {
70
+ "name": "exact-greeting",
71
+ "targetOutputKey": "greeting",
72
+ "caseSensitive": false,
73
+ "negated": false
74
+ }
75
+ }
76
+ ```
77
+
78
+ `exact-match`, `json-similarity`, and `contains` do NOT carry a `model` or `prompt`.
79
+
80
+ ### LLM-judge example (`llm-judge-output`)
81
+
82
+ ```json
83
+ {
84
+ "id": "<generate-uuid>",
85
+ "name": "greeting-quality",
86
+ "description": "Score greeting tone and completeness",
87
+ "version": "1.0",
88
+ "evaluatorTypeId": "uipath-llm-judge-output-semantic-similarity",
89
+ "evaluatorConfig": {
90
+ "name": "greeting-quality",
91
+ "model": "gpt-4.1-2025-04-14",
92
+ "temperature": 0,
93
+ "maxTokens": 4096,
94
+ "targetOutputKey": "*",
95
+ "prompt": "Score 0-1 the semantic similarity of {{ActualOutput}} vs {{ExpectedOutput}}. Return JSON {\"score\": N, \"reason\": \"...\"}."
96
+ }
97
+ }
98
+ ```
99
+
100
+ Template variables per type:
101
+
102
+ | Type | Placeholders |
103
+ |------|-------------|
104
+ | `llm-judge-output` | `{{ExpectedOutput}}`, `{{ActualOutput}}` |
105
+ | `llm-judge-strict-json` | `{{ExpectedOutput}}`, `{{ActualOutput}}` |
106
+ | `llm-judge-trajectory` | `{{AgentRunHistory}}`, `{{ExpectedAgentBehavior}}`, `{{UserOrSyntheticInput}}` |
107
+ | `llm-judge-trajectory-simulation` | `{{AgentRunHistory}}`, `{{ExpectedAgentBehavior}}`, `{{UserOrSyntheticInput}}`, `{{SimulationInstructions}}` |
108
+
109
+ When `--prompt` is omitted, the CLI inserts a built-in default for each type. Override with `--prompt` only when you need different wording or scoring criteria — keep the same placeholders.
110
+
111
+ ## Custom Prompts
112
+
113
+ ```bash
114
+ uip maestro flow eval evaluator add strict-match \
115
+ --type llm-judge-output \
116
+ --model gpt-4.1-2025-04-14 \
117
+ --prompt 'Score 0-1 how closely {{ActualOutput}} matches {{ExpectedOutput}}. Return JSON {"score": N, "reason": "..."}.' \
118
+ --path ./MySolution/MyFlow --output json
119
+ ```
120
+
121
+ Unknown placeholders are passed through to the LLM as literal text — they are not silent errors but they will not be substituted with run data.
122
+
123
+ ## Removing an Evaluator
124
+
125
+ ```bash
126
+ uip maestro flow eval evaluator remove greeting-quality \
127
+ --path ./MySolution/MyFlow --output json
128
+ ```
129
+
130
+ Removing an evaluator does NOT auto-clean `evaluatorRefs` arrays in eval sets that reference it. After removing, re-list eval sets and reconcile any stale refs:
131
+
132
+ ```bash
133
+ uip maestro flow eval set list --path ./MySolution/MyFlow --output json
134
+ ```
135
+
136
+ ## Anti-patterns
137
+
138
+ - **Don't pass `--type` in PascalCase.** `ExactMatch` fails; only `exact-match` is accepted.
139
+ - **Don't omit `--model` on `llm-judge-*`.** The cloud worker fail-fasts before calling the LLM gateway; the resulting 500 is unhelpful.
140
+ - **Don't hand-write evaluator refs unless you are repairing an eval set.** Omit `--evaluators` so the CLI links all current evaluators, or use `eval set add --evaluators <generated_id_or_file_base>`. Do not pass the evaluator display name.
141
+ - **Don't copy evaluator JSON across projects without regenerating UUIDs.** `id` collisions silently corrupt resolution.
142
+ - **Don't use deterministic evaluators (`exact-match`, `json-similarity`, `contains`) for natural-language outputs.** They will fail almost every test that paraphrases.
143
+ - **Don't mix trajectory and output evaluators on the same data point unless the data point provides both `--expected` and `--expected-agent-behavior`.** Otherwise one of them scores against an empty placeholder.
@@ -0,0 +1,215 @@
1
+ # Running Flow Evaluations
2
+
3
+ `uip maestro flow eval run *` — start, monitor, inspect, and compare evaluation runs. All run commands require `uip login` and a Flow solution that already exists in Studio Web.
4
+
5
+ > **Before running any of these:** read [upload-safety.md](upload-safety.md). The skill must NOT auto-run `uip solution upload` to satisfy the "solution must be in Studio Web" prerequisite. If the solution isn't in Studio Web, ask the user.
6
+
7
+ ## Start a Run
8
+
9
+ ```bash
10
+ uip maestro flow eval run start \
11
+ --set "<set_name>" \
12
+ --path <flow_project> \
13
+ [--entry-point <entry>] \
14
+ [--solution-id <id>] \
15
+ [--project-id <id>] \
16
+ [--folder-key <key>] \
17
+ [--debug-mode <mode>] \
18
+ [--wait [--timeout <seconds>]] \
19
+ --output json
20
+ ```
21
+
22
+ ### Resolution order for `--solution-id` / `--project-id`
23
+
24
+ The CLI auto-resolves these from project metadata in the working tree (typically `SolutionStorage.json` and the parent `.uipx`). Pass `--solution-id` or `--project-id` explicitly only when the working tree does not have those IDs (e.g., a freshly scaffolded local project that has never been uploaded).
25
+
26
+ If the auto-resolution fails AND you have not passed explicit IDs, the start command will error. Do NOT respond by running `uip solution upload` automatically — see [upload-safety.md](upload-safety.md) for the right action.
27
+
28
+ ### `--folder-key`
29
+
30
+ The Orchestrator folder key that scopes the run. Defaults to the user's personal workspace. Pass an explicit folder key when the eval should run in a shared/team folder.
31
+
32
+ ### `--wait` and `--timeout`
33
+
34
+ Without `--wait`, the command returns immediately with `EvalSetRunId`. With `--wait`, the CLI blocks until the run reaches a terminal state (`Completed` or `Failed`) or `--timeout` elapses (default 600s, hardcoded by the CLI).
35
+
36
+ `--timeout` only stops the local CLI from blocking. The server-side run continues regardless. Query progress with:
37
+
38
+ ```bash
39
+ uip maestro flow eval run status <eval_set_run_id> \
40
+ --set "<set_name>" --path <flow_project> --output json
41
+ ```
42
+
43
+ Polling cadence is not part of the public CLI contract — do not depend on a specific interval.
44
+
45
+ ### Output (no `--wait`)
46
+
47
+ ```json
48
+ {
49
+ "Code": "FlowEvalRunStarted",
50
+ "Data": {
51
+ "EvalSetRunId": "a1b2c3d4-...",
52
+ "EvalSetName": "Smoke Tests",
53
+ "DataPoints": 3,
54
+ "Evaluators": 2
55
+ }
56
+ }
57
+ ```
58
+
59
+ ### Output (`--wait`, on completion)
60
+
61
+ The CLI emits a summary plus per-data-point results. Use `run results` for the same data on a completed run.
62
+
63
+ ## Check Status
64
+
65
+ ```bash
66
+ uip maestro flow eval run status <eval_set_run_id> \
67
+ --set "<set_name>" \
68
+ --path <flow_project> \
69
+ --output json
70
+ ```
71
+
72
+ ```json
73
+ {
74
+ "Code": "FlowEvalRunStatus",
75
+ "Data": {
76
+ "EvalSetRunId": "a1b2c3d4-...",
77
+ "Status": "Completed",
78
+ "Score": 0.86,
79
+ "Duration": "42.5s"
80
+ }
81
+ }
82
+ ```
83
+
84
+ Status values: `Pending`, `Running`, `Completed`, `Failed`. `Completed` and `Failed` are terminal.
85
+
86
+ ## Detailed Results
87
+
88
+ ```bash
89
+ uip maestro flow eval run results <eval_set_run_id> \
90
+ --set "<set_name>" \
91
+ --path <flow_project> \
92
+ [--only-failed] \
93
+ [--verbose] \
94
+ [--export-format json|csv] \
95
+ --output json
96
+ ```
97
+
98
+ Per-data-point fields: `DataPoint`, `Status`, `EvaluatorScores`, `Duration`, `Error` (plus `Justifications` when `--verbose`).
99
+
100
+ ### `--only-failed`
101
+
102
+ Filter to data points that errored or scored a hard failure. Triage faster on large sets.
103
+
104
+ ### `--verbose`
105
+
106
+ Include the LLM judge's free-text justification per evaluator. Essential when a score is surprising.
107
+
108
+ ### `--export-format <json|csv>`
109
+
110
+ Write results to a file alongside the project (e.g., `eval-results-<timestamp>.json` or `.csv`). Useful for archiving or feeding into a dashboard.
111
+
112
+ ### Filtering with `--output-filter`
113
+
114
+ `--output-filter` takes a JMESPath expression and applies it to the JSON payload before printing. Useful for triage:
115
+
116
+ ```bash
117
+ # Show only data points named "checkout-flow"
118
+ uip maestro flow eval run results <run_id> \
119
+ --set "Smoke Tests" --path ./MySolution/MyFlow --output json \
120
+ --output-filter '[?DataPoint==`checkout-flow`]'
121
+
122
+ # Show only score and name per row
123
+ uip maestro flow eval run results <run_id> \
124
+ --set "Smoke Tests" --path ./MySolution/MyFlow --output json \
125
+ --output-filter '[*].{name: DataPoint, score: EvaluatorScores}'
126
+ ```
127
+
128
+ ## List Past Runs
129
+
130
+ ```bash
131
+ uip maestro flow eval run list \
132
+ --set "<set_name>" \
133
+ --path <flow_project> \
134
+ --output json
135
+ ```
136
+
137
+ Per-row: `EvalSetRunId`, `Status`, `Score`, `DataPoints`, `Duration`, `CreatedAt`.
138
+
139
+ ## Compare Two Runs
140
+
141
+ ```bash
142
+ uip maestro flow eval run compare <run_id_a> \
143
+ --compare-to <run_id_b> \
144
+ --set "<set_name>" \
145
+ --path <flow_project> \
146
+ --output json
147
+ ```
148
+
149
+ Output:
150
+
151
+ ```json
152
+ {
153
+ "Code": "FlowEvalRunComparison",
154
+ "Data": {
155
+ "RunA": { "Id": "...", "Score": 0.86, "Status": "Completed" },
156
+ "RunB": { "Id": "...", "Score": 0.80, "Status": "Completed" },
157
+ "ScoreDelta": 0.06,
158
+ "DataPoints": [
159
+ {
160
+ "DataPoint": "hello-test",
161
+ "ScoreA": 1.0, "ScoreB": 0.9, "Delta": "+0.1",
162
+ "StatusA": "Completed", "StatusB": "Completed"
163
+ }
164
+ ]
165
+ }
166
+ }
167
+ ```
168
+
169
+ `compare` aligns by data point `name` within the eval set. Comparing runs from different eval sets is not supported — the deltas would be meaningless.
170
+
171
+ Use `compare` after each prompt or flow change to verify the change improved scores without regressing other data points.
172
+
173
+ ## Workflow Example
174
+
175
+ ```bash
176
+ # 1. Verify the solution is in Studio Web (do NOT auto-upload — see upload-safety.md)
177
+ # If unsure, list runs first; absence of any error here implies the solution exists.
178
+ uip maestro flow eval run list --set "Smoke Tests" --path ./MySolution/MyFlow --output json
179
+
180
+ # 2. Start the run, block on completion
181
+ uip maestro flow eval run start \
182
+ --set "Smoke Tests" \
183
+ --path ./MySolution/MyFlow \
184
+ --wait --timeout 600 --output json
185
+
186
+ # 3. Inspect failures with justifications
187
+ uip maestro flow eval run results <run_id> \
188
+ --set "Smoke Tests" \
189
+ --only-failed --verbose \
190
+ --path ./MySolution/MyFlow --output json
191
+
192
+ # 4. After fixing the flow, re-run and compare
193
+ uip maestro flow eval run start --set "Smoke Tests" --path ./MySolution/MyFlow --wait --output json
194
+ uip maestro flow eval run compare <new_run_id> --compare-to <old_run_id> \
195
+ --set "Smoke Tests" --path ./MySolution/MyFlow --output json
196
+ ```
197
+
198
+ ## Failure Detection
199
+
200
+ A data point is considered failed when any of these are true:
201
+
202
+ - `Status` is `Failed`
203
+ - `Error` is non-null
204
+ - Any evaluator score type is `error`
205
+ - An exact-match evaluator returned `false`
206
+
207
+ Use `--only-failed` to filter to these rows. Use `--verbose` to read the justifications.
208
+
209
+ ## Anti-patterns
210
+
211
+ - **Don't auto-run `uip solution upload`** when `eval run start` errors with a missing-solution error. Stop and ask the user — see [upload-safety.md](upload-safety.md).
212
+ - **Don't depend on `--wait`'s polling cadence.** Treat as a black-box block.
213
+ - **Don't compare runs from different eval sets.** `compare` aligns by data point name; cross-set deltas are meaningless.
214
+ - **Don't rely on aggregate `Score` alone.** Inspect per-evaluator scores. A 0.86 aggregate can mask a high-similarity-but-wrong-trajectory failure.
215
+ - **Don't keep retrying `eval run status` while `--wait` is still blocking from another shell.** Pick one — either `--wait` or polling status — to avoid race conditions on the same run ID.