@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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.cursor-plugin/plugin.json +1 -1
- package/CODEOWNERS +12 -14
- package/package.json +1 -1
- package/skills/uipath-agents/references/coded/embedding-in-flows.md +1 -3
- package/skills/uipath-agents/references/coded/quickstart.md +0 -2
- package/skills/uipath-agents/references/lowcode/capabilities/inline-in-flow/inline-in-flow.md +10 -8
- package/skills/uipath-agents/references/lowcode/prompting/autonomous-agent-prompting-guide.md +1 -1
- package/skills/uipath-human-in-the-loop/SKILL.md +1 -3
- package/skills/uipath-human-in-the-loop/references/hitl-node-apptask.md +0 -2
- package/skills/uipath-human-in-the-loop/references/hitl-node-coded-action-app.md +0 -2
- package/skills/uipath-human-in-the-loop/references/hitl-node-quickform.md +2 -2
- package/skills/uipath-maestro-flow/.maintenance/README.md +265 -0
- package/skills/uipath-maestro-flow/.maintenance/check-all.sh +40 -0
- package/skills/uipath-maestro-flow/.maintenance/check-anchors.sh +101 -0
- package/skills/uipath-maestro-flow/.maintenance/check-depth.sh +132 -0
- package/skills/uipath-maestro-flow/.maintenance/check-link-text.sh +123 -0
- package/skills/uipath-maestro-flow/.maintenance/check-links.sh +73 -0
- package/skills/uipath-maestro-flow/.maintenance/check-orphans.sh +93 -0
- package/skills/uipath-maestro-flow/.maintenance/check-plugin-pairs.sh +39 -0
- package/skills/uipath-maestro-flow/.maintenance/check-template.sh +42 -0
- package/skills/uipath-maestro-flow/.maintenance/check-uip-commands.sh +270 -0
- package/skills/uipath-maestro-flow/.maintenance/check-versions.sh +160 -0
- package/skills/uipath-maestro-flow/SKILL.md +69 -886
- package/skills/uipath-maestro-flow/references/author/CAPABILITY.md +207 -0
- package/skills/uipath-maestro-flow/references/author/brownfield.md +91 -0
- package/skills/uipath-maestro-flow/references/author/editing-operations-cli.md +190 -0
- package/skills/uipath-maestro-flow/references/author/editing-operations-json.md +374 -0
- package/skills/uipath-maestro-flow/references/author/editing-operations.md +104 -0
- package/skills/uipath-maestro-flow/references/author/greenfield.md +420 -0
- package/skills/uipath-maestro-flow/references/author/planning-arch.md +364 -0
- package/skills/uipath-maestro-flow/references/author/planning-impl.md +291 -0
- package/skills/uipath-maestro-flow/references/author/plugins/agent/impl.md +237 -0
- package/skills/uipath-maestro-flow/references/author/plugins/agent/planning.md +97 -0
- package/skills/uipath-maestro-flow/references/author/plugins/agentic-process/impl.md +107 -0
- package/skills/uipath-maestro-flow/references/author/plugins/agentic-process/planning.md +61 -0
- package/skills/uipath-maestro-flow/references/author/plugins/api-workflow/impl.md +108 -0
- package/skills/uipath-maestro-flow/references/author/plugins/api-workflow/planning.md +60 -0
- package/skills/uipath-maestro-flow/references/author/plugins/batch-transform/impl.md +171 -0
- package/skills/uipath-maestro-flow/references/author/plugins/batch-transform/planning.md +72 -0
- package/skills/uipath-maestro-flow/references/author/plugins/connector/impl-inline.md +120 -0
- package/skills/uipath-maestro-flow/references/author/plugins/connector/impl.md +463 -0
- package/skills/uipath-maestro-flow/references/author/plugins/connector/planning.md +186 -0
- package/skills/uipath-maestro-flow/references/author/plugins/connector-trigger/impl.md +517 -0
- package/skills/uipath-maestro-flow/references/author/plugins/connector-trigger/planning.md +115 -0
- package/skills/uipath-maestro-flow/references/author/plugins/conversational-agent/impl.md +309 -0
- package/skills/uipath-maestro-flow/references/author/plugins/conversational-agent/planning.md +133 -0
- package/skills/uipath-maestro-flow/references/author/plugins/data-fabric/impl.md +428 -0
- package/skills/uipath-maestro-flow/references/author/plugins/data-fabric/planning.md +188 -0
- package/skills/uipath-maestro-flow/references/author/plugins/decision/impl.md +83 -0
- package/skills/uipath-maestro-flow/references/author/plugins/decision/planning.md +38 -0
- package/skills/uipath-maestro-flow/references/author/plugins/delay/impl.md +38 -0
- package/skills/uipath-maestro-flow/references/author/plugins/delay/planning.md +53 -0
- package/skills/uipath-maestro-flow/references/author/plugins/end/impl.md +56 -0
- package/skills/uipath-maestro-flow/references/author/plugins/end/planning.md +28 -0
- package/skills/uipath-maestro-flow/references/author/plugins/flow/impl.md +107 -0
- package/skills/uipath-maestro-flow/references/author/plugins/flow/planning.md +58 -0
- package/skills/uipath-maestro-flow/references/author/plugins/hitl/impl.md +181 -0
- package/skills/uipath-maestro-flow/references/author/plugins/hitl/planning.md +166 -0
- package/skills/uipath-maestro-flow/references/author/plugins/http/impl-connector.md +86 -0
- package/skills/uipath-maestro-flow/references/author/plugins/http/impl-manual.md +68 -0
- package/skills/uipath-maestro-flow/references/author/plugins/http/impl.md +173 -0
- package/skills/uipath-maestro-flow/references/author/plugins/http/planning.md +107 -0
- package/skills/uipath-maestro-flow/references/author/plugins/inline-agent/impl.md +540 -0
- package/skills/uipath-maestro-flow/references/author/plugins/inline-agent/planning.md +115 -0
- package/skills/uipath-maestro-flow/references/author/plugins/inline-voice-agent/impl.md +269 -0
- package/skills/uipath-maestro-flow/references/author/plugins/inline-voice-agent/planning.md +128 -0
- package/skills/uipath-maestro-flow/references/author/plugins/ixp/impl.md +424 -0
- package/skills/uipath-maestro-flow/references/author/plugins/ixp/planning.md +95 -0
- package/skills/uipath-maestro-flow/references/author/plugins/loop/impl.md +403 -0
- package/skills/uipath-maestro-flow/references/author/plugins/loop/planning.md +60 -0
- package/skills/uipath-maestro-flow/references/author/plugins/merge/impl.md +43 -0
- package/skills/uipath-maestro-flow/references/author/plugins/merge/planning.md +24 -0
- package/skills/uipath-maestro-flow/references/author/plugins/queue/impl.md +82 -0
- package/skills/uipath-maestro-flow/references/author/plugins/queue/planning.md +44 -0
- package/skills/uipath-maestro-flow/references/author/plugins/rpa/impl.md +117 -0
- package/skills/uipath-maestro-flow/references/author/plugins/rpa/planning.md +61 -0
- package/skills/uipath-maestro-flow/references/author/plugins/scheduled-trigger/impl.md +56 -0
- package/skills/uipath-maestro-flow/references/author/plugins/scheduled-trigger/planning.md +93 -0
- package/skills/uipath-maestro-flow/references/author/plugins/script/impl.md +98 -0
- package/skills/uipath-maestro-flow/references/author/plugins/script/planning.md +42 -0
- package/skills/uipath-maestro-flow/references/author/plugins/subflow/impl.md +164 -0
- package/skills/uipath-maestro-flow/references/author/plugins/subflow/planning.md +35 -0
- package/skills/uipath-maestro-flow/references/author/plugins/summarize/impl.md +189 -0
- package/skills/uipath-maestro-flow/references/author/plugins/summarize/planning.md +66 -0
- package/skills/uipath-maestro-flow/references/author/plugins/switch/impl.md +72 -0
- package/skills/uipath-maestro-flow/references/author/plugins/switch/planning.md +34 -0
- package/skills/uipath-maestro-flow/references/author/plugins/terminate/impl.md +48 -0
- package/skills/uipath-maestro-flow/references/author/plugins/terminate/planning.md +29 -0
- package/skills/uipath-maestro-flow/references/author/plugins/transform/impl.md +252 -0
- package/skills/uipath-maestro-flow/references/author/plugins/transform/planning.md +47 -0
- package/skills/uipath-maestro-flow/references/diagnose/CAPABILITY.md +73 -0
- package/skills/uipath-maestro-flow/references/diagnose/failure-modes.md +353 -0
- package/skills/uipath-maestro-flow/references/diagnose/troubleshooting-guide.md +174 -0
- package/skills/uipath-maestro-flow/references/evaluate/CAPABILITY.md +134 -0
- package/skills/uipath-maestro-flow/references/evaluate/commands-reference.md +376 -0
- package/skills/uipath-maestro-flow/references/evaluate/eval-sets-guide.md +227 -0
- package/skills/uipath-maestro-flow/references/evaluate/evaluators-guide.md +143 -0
- package/skills/uipath-maestro-flow/references/evaluate/running-guide.md +215 -0
- package/skills/uipath-maestro-flow/references/evaluate/upload-safety.md +94 -0
- package/skills/uipath-maestro-flow/references/operate/CAPABILITY.md +77 -0
- package/skills/uipath-maestro-flow/references/operate/manage.md +39 -0
- package/skills/uipath-maestro-flow/references/operate/run.md +121 -0
- package/skills/uipath-maestro-flow/references/operate/ship.md +57 -0
- package/skills/uipath-maestro-flow/references/shared/action-nodes.md +100 -0
- package/skills/uipath-maestro-flow/references/shared/cli-commands.md +269 -0
- package/skills/uipath-maestro-flow/references/shared/cli-conventions.md +178 -0
- package/skills/uipath-maestro-flow/references/shared/file-format.md +582 -0
- package/skills/uipath-maestro-flow/references/shared/node-output-wiring.md +86 -0
- package/skills/uipath-maestro-flow/references/shared/ux-narration-and-todos.md +113 -0
- package/skills/uipath-maestro-flow/references/shared/variables-and-expressions.md +787 -0
- package/skills/uipath-platform/references/integration-service/activities.md +2 -2
- package/skills/uipath-platform/references/integration-service/activity-generation.md +8 -1
- package/skills/uipath-platform/references/integration-service/triggers.md +1 -3
- package/version-manifest.json +1 -1
- package/skills/uipath-maestro-flow/examples/AquariumSafetyStop.flow.ts +0 -26
- package/skills/uipath-maestro-flow/examples/ArchiveCardExtract.flow.ts +0 -38
- package/skills/uipath-maestro-flow/examples/BakeOffEntryForm.flow.ts +0 -27
- package/skills/uipath-maestro-flow/examples/BeeHiveLedger.flow.ts +0 -61
- package/skills/uipath-maestro-flow/examples/BeltProgression.flow.ts +0 -53
- package/skills/uipath-maestro-flow/examples/BirdCountLookup.flow.ts +0 -24
- package/skills/uipath-maestro-flow/examples/ClubDirectory.flow.ts +0 -56
- package/skills/uipath-maestro-flow/examples/ConcertSoundcheck.flow.ts +0 -59
- package/skills/uipath-maestro-flow/examples/DoorbellLog.flow.ts +0 -45
- package/skills/uipath-maestro-flow/examples/FestivalMapScaffold.flow.ts +0 -22
- package/skills/uipath-maestro-flow/examples/FieldTripQuickForm.flow.ts +0 -45
- package/skills/uipath-maestro-flow/examples/FossilCatalogEnrich.flow.ts +0 -26
- package/skills/uipath-maestro-flow/examples/GallerySubmission.flow.ts +0 -67
- package/skills/uipath-maestro-flow/examples/GreenhouseWatering.flow.ts +0 -39
- package/skills/uipath-maestro-flow/examples/HarbourRadioLine.flow.ts +0 -31
- package/skills/uipath-maestro-flow/examples/HerbariumDispatch.flow.ts +0 -34
- package/skills/uipath-maestro-flow/examples/KilnReview.flow.ts +0 -38
- package/skills/uipath-maestro-flow/examples/LibraryDeskChat.flow.ts +0 -39
- package/skills/uipath-maestro-flow/examples/LighthouseSignal.flow.ts +0 -30
- package/skills/uipath-maestro-flow/examples/MeteorShowerPages.flow.ts +0 -39
- package/skills/uipath-maestro-flow/examples/NeighborhoodWalkPlanner.flow.ts +0 -27
- package/skills/uipath-maestro-flow/examples/ObservatorySeeing.flow.ts +0 -51
- package/skills/uipath-maestro-flow/examples/OralHistoryDigest.flow.ts +0 -31
- package/skills/uipath-maestro-flow/examples/PlanetariumConfirmation.flow.ts +0 -34
- package/skills/uipath-maestro-flow/examples/PlantNameAdvisor.flow.ts +0 -28
- package/skills/uipath-maestro-flow/examples/PostcardCaption.flow.ts +0 -44
- package/skills/uipath-maestro-flow/examples/PotteryStudioCallback.flow.ts +0 -41
- package/skills/uipath-maestro-flow/examples/RecipeScaler.flow.ts +0 -62
- package/skills/uipath-maestro-flow/examples/SeedPacketReader.flow.ts +0 -49
- package/skills/uipath-maestro-flow/examples/TideTableConverter.flow.ts +0 -35
- package/skills/uipath-maestro-flow/examples/TrailLogSummary.flow.ts +0 -75
- package/skills/uipath-maestro-flow/examples/WorkshopInventory.flow.ts +0 -27
- package/skills/uipath-maestro-flow/examples/bindings.json +0 -85
- package/skills/uipath-maestro-flow/references/CLI-LOOP.md +0 -309
- package/skills/uipath-maestro-flow/references/agent-resources.md +0 -74
- package/skills/uipath-maestro-flow/references/agent.md +0 -175
- package/skills/uipath-maestro-flow/references/agentic-process.md +0 -41
- package/skills/uipath-maestro-flow/references/api-workflow.md +0 -29
- package/skills/uipath-maestro-flow/references/author.md +0 -178
- package/skills/uipath-maestro-flow/references/batch-transform.md +0 -23
- package/skills/uipath-maestro-flow/references/bindings.md +0 -178
- package/skills/uipath-maestro-flow/references/branch.md +0 -18
- package/skills/uipath-maestro-flow/references/brownfield.md +0 -152
- package/skills/uipath-maestro-flow/references/connector-params.md +0 -624
- package/skills/uipath-maestro-flow/references/conversational.md +0 -77
- package/skills/uipath-maestro-flow/references/data-fabric.md +0 -268
- package/skills/uipath-maestro-flow/references/delay.md +0 -26
- package/skills/uipath-maestro-flow/references/diagnose.md +0 -141
- package/skills/uipath-maestro-flow/references/document-pipeline.md +0 -47
- package/skills/uipath-maestro-flow/references/error-handling.md +0 -75
- package/skills/uipath-maestro-flow/references/evaluate.md +0 -168
- package/skills/uipath-maestro-flow/references/event-trigger.md +0 -155
- package/skills/uipath-maestro-flow/references/form-trigger.md +0 -41
- package/skills/uipath-maestro-flow/references/hitl.md +0 -169
- package/skills/uipath-maestro-flow/references/http.md +0 -105
- package/skills/uipath-maestro-flow/references/inline-agent.md +0 -132
- package/skills/uipath-maestro-flow/references/ixp.md +0 -167
- package/skills/uipath-maestro-flow/references/loops.md +0 -77
- package/skills/uipath-maestro-flow/references/manual-trigger.md +0 -39
- package/skills/uipath-maestro-flow/references/operate.md +0 -204
- package/skills/uipath-maestro-flow/references/or-processes.md +0 -91
- package/skills/uipath-maestro-flow/references/parallel-merge.md +0 -21
- package/skills/uipath-maestro-flow/references/placeholder.md +0 -70
- package/skills/uipath-maestro-flow/references/published-function.md +0 -66
- package/skills/uipath-maestro-flow/references/queue.md +0 -53
- package/skills/uipath-maestro-flow/references/return.md +0 -20
- package/skills/uipath-maestro-flow/references/rpa-workflow.md +0 -27
- package/skills/uipath-maestro-flow/references/scheduled-trigger.md +0 -34
- package/skills/uipath-maestro-flow/references/script.md +0 -52
- package/skills/uipath-maestro-flow/references/subflow.md +0 -33
- package/skills/uipath-maestro-flow/references/summarize.md +0 -20
- package/skills/uipath-maestro-flow/references/switch.md +0 -20
- package/skills/uipath-maestro-flow/references/terminate.md +0 -22
- package/skills/uipath-maestro-flow/references/transform.md +0 -32
- package/skills/uipath-maestro-flow/references/voice.md +0 -70
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
# Inline Agent
|
|
2
|
-
|
|
3
|
-
*Exact signatures, fields, and defaults: `inlineAgent()`.*
|
|
4
|
-
|
|
5
|
-
An inline agent is defined inside this Flow project and may be connected to
|
|
6
|
-
tenant context, callable tools, and human escalation resources.
|
|
7
|
-
|
|
8
|
-
Signature:
|
|
9
|
-
`inlineAgent({ model, systemPrompt, userPrompt, inputs?, returns?, source?, temperature?, maxTokenPerResponse?, modelMaxTokens?, maxIterations?, mode?, guardrails?, context?, tools?, escalation? })`.
|
|
10
|
-
|
|
11
|
-
```ts
|
|
12
|
-
.step('triage', inlineAgent({ model: 'gpt-5.4',
|
|
13
|
-
systemPrompt: 'Return a result conforming to the output schema. category: billing | technical | account.',
|
|
14
|
-
userPrompt: 'Classify {{input.body}}', inputs: { body: input('body') },
|
|
15
|
-
returns: { category: 'string' } }))
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## Model and answer judgment
|
|
19
|
-
|
|
20
|
-
Select a model currently available to the tenant (`uip agent model list`) and
|
|
21
|
-
write prompts that make the requested decision and answer contract explicit.
|
|
22
|
-
Static checks can establish wiring and output shape, never the semantic quality
|
|
23
|
-
of the model's answer.
|
|
24
|
-
|
|
25
|
-
`returns` is the answer contract: the agent runtime returns those fields as a
|
|
26
|
-
typed object, so describe what each field holds ("Return a result conforming to
|
|
27
|
-
the output schema. `<field>`: `<how to fill it>`.") and never ask for JSON text,
|
|
28
|
-
which makes the model pack its whole answer into one string field.
|
|
29
|
-
|
|
30
|
-
## Context grounding
|
|
31
|
-
|
|
32
|
-
Context signature:
|
|
33
|
-
`{ name, id, folderPath?, folderKey?, query?, retrievalMode?, resultCount?, threshold?, fileExtension? }`.
|
|
34
|
-
|
|
35
|
-
Resolve the index from the tenant.
|
|
36
|
-
Know the name: use `solution resources list` below.
|
|
37
|
-
Discovering what exists: use the `uip context-grounding` bridge, which reports every index with its folder.
|
|
38
|
-
Not `uip maestro flow registry` (node manifests), not `uip maestro registry` (the connector library), not `uip or folders list`.
|
|
39
|
-
|
|
40
|
-
```bash
|
|
41
|
-
uip solution resources list --kind Index --source remote --search "<index-name>" --output json
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
Maps onto the signature as `Key` → `id`, `Name` → `name`, `Folder` → `folderPath`, `FolderKey` → `folderKey`.
|
|
45
|
-
Give `folderPath`: the emitted resource carries no index id, so the folder is half of how the runtime finds the index.
|
|
46
|
-
|
|
47
|
-
Local execution has no semantic retrieval service, so an inline-agent answer is ungrounded even when the resource wiring is present.
|
|
48
|
-
Platform evidence must establish that the intended index was used and that its retrieved knowledge influenced the answer.
|
|
49
|
-
|
|
50
|
-
The `uip context-grounding` bridge runs in the project's Python environment.
|
|
51
|
-
Activate the existing environment and run setup once before list/search; setup
|
|
52
|
-
is the command itself, not a `setup --help` probe:
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
source .venv/bin/activate
|
|
56
|
-
uip context-grounding setup
|
|
57
|
-
uip context-grounding list --folder-path "<folder-path>" --format json
|
|
58
|
-
uip context-grounding search \
|
|
59
|
-
--index-name "<index-name>" --query "<one bounded evidence query>" \
|
|
60
|
-
--folder-path "<folder-path>" --limit 5 --format json
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
Use `--folder-key` instead of `--folder-path` when that is the known identity.
|
|
64
|
-
The delegated command uses `--format json`; it does not use the outer CLI's
|
|
65
|
-
`--output json` spelling. One search that answers the stated grounding claim is
|
|
66
|
-
enough; do not repeat paraphrases solely for confidence.
|
|
67
|
-
|
|
68
|
-
## Tools
|
|
69
|
-
|
|
70
|
-
Tool signatures:
|
|
71
|
-
|
|
72
|
-
- `{ kind: 'builtin', tool: 'analyzefiles' | 'summarize' | 'batchtransform', ... }`
|
|
73
|
-
- `{ kind: 'connector', connector, operation, connection, folder, version?, object?, name?, description? }`
|
|
74
|
-
- `{ kind: 'process' | 'agent' | 'api' | 'flow' | 'maestro', key, name, folderPath, inputs?, returns? }`
|
|
75
|
-
- `{ kind: 'ixp', projectId, name, description?, versionTag?, attachment? }`
|
|
76
|
-
|
|
77
|
-
A connector tool needs `connection` and `folder`, `bindings.json` labels
|
|
78
|
-
resolved like `connector()`'s (see [bindings.md](bindings.md)). Missing either
|
|
79
|
-
is `INLINE_AGENT_TOOL_CONNECTOR_NO_CONNECTION` from `check`. `prepare` does not
|
|
80
|
-
read a tool's labels from the source, so pass them:
|
|
81
|
-
`uip maestro registry prepare <connector-key> --action <operation> --bind-connection <connection> --bind-folder <folder>`
|
|
82
|
-
finds the connection and writes both entries under the tool's labels.
|
|
83
|
-
`description` overrides the text the model is told the tool does; it defaults
|
|
84
|
-
to the library's operation description.
|
|
85
|
-
|
|
86
|
-
```ts
|
|
87
|
-
tools: [{
|
|
88
|
-
kind: 'connector', connector: 'uipath-uipath-airdk', operation: 'web-search',
|
|
89
|
-
connection: 'genai', folder: 'shared', // bindings.json labels
|
|
90
|
-
}]
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
A tool is invoked by the model, not by a control-flow edge. Local execution
|
|
94
|
-
skips tool resources, so it proves their wiring but not that the model called
|
|
95
|
-
them. A live test needs a tool-specific side effect or returned witness.
|
|
96
|
-
|
|
97
|
-
## Human escalation
|
|
98
|
-
|
|
99
|
-
Escalation signature:
|
|
100
|
-
`{ name, description?, app: { key, name, folderPath?, inputs?, outputs? }, recipients?, outcomes?, taskTitle?, priority?, labels? }`.
|
|
101
|
-
|
|
102
|
-
Whether and when to escalate is model judgment, and completion additionally
|
|
103
|
-
depends on a deployed app and a human. Local execution proves only resource and
|
|
104
|
-
contract wiring; live evidence must show the task, reviewer outcome, and resumed
|
|
105
|
-
agent behavior.
|
|
106
|
-
|
|
107
|
-
## Live-evidence limit
|
|
108
|
-
|
|
109
|
-
Headless local live mode calls a real model but substitutes a reachable model
|
|
110
|
-
and remains ungrounded; it has no tenant tool loop or human escalation. Treat it
|
|
111
|
-
as evidence that a real prompt produced the declared shape. Product debug is
|
|
112
|
-
the evidence for the actual configured model and cloud resources.
|
|
113
|
-
|
|
114
|
-
Compile emits the node plus a stable `<source>/agent.json` sidecar. Prompt variables
|
|
115
|
-
use `{{input.<name>}}`; `inputs` binds those names to flow references and `returns`
|
|
116
|
-
declares what the agent hands back.
|
|
117
|
-
|
|
118
|
-
## Guardrails and harness mode
|
|
119
|
-
|
|
120
|
-
`guardrails` is Agent Builder's own array, carried on the node and in the
|
|
121
|
-
sidecar. Each rail is `$guardrailType: 'custom'` (with `rules`) or
|
|
122
|
-
`'builtInValidator'` (with `validatorType` + `validatorParameters`), plus
|
|
123
|
-
`id`, `name`, `selector: { scopes: ['Agent'|'Llm'|'Tool'] }`, an `action`
|
|
124
|
-
(`block` with a reason, `filter` over fields, or `log` with a severity), and
|
|
125
|
-
`enabledForEvals`. Custom rules are `$ruleType: 'word' | 'number' | 'boolean'`
|
|
126
|
-
over a field selector, or `'always'`. A rail with no scopes or an empty rules
|
|
127
|
-
array can never fire — `check` rejects both.
|
|
128
|
-
|
|
129
|
-
`mode: 'standard' | 'advanced'` picks the harness; naming it selects the
|
|
130
|
-
node's 1.3 definition (omitting it keeps 1.2 byte-identically) and lands on
|
|
131
|
-
the sidecar's `settings.mode`. Guardrail/harness behavior is runtime-side:
|
|
132
|
-
offline rungs prove the emitted shape only.
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
# IxP Extraction
|
|
2
|
-
|
|
3
|
-
*Exact signatures, fields, and defaults: `ixpExtract()`.*
|
|
4
|
-
|
|
5
|
-
IxP extraction runs a published Intelligent eXtraction Platform project on a
|
|
6
|
-
Flow attachment.
|
|
7
|
-
|
|
8
|
-
Signature:
|
|
9
|
-
`ixpExtract({ project, modelName, name, folderName, fileRef, pageRange?, versionTag?, folderPath?, description? })`.
|
|
10
|
-
|
|
11
|
-
```ts
|
|
12
|
-
.step('extract', ixpExtract({ project: ixpNodeType,
|
|
13
|
-
modelName: 'invoice-model', name: 'Invoice Extractor',
|
|
14
|
-
folderName: 'Shared', fileRef: out('start', 'invoiceFile') }))
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## Listing published models
|
|
18
|
-
|
|
19
|
-
"What document extractors can I add to this flow?", "what IxP models can I use here?", "list published extractors", "what extraction nodes are in the registry?" — these ask what the tenant publishes.
|
|
20
|
-
They are not build requests.
|
|
21
|
-
One search answers them:
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
uip login status --output json # without login, tenant IxP nodes are hidden
|
|
25
|
-
uip maestro flow registry pull --force
|
|
26
|
-
uip maestro flow registry search 'uipath.ixp' -f 'type:startsWith=uipath.ixp' --output json
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Each `Data[]` entry is one published model (a.k.a. runtime project) visible to the flow registry on this tenant.
|
|
30
|
-
Present `DisplayName`, `NodeType` and `Version` as a table, and stop.
|
|
31
|
-
|
|
32
|
-
Rules for the listing path:
|
|
33
|
-
|
|
34
|
-
- **Do NOT call `registry get` on the search hits.** The search result already carries every field the answer needs. `registry get` resolves ONE node's authoring identity, so running it per hit turns a one-second answer into a call per published model — measured at 80 calls and 127 seconds on a tenant with 40 of them. Fan it out only when authoring a specific node, and then for that node alone.
|
|
35
|
-
- **Do NOT scaffold a solution, run `uip maestro flow init`, or write a `.flow.ts` or `.flow` file.** Listing is read-only Q&A.
|
|
36
|
-
- **Do NOT mock.** If `Data: []`, answer directly that no IxP models are published on this tenant. The `mock()` fallback is for build-time planning, not for listing-time Q&A.
|
|
37
|
-
- **Do NOT log in for the user.** If `uip login status` shows logged-out, tell the user to run `uip login` and stop — listing without auth returns OOTB-only results and is misleading.
|
|
38
|
-
- **Do NOT search by `runtime`, `document extractor`, `extractor`, or `IXP` (uppercase).** These return empty results or agent-tool variants, not extraction nodes. Use `uipath.ixp` (lowercase) only.
|
|
39
|
-
- **Do NOT switch to the `uipath-ixp` skill.** `uip ixp projects ...` lists IxP-product projects, not what is wired up for Maestro.
|
|
40
|
-
- **Do NOT use `uip maestro flow process list` or any Orchestrator folder iteration.** `flow process list` enumerates deployed flow process instances, not published models.
|
|
41
|
-
- **Do NOT guess `uip maestro flow list-*` or `uip maestro ixp list-*` subcommands.** None exist; the CLI returns `unknown command` and there is no fallback path to pursue.
|
|
42
|
-
|
|
43
|
-
A `uipath.agent.resource.tool.ixp.*` hit on a broader `ixp` search is the agent-tool variant, not a flow extraction node.
|
|
44
|
-
Treat it as "no extraction model published", and stop searching after that one broader check — do not iterate on registry searches.
|
|
45
|
-
|
|
46
|
-
## Resource identity
|
|
47
|
-
|
|
48
|
-
This is the AUTHORING path, for the one model a step will run.
|
|
49
|
-
To answer "which models exist", see [Listing published models](#listing-published-models) instead — the search alone answers that, and `registry get` must not be fanned out across its hits.
|
|
50
|
-
|
|
51
|
-
Refresh the registry first, then copy the complete node type and its companion
|
|
52
|
-
defaults. The node type is tenant/version identity, not a string to reconstruct:
|
|
53
|
-
|
|
54
|
-
```bash
|
|
55
|
-
uip maestro flow registry pull --force
|
|
56
|
-
uip maestro flow registry search '<project hint>' \
|
|
57
|
-
-f 'type:startsWith=uipath.ixp' \
|
|
58
|
-
--output-filter '[?AvailableOnTenant].NodeType' --output json
|
|
59
|
-
uip maestro flow registry get '<node-type>' \
|
|
60
|
-
--output-filter '{project:Node.nodeType,modelName:Node.inputDefaults.modelName,folderName:Node.inputDefaults.folderName,folderPath:Node.inputDefaults.model.folderPath,versionTag:Node.inputDefaults.versionTag,taxonomyProject:Node.inputDefaults.projectName}' \
|
|
61
|
-
--output json
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
`registry get` is the authoring source of truth for ONE node. Copy `project`, `modelName`,
|
|
65
|
-
`folderName`, `folderPath`, and `versionTag` from that response; do not switch to
|
|
66
|
-
`uip ixp projects ...` or reconstruct the deployment through other IxP APIs.
|
|
67
|
-
`--output-filter` runs against the response's `Data` field, so registry-get paths
|
|
68
|
-
start at `Node`. The compact projection avoids materializing the full schema.
|
|
69
|
-
|
|
70
|
-
When code must read selected extraction fields, inspect only the two result-item
|
|
71
|
-
schemas:
|
|
72
|
-
|
|
73
|
-
```bash
|
|
74
|
-
uip maestro flow registry get '<node-type>' \
|
|
75
|
-
--output-filter '{scalarResultMembers:keys(Node.outputDefinition.output.schema.properties.ExtractionResult.properties.ResultsDocument.properties.Fields.items.properties),tableResultMembers:keys(Node.outputDefinition.output.schema.properties.ExtractionResult.properties.ResultsDocument.properties.Tables.items.properties)}' \
|
|
76
|
-
--output json
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
Scalar results are under `ExtractionResult.ResultsDocument.Fields[]`; table
|
|
80
|
-
results are under `ExtractionResult.ResultsDocument.Tables[]`. In both arrays,
|
|
81
|
-
`FieldName` identifies the model field and `Values` carries its extracted values.
|
|
82
|
-
|
|
83
|
-
If the registry has no suitable published extractor, the requested acceptance
|
|
84
|
-
bar determines the next step. For a runtime or published-model requirement,
|
|
85
|
-
report the missing capability and stop. For a validate-only topology whose
|
|
86
|
-
purpose is to show where extraction belongs, put `mock()` in the extraction
|
|
87
|
-
position, complete and validate the surrounding flow, and report the placeholder
|
|
88
|
-
as the capability gap. Do not block a validate-only topology on an unavailable
|
|
89
|
-
extractor or downstream endpoint when placeholders preserve the requested graph.
|
|
90
|
-
`pageRange` is a product string; examples such as `1-5` are illustrative because
|
|
91
|
-
no local grammar is published.
|
|
92
|
-
|
|
93
|
-
## File input from a connector event
|
|
94
|
-
|
|
95
|
-
Read the trigger's `outputResponseDefinition` and pass the exact file-reference
|
|
96
|
-
field to `fileRef`. For example, a SharePoint-backed event that declares
|
|
97
|
-
`ReferenceID` is wired as `fileRef: out('start', 'ReferenceID')`. This direct
|
|
98
|
-
connector-event-to-IxP shape passes product validation; do not add a download
|
|
99
|
-
action merely to change the shape for a validate-only flow.
|
|
100
|
-
|
|
101
|
-
The SDK emits that `out(...)` handoff in the one envelope the IxP validator
|
|
102
|
-
accepts — a plain expression string:
|
|
103
|
-
|
|
104
|
-
```json
|
|
105
|
-
"fileRef": "=js:$vars.start.output.ReferenceID"
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
Do not replace it with a `{ "type": "jsExpression", ... }` envelope or a
|
|
109
|
-
hand-built attachment object. Add a download action only when the discovered
|
|
110
|
-
trigger contract has no file-reference field and requested runtime behavior
|
|
111
|
-
requires the file bytes.
|
|
112
|
-
|
|
113
|
-
## Joined document-event recipe
|
|
114
|
-
|
|
115
|
-
`documentCreated` is the event subscription resolved from its live connection;
|
|
116
|
-
`extractor` is the identity object copied from `registry get` as described above.
|
|
117
|
-
The trigger field flows straight into extraction, and the whole result flows
|
|
118
|
-
straight into delivery:
|
|
119
|
-
|
|
120
|
-
```ts
|
|
121
|
-
const documentCreated = {
|
|
122
|
-
connector: 'uipath-microsoft-onedrive', event: 'file-created',
|
|
123
|
-
connection: 'documents', folder: 'documentsFolder',
|
|
124
|
-
};
|
|
125
|
-
|
|
126
|
-
export default flow('archive-card-intake')
|
|
127
|
-
.trigger(onEvent(documentCreated))
|
|
128
|
-
.step('extract', ixpExtract({
|
|
129
|
-
...extractor,
|
|
130
|
-
fileRef: out('start', 'ReferenceID'),
|
|
131
|
-
}))
|
|
132
|
-
.step('deliver', http({
|
|
133
|
-
method: 'POST', url: 'https://catalog.example.test/cards', managed: false,
|
|
134
|
-
body: out('extract'), contentType: 'application/json',
|
|
135
|
-
}))
|
|
136
|
-
.build();
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
## Downstream output
|
|
140
|
-
|
|
141
|
-
`out('<ixp-step>')` is the extraction result object and can be forwarded as a
|
|
142
|
-
whole, including as an HTTP request body. Pass the expression directly; no
|
|
143
|
-
serializer inspection or taxonomy lookup is needed for that shape. The joined
|
|
144
|
-
recipe above shows the complete handoff.
|
|
145
|
-
|
|
146
|
-
A model taxonomy is needed only when the flow must select named extracted
|
|
147
|
-
fields. If the trained model version is already known, run
|
|
148
|
-
`uip ixp deployments get-taxonomy '<taxonomyProject>' --version <number>` once.
|
|
149
|
-
Retry the same command at most once, and only when the response says
|
|
150
|
-
`RetryLater` or reports a transient 5xx failure. Do not retry validation errors
|
|
151
|
-
or `RetryWillNotFix`, and do not explore `uip ixp projects ...` to reconstruct
|
|
152
|
-
the deployment. If the one retry also fails, use defensive reads from the
|
|
153
|
-
`Fields[]` or `Tables[]` paths above, state the assumed field names, and finish
|
|
154
|
-
the compile/validation loop. This is interim guidance for
|
|
155
|
-
[UiPath/cli#3512](https://github.com/UiPath/cli/issues/3512).
|
|
156
|
-
|
|
157
|
-
## Recovery and evidence
|
|
158
|
-
|
|
159
|
-
Wire `.onError(...)` when unreadable documents or no-match results should follow
|
|
160
|
-
a recovery path; otherwise failing loud may be the correct scenario behavior.
|
|
161
|
-
Local execution uses an extraction fixture and proves wiring only. Product
|
|
162
|
-
debug is required only when the acceptance bar asks for proof that the chosen
|
|
163
|
-
model processed a real file or returned semantically correct fields. For a
|
|
164
|
-
validate-only bar, green product validation plus the intended emitted wiring is
|
|
165
|
-
complete.
|
|
166
|
-
|
|
167
|
-
The compiler also emits the project's `ixpDeployment` bindings.
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
# Loops
|
|
2
|
-
|
|
3
|
-
Loop runs a body for every member of a collection.
|
|
4
|
-
|
|
5
|
-
Signature: `.loop(name, collection, bodyFn, options?)`.
|
|
6
|
-
|
|
7
|
-
```ts
|
|
8
|
-
.loop('eachOrder', input('orders'), (body) => body
|
|
9
|
-
.step('handle', script({ code:
|
|
10
|
-
'return { id: $vars.eachOrder.currentItem.id };' })))
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
The SDK does not expose mutation of a Flow variable on each iteration. Keep
|
|
14
|
-
per-item dispatch and decisions in the body. If work after the loop needs a
|
|
15
|
-
summary, compute it from data already available outside the loop or use a
|
|
16
|
-
dedicated step whose contract supplies that aggregate.
|
|
17
|
-
|
|
18
|
-
Use a one-armed branch to skip the rest of one iteration without terminating
|
|
19
|
-
the run. When the condition is false, that iteration completes and the loop
|
|
20
|
-
advances:
|
|
21
|
-
|
|
22
|
-
```ts
|
|
23
|
-
.loop('eachRepo', input('repos'), (body) => body
|
|
24
|
-
.step('fetch', http({ managed: false, url: 'https://example.test',
|
|
25
|
-
returns: { name: 'string' } }))
|
|
26
|
-
.branch('found', js`$vars.fetch.output.statusCode !== 404`,
|
|
27
|
-
(yes) => yes.step('notify', script({
|
|
28
|
-
code: 'return $vars.fetch.output.body.name;' }))))
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
The loop runs sequentially (`parallel: false`). Inside the body, read
|
|
32
|
-
`$vars.<loop>.currentItem` and `$vars.<loop>.currentIteration` — or
|
|
33
|
-
`v('eachOrder.currentItem')` from the builder.
|
|
34
|
-
|
|
35
|
-
`currentIndex` is the field name of the legacy loop 1.0.0. On the default 2.4
|
|
36
|
-
loop it reads `undefined`, so `check` refuses it (`UNKNOWN_LOOP_FIELD`) and
|
|
37
|
-
suggests `currentIteration - 1` for a 0-based index. Do not rely on the exact
|
|
38
|
-
base of `currentIteration` yet: the 2.4 definition documents it as 1-based,
|
|
39
|
-
but the local engine (`flow-debug`) currently reads 0 for the first item, and
|
|
40
|
-
the cloud runtime is not yet verified
|
|
41
|
-
([flow-builder-sdk#874](https://github.com/UiPath/flow-builder-sdk/issues/874)).
|
|
42
|
-
If a flow's result depends on the number, confirm it with a live
|
|
43
|
-
`uip maestro flow debug` run.
|
|
44
|
-
|
|
45
|
-
The item is named after the LOOP, not after the collection and not by a
|
|
46
|
-
convention: **there is no `$vars.item`, `$vars.currentItem` or `$vars.<collection>`.**
|
|
47
|
-
A branch or step that decides on the item has to name the loop, so a loop called
|
|
48
|
-
`eachIssue` reads `$vars.eachIssue.currentItem.priority` — never
|
|
49
|
-
`$vars.item.priority`, which resolves to nothing and takes the false arm on every
|
|
50
|
-
iteration without erroring.
|
|
51
|
-
|
|
52
|
-
## Loop options
|
|
53
|
-
|
|
54
|
-
Every `.loop()` emits the loop's 2.4 definition (inner `start`/`continue`/`break`
|
|
55
|
-
handles), the version the registry serves and the designer authors. The legacy
|
|
56
|
-
1.0.0 shape (body from `output`, back-edge into `loopBack`, `currentIndex`) is
|
|
57
|
-
emitted only for an explicit `{ version: '1.0.0' }`, which accepts none of the
|
|
58
|
-
options below.
|
|
59
|
-
|
|
60
|
-
- `parallel: true` — run iterations concurrently instead of sequentially.
|
|
61
|
-
- `completionCondition` — an expression checked after each iteration; the loop
|
|
62
|
-
stops early when it is true.
|
|
63
|
-
- `body.break()` — exit the whole loop from inside an arm. Terminal on its
|
|
64
|
-
path, like `.terminate()` but scoped to the loop; using it shows the loop's
|
|
65
|
-
break handle automatically (`breakEnabled`).
|
|
66
|
-
|
|
67
|
-
```ts
|
|
68
|
-
.var('found', types.string, '')
|
|
69
|
-
.loop('scan', input('items'), (body) => body
|
|
70
|
-
.step('probe', script({ code: 'return $vars.scan.currentItem;', returns: 'object' }),
|
|
71
|
-
{ updates: { found: js`$vars.probe.output.id` } })
|
|
72
|
-
.branch('hit', js`$vars.probe.output.score > 90`, (t) => t.break()),
|
|
73
|
-
{ completionCondition: js`$vars.found !== ""` })
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
Per-iteration flow-variable writes go through `{ updates }` on a body step —
|
|
77
|
-
`{ updates: { seen: js`$vars.seen + 1` } }` — never through a mutation node.
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
# Manual Trigger
|
|
2
|
-
|
|
3
|
-
The manual trigger is the default start node. It represents an on-demand call
|
|
4
|
-
from a person, test, API, or parent automation; there is no factory call.
|
|
5
|
-
|
|
6
|
-
Signature: omit `.trigger(...)` and declare caller values with `.input(...)`.
|
|
7
|
-
|
|
8
|
-
```ts
|
|
9
|
-
export default flow('lookup').input({ id: types.string }).output({ value: types.string })
|
|
10
|
-
.step('read', script({ code: 'return $vars.start.output.id;' }))
|
|
11
|
-
.return({ value: out('read') }).build();
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
Choose this trigger only when something will supply each run's inputs. A local
|
|
15
|
-
run is a valid execution of that contract, but it does not prove that any
|
|
16
|
-
external caller or deployment integration exists.
|
|
17
|
-
|
|
18
|
-
A flow's declared inputs are published as the trigger node's OUTPUT, so
|
|
19
|
-
`input('name')` reads `$vars.start.output.name` — `out('start', 'name')` is the
|
|
20
|
-
same reference spelled the long way. Both spellings run: the bare `$vars.name`
|
|
21
|
-
resolves identically on the real runtime. Prefer the trigger form anyway — it is
|
|
22
|
-
what the designer TYPES the expression scope as, so a bare read is the one the
|
|
23
|
-
canvas reports as "Property 'name' does not exist".
|
|
24
|
-
|
|
25
|
-
This holds for EVERY trigger kind, not just the manual one. A declared input is
|
|
26
|
-
bound to whichever node starts the flow (that binding is the `triggerNodeId` on
|
|
27
|
-
the emitted variable), so an `onEvent(...)` flow reads its inputs through its
|
|
28
|
-
trigger too. The difference is only in what ELSE is there: an event trigger's
|
|
29
|
-
output carries the connector's payload alongside the declared inputs, so
|
|
30
|
-
`$vars.start.output.subject` and `$vars.start.output.queueName` can both be
|
|
31
|
-
live references on the same node.
|
|
32
|
-
|
|
33
|
-
The node's id is `start` by default and is addressable. Rename it with
|
|
34
|
-
`.triggerId('intake')` and every input reference follows
|
|
35
|
-
(`$vars.intake.output.name`).
|
|
36
|
-
|
|
37
|
-
Inside a `subflow` body the same form addresses the CHILD's own start node,
|
|
38
|
-
which the compiler names `<callerStepId>Start` — `input()` renders it for you,
|
|
39
|
-
so this matters only if you hand-write a `$vars.…` string in a child script.
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
# Operate — ship, run, and manage a deployed flow
|
|
2
|
-
|
|
3
|
-
Everything that touches the cloud: upload, deploy, debug, trigger, inspect, and
|
|
4
|
-
instance lifecycle. All of it needs `uip login`; check with
|
|
5
|
-
`uip login status --output json`.
|
|
6
|
-
|
|
7
|
-
Authoring is upstream. Do not ship a flow whose source has not been through the
|
|
8
|
-
loop in [`CLI-LOOP.md`](CLI-LOOP.md) — `check` on the source, `compile` to emit,
|
|
9
|
-
`validate` on the emitted `.flow`.
|
|
10
|
-
|
|
11
|
-
## Lay out the emitted flow first
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
uip maestro flow format <Name>.flow --output json
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Layout is not an authoring concern — nothing upstream needs it, and `validate`
|
|
18
|
-
passes without it. It becomes one here, the moment the emitted file is opened
|
|
19
|
-
by something that draws it: `solution upload`, `flow debug`, or a person
|
|
20
|
-
opening the project in a designer. Run `format` before any of those, on the
|
|
21
|
-
artifact as last emitted.
|
|
22
|
-
|
|
23
|
-
`compile` writes a placeholder `ui.position` on each node and no top-level
|
|
24
|
-
`layout` block at all — and the canvas renders from `layout`. The placeholders
|
|
25
|
-
are one flat row, so a four-armed switch arrives as a single 3,000px line with
|
|
26
|
-
the arms in sequence rather than side by side. `format` builds `layout`, fans
|
|
27
|
-
the arms onto their own rows, sizes each node by its canvas shape, and reports
|
|
28
|
-
`NodesRepositioned`. Skipping it is the most common cause of misshapen nodes in
|
|
29
|
-
Studio Web.
|
|
30
|
-
|
|
31
|
-
## Refresh solution resources first
|
|
32
|
-
|
|
33
|
-
```bash
|
|
34
|
-
uip solution resources refresh --solution-folder <SolutionDir> --output json
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
Run this before `solution upload`, `solution publish` or `flow debug`, every
|
|
38
|
-
time. It syncs connection and process resource declarations from the project's
|
|
39
|
-
`bindings_v2.json` into the solution, and a stale declaration fails at run time
|
|
40
|
-
with a binding error even when the emitted `.flow` is correct — so the symptom
|
|
41
|
-
never points at the cause.
|
|
42
|
-
|
|
43
|
-
There is no positional solution argument. Omit `--solution-folder` only when the
|
|
44
|
-
shell is already in the solution root.
|
|
45
|
-
|
|
46
|
-
## Publish
|
|
47
|
-
|
|
48
|
-
"Publish", with no target named, means **Studio Web**:
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
uip solution upload <SolutionDir> --output json
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
Pass the solution root — the directory holding the `.uipx` — or `.` from inside
|
|
55
|
-
it. From a nested project folder pass `..` or the absolute path, never the
|
|
56
|
-
solution name again: that resolves to a child path which does not exist. Report
|
|
57
|
-
the Studio Web URL when it succeeds.
|
|
58
|
-
|
|
59
|
-
Orchestrator is a different path, and only on an explicit request for it,
|
|
60
|
-
because it bypasses Studio Web and the flow cannot be visualised or edited
|
|
61
|
-
there:
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
uip maestro flow pack <project-path> <OutputDir>
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
then `uip solution publish` — see the `uipath-solution` skill. When the target is
|
|
68
|
-
genuinely ambiguous, ask before packing.
|
|
69
|
-
|
|
70
|
-
## Debug — a real end-to-end run
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
UIP_LOG_LEVEL=info uip maestro flow debug <project-dir> --output json
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
The argument is the PROJECT directory, the one holding `project.uiproj`.
|
|
77
|
-
|
|
78
|
-
`flow debug` executes the flow for real: it sends the emails, posts the
|
|
79
|
-
messages, calls the APIs. It is not a validation step — `validate` is. Run it
|
|
80
|
-
when the request is for a flow that works; ask when the request stops at build
|
|
81
|
-
or validate; and with nobody to ask, report the flow as unverified rather than
|
|
82
|
-
letting a passing `validate` stand as the result. Never debug a solution this
|
|
83
|
-
run did not scaffold: debug overwrites the Studio Web solution whose
|
|
84
|
-
`SolutionId` matches the local `.uipx`.
|
|
85
|
-
|
|
86
|
-
Operational constraints, each of which has its own failure:
|
|
87
|
-
|
|
88
|
-
- **Foreground, with a tool timeout of 10 minutes or more.** It takes 1-5
|
|
89
|
-
minutes and prints its JSON only at exit, so a shell that kills commands after
|
|
90
|
-
1-2 minutes loses the whole payload.
|
|
91
|
-
- **Poll the same process if the tool reports it still running.** An empty output
|
|
92
|
-
file means not finished, not failed.
|
|
93
|
-
- **Never start a second debug while one is running.** It re-uploads and
|
|
94
|
-
re-executes.
|
|
95
|
-
- **Re-run only after changing the flow.** Never to re-read or reshape output the
|
|
96
|
-
completed run already returned.
|
|
97
|
-
- **`Debug polling timed out after <N>s` is not a failure.** The run continues
|
|
98
|
-
server-side. Take `instanceId` from stderr and poll
|
|
99
|
-
`uip maestro flow debug-instance status <INSTANCE_ID> --output json`.
|
|
100
|
-
- **Do not pass `--folder-path` or `--folder-key`.** Debug provisions into your
|
|
101
|
-
personal workspace; a shared folder fails `HTTP 500` at
|
|
102
|
-
`Stage: prepare-custom-debug` with no instance started. Shared resources reach
|
|
103
|
-
the run through `resources refresh`, not through the debug folder. Use the flag
|
|
104
|
-
only when the account has no personal workspace, or the flow needs
|
|
105
|
-
folder-scoped assets or queues.
|
|
106
|
-
|
|
107
|
-
Inputs, for a flow with `.input(...)` parameters:
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
UIP_LOG_LEVEL=info uip maestro flow debug <project-dir> --output json \
|
|
111
|
-
--inputs '{"numberA": 5, "numberB": 7}'
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
Build them from real records, never invented values: an invented key matches no
|
|
115
|
-
record, the lookup returns `[]`, and the run faults on empty data. Read an entity
|
|
116
|
-
id from `uip df entities list --output json`, then a live record from
|
|
117
|
-
`uip df records list <ENTITY_ID> --output json`.
|
|
118
|
-
|
|
119
|
-
A `types.file` input takes a local file instead, repeatable, and the left side is
|
|
120
|
-
the input's own name:
|
|
121
|
-
|
|
122
|
-
```bash
|
|
123
|
-
--attachment <inputName>=<localPath>
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
At run time that variable is an OBJECT, not a path — a script reads the uploaded
|
|
127
|
-
name as `$vars.<triggerNodeId>.output.<inputName>.FullName`.
|
|
128
|
-
|
|
129
|
-
**A conversational flow cannot be debugged headlessly.** On a flow whose trigger
|
|
130
|
-
is `conversationTrigger()`, debug uploads, returns
|
|
131
|
-
`Code: FlowDebugStudioWebHandoff` with `Data.studioWebUrl`, and starts no run;
|
|
132
|
-
`--timeout` does nothing. Chat from Studio Web (`--open-in-browser` opens it) or
|
|
133
|
-
the Maestro VS Code extension.
|
|
134
|
-
|
|
135
|
-
### Reporting a debug run
|
|
136
|
-
|
|
137
|
-
`Data.studioWebUrl` and `Data.instanceId` are the **first two lines** of any
|
|
138
|
-
summary, before status text — they are what someone needs immediately, not after
|
|
139
|
-
scrolling:
|
|
140
|
-
|
|
141
|
-
```text
|
|
142
|
-
Studio Web URL: <url>
|
|
143
|
-
Instance ID: <instanceId>
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
Emit the label with `<not returned by CLI>` rather than dropping a line.
|
|
147
|
-
|
|
148
|
-
`Data.finalStatus: "Faulted"` means the cause is already in that same response.
|
|
149
|
-
Read it there rather than re-running. On a faulted run the CLI ignores
|
|
150
|
-
`--output-filter` and prints the whole envelope, so redirect and search the file:
|
|
151
|
-
|
|
152
|
-
```bash
|
|
153
|
-
UIP_LOG_LEVEL=info uip maestro flow debug <project-dir> --output json > /tmp/flow-debug.json
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
## Trigger a deployed process
|
|
157
|
-
|
|
158
|
-
```bash
|
|
159
|
-
uip maestro flow process list --output json
|
|
160
|
-
uip maestro flow process run <process-key> <folder-key> --output json \
|
|
161
|
-
--inputs '{"numberA": 5}' --attachment <inputName>=<localPath>
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
On `process run` only, `--attachment` overrides `--inputs` on a key collision,
|
|
165
|
-
and `--validate` accepts pre-uploaded attachment references for file slots —
|
|
166
|
-
they pass the JSON-schema check even though the slot's nominal type is `string`.
|
|
167
|
-
|
|
168
|
-
## Inspect a job
|
|
169
|
-
|
|
170
|
-
```bash
|
|
171
|
-
uip maestro flow job status <job-key> --output json
|
|
172
|
-
uip maestro flow job traces <job-key> --output json
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
Traces are the full execution timeline and are verbose. They are a last resort,
|
|
176
|
-
not a starting point.
|
|
177
|
-
|
|
178
|
-
## Instance lifecycle
|
|
179
|
-
|
|
180
|
-
Every `instance` command needs `--folder-key` (`-f`) or it is rejected before
|
|
181
|
-
reaching the API. Get one from `uip or folders list --output json`, or from the
|
|
182
|
-
job or process context. The instance id comes from a debug run's
|
|
183
|
-
`Data.instanceId`, a `job status` response, or `instance list`.
|
|
184
|
-
|
|
185
|
-
```bash
|
|
186
|
-
uip maestro flow instance pause <INSTANCE_ID> -f <FOLDER_KEY> --output json
|
|
187
|
-
uip maestro flow instance resume <INSTANCE_ID> -f <FOLDER_KEY> --output json
|
|
188
|
-
uip maestro flow instance cancel <INSTANCE_ID> -f <FOLDER_KEY> --output json
|
|
189
|
-
uip maestro flow instance retry <INSTANCE_ID> -f <FOLDER_KEY> --output json
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
Never `retry` a faulted instance before reading why it faulted — the fault cause
|
|
193
|
-
is in the debug response or the incident, and retrying without it repeats the
|
|
194
|
-
failure. When each takes effect and what is recoverable is Orchestrator's
|
|
195
|
-
lifecycle model, not this skill's; `uip maestro flow instance <sub> --help` has
|
|
196
|
-
the flags.
|
|
197
|
-
|
|
198
|
-
## Evidence boundary
|
|
199
|
-
|
|
200
|
-
A green `validate` proves the emitted `.flow` is well formed. Only a run proves
|
|
201
|
-
the flow works, and only against the tenant it ran on: an upload that succeeds
|
|
202
|
-
says nothing about whether the connections resolve, and a debug run that
|
|
203
|
-
completes says nothing about whether the answer was right. Report the instance
|
|
204
|
-
identity and the status the CLI returned, not an inference from either.
|