@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
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Upload Safety: Do Not Auto-Run `uip solution upload`
|
|
2
|
+
|
|
3
|
+
Never run `uip solution upload` automatically during an evaluation workflow. Always ask the user first. This applies to locally created, Studio Web-downloaded, VS Code-authored, or otherwise divergent solutions, including when the CLI reports `solution-id could not be resolved` or a similar error.
|
|
4
|
+
|
|
5
|
+
`uip solution upload` creates or overwrites the solution matched by the local `SolutionId` in Studio Web. Automatic upload can publish work in progress, overwrite concurrent Studio Web changes, or silently discard remote changes because local and remote state is not merged.
|
|
6
|
+
|
|
7
|
+
## Read-Only Resolution Check
|
|
8
|
+
|
|
9
|
+
This applies regardless of whether:
|
|
10
|
+
|
|
11
|
+
- The local project was created via `uip maestro flow init` and never uploaded.
|
|
12
|
+
- The local project was downloaded from Studio Web via `uip solution download` and edited locally.
|
|
13
|
+
- The user is working in a VS Code-authored solution / personal workspace and the project may not match what is on Studio Web.
|
|
14
|
+
- The CLI errors with `solution-id could not be resolved` or any variant.
|
|
15
|
+
|
|
16
|
+
## Why
|
|
17
|
+
|
|
18
|
+
`uip solution upload` is a write operation against Studio Web. It either creates a new solution or **overwrites** the existing one matched by the `SolutionId` in the local `.uipx` (bundling generates `SolutionStorage.json` from it; that file is read back only for a direct `.uis` upload) — the overwrite needs no flag and raises no prompt. The replaced contents are recorded as a restorable version (skipped entirely with `--no-snapshot`), but recovery is browser-only, after the fact, by the user — and it does not undo failure mode 1 below. None of this is a reason to skip asking. Three concrete failure modes if the skill auto-uploads:
|
|
19
|
+
|
|
20
|
+
1. **The user is iterating locally** in VS Code or the filesystem and intended to test something **before** publishing. Auto-upload pushes work-in-progress to Studio Web where teammates and triggers may pick it up.
|
|
21
|
+
2. **The user pulled the solution from Studio Web** to edit a small piece. Auto-upload sends the partial local state back, potentially **overwriting** changes another user made on Studio Web in the meantime.
|
|
22
|
+
3. **The local solution diverged from Studio Web** (e.g., a teammate edited the solution on Studio Web while the dev was working locally). Auto-upload silently discards the remote-side changes — they are not merged.
|
|
23
|
+
|
|
24
|
+
In all three cases the user loses work or surprises a teammate. The cost of pausing to ask is one prompt; the cost of an unwanted upload can be hours of recovery.
|
|
25
|
+
|
|
26
|
+
## What To Do Instead
|
|
27
|
+
|
|
28
|
+
When `eval run start` cannot resolve the solution:
|
|
29
|
+
|
|
30
|
+
1. **Stop and ask the user.** Use plain language: "Your Flow solution doesn't appear to be in Studio Web (or its IDs aren't resolvable from the local working tree). I can't run an eval until it is. How do you want to proceed?"
|
|
31
|
+
2. **Offer the options explicitly:**
|
|
32
|
+
- **Upload now** — the user runs (or asks the skill to run) `uip solution upload <SolutionDir> --output json`. They acknowledge that this will write to Studio Web.
|
|
33
|
+
- **Pass IDs explicitly** — the user provides `--solution-id` and `--project-id` for an existing Studio Web solution. The skill plumbs them through to `eval run start`.
|
|
34
|
+
- **Cancel** — they meant to test something else (e.g., `flow debug`).
|
|
35
|
+
3. **Wait for an explicit decision.** Do not infer one from context, prior commands, or comments in the project.
|
|
36
|
+
|
|
37
|
+
## How to Detect "Local Workspace or VS Code"
|
|
38
|
+
|
|
39
|
+
There is no single CLI flag that says "this project is local-only." The signals to weigh, in priority order:
|
|
40
|
+
|
|
41
|
+
1. **The `.uipx` carries an id Studio Web has never seen** (a fresh `solution init`, never uploaded). The upload would CREATE a new solution; the user might not want a new tenant entry.
|
|
42
|
+
2. **`.vscode/` directory exists in the solution root.** Strong signal that the dev is authoring in VS Code; assume they are iterating locally.
|
|
43
|
+
3. **The directory is under a workspace path the user has indicated they edit locally** (`~/Code/...`, `~/dev/...`, etc., or any path that is not the default Studio Web download location). Treat as local-first.
|
|
44
|
+
4. **`uip solution upload` has never been recorded** in the recent shell history or in the conversation. If the skill cannot point to a prior explicit upload, do not assume the project is in Studio Web.
|
|
45
|
+
|
|
46
|
+
If ANY of these signals is true, skip auto-upload entirely and ask.
|
|
47
|
+
|
|
48
|
+
None of these signals separates a first import from an overwrite of a live solution: an id from a downloaded or copied project names a solution the upload would replace, and the local tree alone cannot tell the two apart. Treat both as writes to ask about.
|
|
49
|
+
|
|
50
|
+
## How to Detect "Solution Already in Studio Web"
|
|
51
|
+
|
|
52
|
+
The cheapest check is to attempt a read-only run command before doing anything else:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
uip maestro flow eval run list --set "<set_name>" --path <flow_project> --output json
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
A successful response, including zero past runs, indicates that the solution is in Studio Web. A missing-solution or auth error means it is not uploaded for this workflow; ask before uploading. If `eval run start` fails with a resolution error, never auto-upload or retry by uploading.
|
|
59
|
+
|
|
60
|
+
## If Evaluation Cannot Resolve the Solution
|
|
61
|
+
|
|
62
|
+
1. Stop and ask: "Your Flow solution doesn't appear to be in Studio Web (or its IDs aren't resolvable from the local working tree). I can't run an eval until it is. How do you want to proceed?"
|
|
63
|
+
2. Offer:
|
|
64
|
+
- **Upload now** — the user runs, or explicitly asks the skill to run, `uip solution upload <SolutionDir> --output json`; state that this writes to Studio Web.
|
|
65
|
+
- **Pass IDs explicitly** — the user provides `--solution-id` and `--project-id` for an existing Studio Web solution; pass them through to `eval run start`.
|
|
66
|
+
- **Cancel** — they intended to test something else, such as `flow debug`.
|
|
67
|
+
3. Wait for an explicit decision. Never infer consent from context, prior commands, or project comments.
|
|
68
|
+
|
|
69
|
+
## Local-Workspace Signals
|
|
70
|
+
|
|
71
|
+
Treat the project as local-first and skip auto-upload if any signal is present:
|
|
72
|
+
|
|
73
|
+
1. `SolutionStorage.json` is missing or has no `SolutionId`; upload would create a new solution.
|
|
74
|
+
2. A `.vscode/` directory exists in the solution root.
|
|
75
|
+
3. The directory is under a user-indicated local workspace path, such as `~/Code/...` or `~/dev/...`, rather than the default Studio Web download location.
|
|
76
|
+
4. No prior `uip solution upload` appears in recent shell history or the conversation; without a recorded explicit upload, do not assume the project is in Studio Web.
|
|
77
|
+
|
|
78
|
+
## Explicit Upload Consent
|
|
79
|
+
|
|
80
|
+
When the user explicitly asks to upload, you may run:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
uip solution upload <SolutionDir> --output json
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Before running it, echo the exact command and warn that concurrent Studio Web edits may be overwritten. Afterward, report `SolutionId` and `DesignerUrl` from the output, surface the result, and only then proceed with the eval run. Do not silently chain the upload into the next step.
|
|
87
|
+
|
|
88
|
+
## Anti-Patterns
|
|
89
|
+
|
|
90
|
+
- Do not run `uip solution upload` to fix an eval-run error.
|
|
91
|
+
- Do not treat "make the eval work" as upload consent.
|
|
92
|
+
- Do not auto-retry an eval after solution resolution fails by uploading and rerunning.
|
|
93
|
+
- Do not upload while another user may be editing the solution on Studio Web without warning about possible overwrites, even with consent.
|
|
94
|
+
- Do not combine `flow debug` and `eval run` in one session against the same solution; each has its own Studio Web debug session, and mixing them can confuse run IDs and trigger unexpected uploads.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Operate — Ship, run, and manage deployed flows
|
|
2
|
+
|
|
3
|
+
Capability index for the lifecycle of a flow as a deployed asset. Operate owns everything that touches the cloud — `solution resources refresh`, Studio Web upload, Orchestrator deploy, `flow debug`, `process run`, `job status/traces`, and `instance` lifecycle (pause, resume, cancel, retry). Requires `uip login`.
|
|
4
|
+
|
|
5
|
+
> **Where you came from / where to go next.** Operate is downstream of Author (build the flow → ship it) and upstream of Diagnose (run faults → diagnose). Build/edit lives in [author/CAPABILITY.md](../author/CAPABILITY.md); fault triage lives in [diagnose/CAPABILITY.md](../diagnose/CAPABILITY.md).
|
|
6
|
+
>
|
|
7
|
+
> **Inherits universal rules from [SKILL.md](../../SKILL.md)** — `--output json` + prefer `--output-filter` for extraction, no `flow debug` without consent, never invoke other skills automatically, dropdown question pattern, solution layout, **plain-English narration + granular progress list (opt-in — silent by default; engage when the user asks for verbosity)**. The rules below are operate-scoped and apply on top.
|
|
8
|
+
|
|
9
|
+
## When to use this capability
|
|
10
|
+
|
|
11
|
+
- Push a flow to Studio Web (`uip solution upload`)
|
|
12
|
+
- Deploy a flow to Orchestrator (`uip maestro flow pack` + `uip solution publish`)
|
|
13
|
+
- Run a flow end-to-end via `uip maestro flow debug` (cloud round-trip with real side effects)
|
|
14
|
+
- Trigger a deployed process via `uip maestro flow process run`
|
|
15
|
+
- Check job status or stream traces with `uip maestro flow job status` / `job traces`
|
|
16
|
+
- Manage a running instance — pause, resume, cancel, or retry
|
|
17
|
+
- Refresh solution resources after binding changes (`uip solution resources refresh`)
|
|
18
|
+
|
|
19
|
+
## Critical rules
|
|
20
|
+
|
|
21
|
+
1. **Always run `uip solution resources refresh --solution-folder <SolutionDir>` before `solution upload` or `flow debug`.** Stale resource declarations cause runtime binding failures even when the local `.flow` is correct. The refresh syncs connection and process resource declarations from the project's `bindings_v2.json` files into the solution. `refresh` has no positional solution argument; omit `--solution-folder` only when the current directory is already the solution root.
|
|
22
|
+
2. **Default to Studio Web when the user says "publish" without specifier.** "Publish" → `uip solution upload <SolutionDir>`. Only run `uip maestro flow pack` + `uip solution publish` when the user explicitly asks to deploy to Orchestrator. Pass the exact solution root path (the directory containing the `.uipx` file), or `.` when already in that directory; do not pass the solution name while the shell is inside a nested project folder. The Orchestrator path bypasses Studio Web — the user cannot visualize or edit the flow there.
|
|
23
|
+
3. **Always include `--folder-key <FOLDER_KEY>` (`-f` shorthand) on `instance` commands.** Without it the command rejects the request before reaching the API. Get the folder key from `uip or folders list --output json` or from the job/process context. See [shared/cli-conventions.md](../shared/cli-conventions.md#6---folder-key-requirement).
|
|
24
|
+
4. **Always report Studio Web URL and Instance ID as the first two lines of any debug summary.** Parse `Data.studioWebUrl` and `Data.instanceId` from the JSON output. Use `<not returned by CLI>` if missing — never omit the line. Users need these immediately, not buried below status text.
|
|
25
|
+
|
|
26
|
+
## Workflow
|
|
27
|
+
|
|
28
|
+
| Journey | Read |
|
|
29
|
+
| --- | --- |
|
|
30
|
+
| Publish a flow (Studio Web default, Orchestrator on request) | [ship.md](ship.md) |
|
|
31
|
+
| Run a flow on demand or check progress | [run.md](run.md) |
|
|
32
|
+
| Intervene in a running instance | [manage.md](manage.md) |
|
|
33
|
+
|
|
34
|
+
## Common tasks
|
|
35
|
+
|
|
36
|
+
| I need to... | Read these |
|
|
37
|
+
| --- | --- |
|
|
38
|
+
| **Publish a flow to Studio Web** | [ship.md — Path 1](ship.md#path-1--studio-web-upload-default) |
|
|
39
|
+
| **Deploy a flow to Orchestrator** (only if explicitly requested) | [ship.md — Path 2](ship.md#path-2--orchestrator-deploy-explicit-only) + [/uipath:uipath-solution](/uipath:uipath-solution) |
|
|
40
|
+
| **Sync solution resource declarations** | [ship.md — Pre-flight](ship.md#pre-flight) (the `uip solution resources refresh` step) |
|
|
41
|
+
| **Debug a flow end-to-end** | [run.md — Debug](run.md#debug--controlled-end-to-end-run) |
|
|
42
|
+
| **Debug a chat flow** | `flow debug` cannot drive a conversation headlessly. On a flow starting with `core.trigger.conversation` it uploads, returns `Code: FlowDebugStudioWebHandoff` with `Data.studioWebUrl`, and starts no run. Chat from either Studio Web (open that URL; `--open-in-browser` does it for you) or the UiPath Maestro VS Code extension. `--timeout` does nothing here. See [author/plugins/conversational-agent/impl.md](../author/plugins/conversational-agent/impl.md#debug--the-cli-hands-off) |
|
|
43
|
+
| **Pass input arguments to `flow debug`** | [run.md — Debug](run.md#debug--controlled-end-to-end-run) (the `--inputs` flag) |
|
|
44
|
+
| **Bind local files to file-typed inputs** | [run.md — Debug](run.md#debug--controlled-end-to-end-run) and [run.md — Process run](run.md#process-run--trigger-a-deployed-process) (same `--attachment <variableId>=<localPath>` flag on both, repeatable; `--attachment` overrides `--inputs` on key collisions) |
|
|
45
|
+
| **Trigger a deployed process** | [run.md — Process run](run.md#process-run--trigger-a-deployed-process) |
|
|
46
|
+
| **Check status of a running job** | [run.md — Job inspection](run.md#job-inspection--status-and-traces) |
|
|
47
|
+
| **Stream verbose execution traces** | [run.md — Job inspection](run.md#job-inspection--status-and-traces) (use sparingly — see [diagnose/CAPABILITY.md](../diagnose/CAPABILITY.md)) |
|
|
48
|
+
| **Pause a running instance** | [manage.md](manage.md) |
|
|
49
|
+
| **Resume a paused instance** | [manage.md](manage.md) |
|
|
50
|
+
| **Cancel an instance** | [manage.md](manage.md) |
|
|
51
|
+
| **Retry a faulted instance** | [manage.md](manage.md) (after diagnosing root cause via [diagnose/CAPABILITY.md](../diagnose/CAPABILITY.md)) |
|
|
52
|
+
| **Look up `solution` / `flow pack` / `flow debug` / `process` / `job` / `instance` CLI syntax** | [shared/cli-commands.md](../shared/cli-commands.md) |
|
|
53
|
+
| **My flow run failed** | [diagnose/CAPABILITY.md](../diagnose/CAPABILITY.md) |
|
|
54
|
+
|
|
55
|
+
## Anti-patterns
|
|
56
|
+
|
|
57
|
+
- **Never run `solution upload` without `solution resources refresh` first.** Stale resource declarations cause runtime binding failures.
|
|
58
|
+
- **Never default to Orchestrator deploy when the user said "publish".** "Publish" → Studio Web upload. Confirm explicitly before running `flow pack` + `solution publish`.
|
|
59
|
+
- **Never run `flow debug` as a validation step, and never re-run a completed one to reshape its output.** Each run re-uploads the solution and executes the flow again against real systems; extract report fields from the payload the completed run already returned, and when that run faulted, read the cause from it first — see [diagnose/troubleshooting-guide.md — Step 0](../diagnose/troubleshooting-guide.md#step-0--read-the-cause-in-the-debug-output-you-already-have). Use `uip maestro flow validate` for correctness checking.
|
|
60
|
+
- **Never `retry` a faulted instance without diagnosing the root cause first.** Triage via [diagnose/CAPABILITY.md](../diagnose/CAPABILITY.md) — read incidents, runtime variables, and the deployed asset. Then decide whether to retry, cancel, or re-author.
|
|
61
|
+
- **Never start diagnosis from `job traces`.** Traces are last-resort verbose output. Begin with incidents — see [diagnose/CAPABILITY.md](../diagnose/CAPABILITY.md) for the priority ladder.
|
|
62
|
+
|
|
63
|
+
## References
|
|
64
|
+
|
|
65
|
+
### Operate-scoped
|
|
66
|
+
|
|
67
|
+
- [ship.md](ship.md) — Studio Web upload (default) and Orchestrator deploy (explicit)
|
|
68
|
+
- [run.md](run.md) — debug, process run, job status/traces
|
|
69
|
+
- [manage.md](manage.md) — instance lifecycle (pause, resume, cancel, retry)
|
|
70
|
+
|
|
71
|
+
### Cross-capability (shared)
|
|
72
|
+
|
|
73
|
+
- [shared/cli-commands.md](../shared/cli-commands.md) — flat CLI lookup including `solution upload`, `solution resources refresh`, `flow pack`, `flow debug`, `flow process`, `flow job`, `flow instance`
|
|
74
|
+
- [shared/cli-conventions.md](../shared/cli-conventions.md) — login states, FOLDER_KEY, UIP_LOG_LEVEL, JSON output shape
|
|
75
|
+
- [shared/variables-and-expressions.md](../shared/variables-and-expressions.md) — `--inputs` JSON shape for `flow debug`
|
|
76
|
+
|
|
77
|
+
For Orchestrator deployment via `uip solution publish`, see [/uipath:uipath-solution](/uipath:uipath-solution).
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Manage — Instance Lifecycle
|
|
2
|
+
|
|
3
|
+
Intervene in a running or faulted Flow instance: pause, resume, cancel, retry. All commands require `uip login` and `--folder-key <FOLDER_KEY>` (`-f` shorthand).
|
|
4
|
+
|
|
5
|
+
> **Stub-with-content.** This guide ships with the canonical command list. Use-case framing (when to pause vs cancel, retry semantics, partial-flow recovery) is a TODO for a future expansion.
|
|
6
|
+
|
|
7
|
+
## Pre-flight
|
|
8
|
+
|
|
9
|
+
1. **Logged in.** `uip login status --output json` returns success.
|
|
10
|
+
2. **Folder key resolved.** Get it from `uip or folders list --output json` or from the job/process context. See [shared/cli-conventions.md — `--folder-key` requirement](../shared/cli-conventions.md#6---folder-key-requirement).
|
|
11
|
+
3. **Instance ID known.** From a debug run (`Data.instanceId`), `flow job status` response, or `instance list`.
|
|
12
|
+
|
|
13
|
+
## Lifecycle commands
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
uip maestro flow instance pause <INSTANCE_ID> -f <FOLDER_KEY> --output json # pause a running instance
|
|
17
|
+
uip maestro flow instance resume <INSTANCE_ID> -f <FOLDER_KEY> --output json # resume a paused instance
|
|
18
|
+
uip maestro flow instance cancel <INSTANCE_ID> -f <FOLDER_KEY> --output json # cancel an instance
|
|
19
|
+
uip maestro flow instance retry <INSTANCE_ID> -f <FOLDER_KEY> --output json # retry a faulted instance
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
| Command | What it does |
|
|
23
|
+
| --- | --- |
|
|
24
|
+
| `pause` | Pause a running instance. |
|
|
25
|
+
| `resume` | Resume a paused instance. |
|
|
26
|
+
| `cancel` | Cancel an instance. |
|
|
27
|
+
| `retry` | Retry a faulted instance. Use after fixing the underlying issue. |
|
|
28
|
+
|
|
29
|
+
> **Runtime semantics** (when each takes effect, recoverability, partial-flow behavior) are not documented in this skill. Run `uip maestro flow instance <subcommand> --help` for any options the CLI exposes; consult Orchestrator docs for the underlying lifecycle model.
|
|
30
|
+
|
|
31
|
+
## What's next
|
|
32
|
+
|
|
33
|
+
- **Need to inspect why an instance faulted before deciding pause/cancel/retry?** Triage via [diagnose/CAPABILITY.md](../diagnose/CAPABILITY.md) first — get incidents and runtime variables before intervening.
|
|
34
|
+
- **Need to look up the full `instance` CLI surface?** See [shared/cli-commands.md](../shared/cli-commands.md) and the [Diagnose troubleshooting guide — CLI command reference](../diagnose/troubleshooting-guide.md#cli-command-reference).
|
|
35
|
+
|
|
36
|
+
## Anti-patterns
|
|
37
|
+
|
|
38
|
+
- **Never `retry` a faulted instance without diagnosing the root cause first.** Triage via [diagnose/CAPABILITY.md](../diagnose/CAPABILITY.md) — read incidents, runtime variables, and the deployed asset. Then decide whether to retry, cancel, or re-author.
|
|
39
|
+
- **Never skip the `--folder-key` flag.** Without it the command rejects before reaching the API.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Run — Execute a Flow
|
|
2
|
+
|
|
3
|
+
Execute a flow on demand and monitor progress. Three modes: **debug** (controlled re-run with full Studio Web visibility), **process run** (trigger a deployed process), **job inspection** (status and traces). All require `uip login`.
|
|
4
|
+
|
|
5
|
+
## Pre-flight
|
|
6
|
+
|
|
7
|
+
1. **Logged in.** `uip login status --output json` returns success. See [shared/cli-conventions.md — Login state](../shared/cli-conventions.md#5-login-state).
|
|
8
|
+
2. **For debug runs: solution resources refreshed.** Always run before `flow debug` so connection and process resource declarations are in sync with project bindings:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
uip solution resources refresh --solution-folder <SolutionDir> --output json
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Debug — controlled end-to-end run
|
|
15
|
+
|
|
16
|
+
> **Consent comes from the mandate.** `flow debug` executes the flow for real — sends emails, posts messages, calls APIs. Run it when the request is for a flow that works; ask when the request stops at build or validate, and with nobody to ask report the flow as unverified rather than letting a passing validate stand as the result. Never debug a solution this run did not scaffold: debug overwrites the Studio Web solution matching the local `.uipx` `SolutionId`. See rule #2 in [SKILL.md](../../SKILL.md).
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
UIP_LOG_LEVEL=info uip maestro flow debug <path-to-project-dir> --output json
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The argument is the **project directory path** (the folder containing `project.uiproj`). Use `<ProjectName>/` from the solution dir, or `.` if already inside the project dir.
|
|
23
|
+
|
|
24
|
+
> **Never run `flow debug` in the background.** It takes 1 to 5 minutes and prints its JSON only at exit.
|
|
25
|
+
> 1. Run it in the foreground with a tool timeout of at least 10 minutes (most agent shells kill a command after 1 to 2 minutes).
|
|
26
|
+
> 2. If the tool returns "still running", poll that same process until it exits. Do not read the output file yet — empty means still running.
|
|
27
|
+
> 3. If stdout ends with `Debug polling timed out after <N>s`, the flow is still running on the server. Take the `instanceId` from stderr and run `uip maestro flow debug-instance status <INSTANCE_ID> --output json`.
|
|
28
|
+
> 4. Never start a second debug while the first is running — it uploads and executes the flow again.
|
|
29
|
+
> 5. Re-run debug only after you changed the flow.
|
|
30
|
+
|
|
31
|
+
> **Do not pass `--folder-path` or `--folder-key` to `flow debug`.** Debug provisions into your personal workspace. A shared or team folder fails with `HTTP 500` at `Stage: prepare-custom-debug` and no instance starts. Shared resources the flow uses (indexes, buckets, connections) reach the run through `uip solution resources refresh`, not through the debug folder. Use the flag only when your account has no personal workspace or the flow needs folder-scoped assets or queues that exist only in that folder.
|
|
32
|
+
|
|
33
|
+
Pass input arguments when the flow has input parameters:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
UIP_LOG_LEVEL=info uip maestro flow debug <path-to-project-dir> --output json \
|
|
37
|
+
--inputs '{"numberA": 5, "numberB": 7}'
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Build those inputs from real records, never from invented values — an invented key matches no record, every lookup returns `[]`, and the run faults on empty data. Read the entity `Id` from `uip df entities list --output json`, then a live record from `uip df records list <ENTITY_ID> --output json`.
|
|
41
|
+
|
|
42
|
+
Bind local files to file-typed input variables with `--attachment <variableId>=<localPath>` (repeatable). `<variableId>` (left of `=`) must match the `id` of a `variables.globals[]` entry with `direction:"in"` and `type:"file"`:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Replace <variableId> and <localPath> placeholders below with your own values.
|
|
46
|
+
UIP_LOG_LEVEL=info uip maestro flow debug <path-to-project-dir> --output json \
|
|
47
|
+
--attachment <variableId>=<localPath> \
|
|
48
|
+
--attachment <variableId>=<localPath>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
> **Pre-flight.** Confirm each `<variableId>` exists in the flow's `variables.globals[]` with `direction:"in"` and `type:"file"`. See [shared/cli-commands.md — Pre-flight](../shared/cli-commands.md#pre-flight---attachment-binding).
|
|
52
|
+
|
|
53
|
+
> **Reading the bound file.** At runtime a `file` variable is an object — a Script node reads the uploaded name via `$vars.{triggerNodeId}.output.{id}.FullName`. See [shared/variables-and-expressions.md — Runtime shape of a `file` variable](../shared/variables-and-expressions.md#file-input).
|
|
54
|
+
|
|
55
|
+
### Reporting debug runs to the user
|
|
56
|
+
|
|
57
|
+
The CLI response includes a **Studio Web URL** (where the user inspects the run) and an **instanceId** (for log/trace correlation). Parse both from the JSON output — typically `Data.studioWebUrl` and `Data.instanceId` — and **always show them as the first two lines of the summary**:
|
|
58
|
+
|
|
59
|
+
```text
|
|
60
|
+
Studio Web URL: <url>
|
|
61
|
+
Instance ID: <instanceId>
|
|
62
|
+
|
|
63
|
+
<run status, node traces, errors, etc.>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
If either value is missing from the response, emit the label with `<not returned by CLI>` rather than dropping the line. Do not bury these values below the run summary — the user should see them immediately without scrolling.
|
|
67
|
+
|
|
68
|
+
### When the run faults
|
|
69
|
+
|
|
70
|
+
`Data.finalStatus: "Faulted"` means the run failed, and the cause is already in that same response — read it there. Redirect stdout to a file and extract the cause from the file; on a faulted run the CLI ignores `--output-filter` and prints the whole envelope, so the filter is not a way to shrink it:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
UIP_LOG_LEVEL=info uip maestro flow debug <path-to-project-dir> --output json > /tmp/flow-debug.json
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Extraction commands and fault-code lookup: [diagnose/troubleshooting-guide.md — Step 0](../diagnose/troubleshooting-guide.md#step-0--read-the-cause-in-the-debug-output-you-already-have).
|
|
77
|
+
|
|
78
|
+
See [shared/cli-commands.md — uip maestro flow debug](../shared/cli-commands.md#uip-maestro-flow-debug) for additional options.
|
|
79
|
+
|
|
80
|
+
## Process run — trigger a deployed process
|
|
81
|
+
|
|
82
|
+
For flows already deployed to Orchestrator (via [ship.md](ship.md) → Orchestrator path):
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
uip maestro flow process list --output json # discover deployed processes
|
|
86
|
+
uip maestro flow process run <process-key> <folder-key> --output json # trigger a run
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Pass input arguments and/or bind file-typed input variables:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# Replace <variableId> and <localPath> placeholders below with your own values.
|
|
93
|
+
uip maestro flow process run <process-key> <folder-key> --output json \
|
|
94
|
+
--inputs '{"numberA": 5, "numberB": 7}' \
|
|
95
|
+
--attachment <variableId>=<localPath>
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
> **Pre-flight.** Confirm each `<variableId>` exists in the flow's `variables.globals[]` with `direction:"in"` and `type:"file"` — see [shared/cli-commands.md — Pre-flight](../shared/cli-commands.md#pre-flight---attachment-binding). On `process run` only: `--attachment` overrides `--inputs` on key collisions; `--validate` accepts pre-uploaded attachment references for file-typed slots (passes the JSON-schema check even though the slot's nominal type is `string`).
|
|
99
|
+
|
|
100
|
+
Run `uip maestro flow process --help` for all subcommands and options.
|
|
101
|
+
|
|
102
|
+
## Job inspection — status and traces
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
uip maestro flow job status <job-key> --output json # check status of a running or completed job
|
|
106
|
+
uip maestro flow job traces <job-key> --output json # stream the verbose execution timeline
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
> **Traces are verbose** and contain the full execution timeline. Use them only when needed for diagnosis — start from incidents first via [diagnose/CAPABILITY.md](../diagnose/CAPABILITY.md).
|
|
110
|
+
|
|
111
|
+
## What's next
|
|
112
|
+
|
|
113
|
+
- **Run failed?** Triage via [diagnose/CAPABILITY.md](../diagnose/CAPABILITY.md) — start with incidents, escalate to traces only if needed.
|
|
114
|
+
- **Need to intervene in a running instance** (pause, resume, cancel, retry)? See [manage.md](manage.md).
|
|
115
|
+
|
|
116
|
+
## Anti-patterns
|
|
117
|
+
|
|
118
|
+
- **Never substitute `flow debug` for `flow validate` as the structural check.** Use `uip maestro flow validate` for schema and graph correctness; debug is the end-to-end run rule #2 mandates, and skipping it leaves the flow unverified.
|
|
119
|
+
- **Never re-run a completed `flow debug` to re-read or reshape its output.** Each run re-uploads the solution and executes the flow again for real. Extract the report fields from the payload the completed run already returned — see [Reporting debug runs](#reporting-debug-runs-to-the-user). For a faulted run, read the cause first — see [When the run faults](#when-the-run-faults).
|
|
120
|
+
- **Never skip `solution resources refresh` before debug.** Stale resource declarations cause runtime binding failures even when the local `.flow` is correct.
|
|
121
|
+
- **Never start diagnosis from `job traces`.** Traces are last-resort — see [diagnose/CAPABILITY.md](../diagnose/CAPABILITY.md) for the priority ladder.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Ship — Publish a Flow
|
|
2
|
+
|
|
3
|
+
Publish journey for a Flow project. Two paths: **Studio Web upload** (default) and **Orchestrator deploy** (only when explicitly requested). Both require `uip login`.
|
|
4
|
+
|
|
5
|
+
> **When to use which path:** if the user says "publish" without specifying where, default to Studio Web. Only use Orchestrator deploy when the user explicitly asks to deploy to Orchestrator. Studio Web upload lets the user visualize, inspect, edit, and publish from the browser; Orchestrator deploy puts the flow directly into a process, bypassing Studio Web — the user cannot visualize or edit it there.
|
|
6
|
+
|
|
7
|
+
## Pre-flight
|
|
8
|
+
|
|
9
|
+
Before either publish path, ensure:
|
|
10
|
+
|
|
11
|
+
1. **Authoring is complete.** `uip maestro flow validate` passes and `uip maestro flow format` was run. If not, send the user back to [author/CAPABILITY.md](../author/CAPABILITY.md).
|
|
12
|
+
2. **Logged in.** `uip login status --output json` returns success. See [shared/cli-conventions.md — Login state](../shared/cli-conventions.md#5-login-state).
|
|
13
|
+
3. **Solution resources are refreshed.** Always run this before `solution upload` or `solution publish` so that connection and process resource declarations are in sync with the project bindings:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
uip solution resources refresh --solution-folder <SolutionDir> --output json
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
`<SolutionDir>` is the solution directory (containing the `.uipx` file). The command has no positional solution argument; omit `--solution-folder` only when the current directory is already the solution root.
|
|
20
|
+
|
|
21
|
+
## Path 1 — Studio Web upload (default)
|
|
22
|
+
|
|
23
|
+
After `solution resources refresh`, upload the solution to Studio Web:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
uip solution upload <SolutionDir> --output json
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
`uip solution upload` accepts the solution directory directly — no intermediate bundling step required. Use the exact solution root path (or `.` from inside the solution root). If your shell is inside the nested flow project folder, pass the absolute solution root path or `..`; do not pass the solution name again, because that resolves to a child path that does not exist. If the project was created with `uip maestro flow init`, it already lives inside a solution directory. The command pushes it to Studio Web where the user can visualize, inspect, edit, and publish from the browser.
|
|
30
|
+
|
|
31
|
+
**Share the Studio Web URL with the user** when the upload succeeds.
|
|
32
|
+
|
|
33
|
+
## Path 2 — Orchestrator deploy (explicit only)
|
|
34
|
+
|
|
35
|
+
Use this path **only when the user explicitly asks to deploy to Orchestrator.** Otherwise, default to Studio Web.
|
|
36
|
+
|
|
37
|
+
Pack the flow project into a `.nupkg` then publish via the platform skill:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# 1. Refresh solution resources
|
|
41
|
+
uip solution resources refresh --solution-folder <SolutionDir> --output json
|
|
42
|
+
|
|
43
|
+
# 2. Pack
|
|
44
|
+
uip maestro flow pack <project-path> <OutputDir>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
For `uip solution publish` and the rest of the deployment workflow, see [/uipath:uipath-solution](/uipath:uipath-solution). See [shared/cli-commands.md — uip maestro flow pack](../shared/cli-commands.md#uip-maestro-flow-pack) for `pack` flags.
|
|
48
|
+
|
|
49
|
+
## Anti-patterns
|
|
50
|
+
|
|
51
|
+
- **Never run `solution upload` without `solution resources refresh` first.** Stale resource declarations cause runtime binding failures (the deployed flow can't find its connections).
|
|
52
|
+
- **Never default to Orchestrator deploy when the user said "publish".** "Publish" without specifier means Studio Web. When the target is ambiguous, ask the user with **Studio Web upload** / **Orchestrator deploy** / **Something else** as options before running `flow pack` + `solution publish`. See the dropdown question rule in [SKILL.md](../../SKILL.md).
|
|
53
|
+
- **Never publish a flow that hasn't been validated and formatted.** `flow validate` catches schema errors; `flow format` ensures Studio Web renders nodes correctly. Both are author-side gates — see [author/CAPABILITY.md](../author/CAPABILITY.md).
|
|
54
|
+
|
|
55
|
+
## What's next
|
|
56
|
+
|
|
57
|
+
After Studio Web upload, the user typically wants to **debug** the flow end-to-end against real systems. See [run.md](run.md). After Orchestrator deploy, the user typically wants to **trigger and monitor** the deployed process — also [run.md](run.md).
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Action Node Structure
|
|
2
|
+
|
|
3
|
+
Reference boilerplate shared by every action-node `impl.md`. Plugin docs should link here and specify only the registry type string, plugin-specific inputs and rules, debug entries, and node-type configuration workflows.
|
|
4
|
+
|
|
5
|
+
## Registry validation
|
|
6
|
+
|
|
7
|
+
Before authoring, run:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
uip maestro flow registry get <node-type> --output json
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
`registry get` returns the manifest at `Data.Node`; do not inspect `Data` directly as the node manifest.
|
|
14
|
+
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
"Data": {
|
|
18
|
+
"Node": {
|
|
19
|
+
"nodeType": "core.action.script",
|
|
20
|
+
"version": "1.0",
|
|
21
|
+
"handleConfiguration": [
|
|
22
|
+
{ "position": "left", "handles": [{ "id": "input", "type": "target" }] },
|
|
23
|
+
{ "position": "right", "handles": [{ "id": "success", "type": "source" }] }
|
|
24
|
+
],
|
|
25
|
+
"inputDefinition": {},
|
|
26
|
+
"outputDefinition": {}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Inspect `Data.Node.handleConfiguration` for input and output port names; it is an array of position groups, not a map with a top-level `handles` field. Inspect `Data.Node.inputDefinition` for required inputs, `Data.Node.outputDefinition` for downstream payloads, and `Data.Node.model.serviceType` where applicable. Each plugin `impl.md` records what to confirm for its node type.
|
|
33
|
+
|
|
34
|
+
## Standard JSON skeleton
|
|
35
|
+
|
|
36
|
+
Every action-node instance uses this base shape:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"id": "<nodeId>",
|
|
41
|
+
"type": "<node-type>",
|
|
42
|
+
"typeVersion": "<version>",
|
|
43
|
+
"display": { "label": "<Label>" },
|
|
44
|
+
"inputs": { /* plugin-specific — see plugin impl.md */ },
|
|
45
|
+
"outputs": {
|
|
46
|
+
"output": {
|
|
47
|
+
"type": "object",
|
|
48
|
+
"description": "<plugin-specific description>",
|
|
49
|
+
"source": "=result.response",
|
|
50
|
+
"var": "output"
|
|
51
|
+
},
|
|
52
|
+
"error": {
|
|
53
|
+
"type": "object",
|
|
54
|
+
"description": "Error information if the action fails.",
|
|
55
|
+
"source": "=Error",
|
|
56
|
+
"var": "error"
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
`outputs.output` documents the success payload referenced downstream as `=js:$vars.{nodeId}.output`; `outputs.error` documents the failure shape. Runtime faults route to the implicit `error` port. See [Implicit error port on action nodes](file-format.md#implicit-error-port-on-action-nodes).
|
|
63
|
+
|
|
64
|
+
For action nodes, the instance `outputs` block is documentation, not the runtime contract. The matching `variables.nodes[]` entry exposes process-level `$vars.{nodeId}.output`; see [file-format.md — Node outputs](file-format.md#node-outputs). The BPMN emitter ignores the instance `outputs` block at serialization because the manifest's `outputDefinition` drives activity-side mapping.
|
|
65
|
+
|
|
66
|
+
**Exceptions:** Orchestrator-job nodes (api-workflow, rpa-workflow, agent, agentic-process, function) have their instance `outputs` read by the converter, which copies each `source` verbatim. A wrong `source` (for example, `=result.response`) breaks `$vars.{nodeId}.output`; declare `error` only there. End / terminate nodes also have their instance `outputs` consumed to map workflow-level `out` variables.
|
|
67
|
+
|
|
68
|
+
**Data Fabric entity nodes (`core.datafabric.*`) carry no instance `outputs` block at all** — the canvas writes none, so author `inputs` only and let `flow format` regenerate `variables.nodes[]`. They are also the one action-node family with **no `error` port**: none declares `supportsErrorHandling`, so the skeleton's `outputs.error` and the implicit error port in [Standard ports](#standard-ports) do not apply to them. See [data-fabric/impl.md](../author/plugins/data-fabric/impl.md#no-error-port).
|
|
69
|
+
|
|
70
|
+
`uip maestro flow format` regenerates `variables.nodes[]` from the current node graph, so running format after structural edits self-heals an omitted entry.
|
|
71
|
+
|
|
72
|
+
## Standard ports
|
|
73
|
+
|
|
74
|
+
| Direction | Common name(s) | Notes |
|
|
75
|
+
| --- | --- | --- |
|
|
76
|
+
| Input (target) | `input` | Every action node accepts one input edge on `input`. |
|
|
77
|
+
| Output (success, source) | `output`, `default`, or `success` | The name varies by plugin; `registry get` is authoritative. |
|
|
78
|
+
| Output (error, source) | `error` | Implicit on action nodes that declare `supportsErrorHandling`, via `outputs.error`. The `core.datafabric.*` family does not — it has no `error` port. |
|
|
79
|
+
|
|
80
|
+
Plugins may add dynamic source ports, such as HTTP `branch-{id}` from `inputs.branches`; document these in the plugin's `impl.md`.
|
|
81
|
+
|
|
82
|
+
## Adding and editing procedures
|
|
83
|
+
|
|
84
|
+
Use [editing-operations.md](../author/editing-operations.md) and [editing-operations-json.md](../author/editing-operations-json.md) for step-by-step add, delete, and wiring instructions. Plugin `impl.md` files should describe only node-type-specific inputs and wiring patterns.
|
|
85
|
+
|
|
86
|
+
## Migrating a plugin to reference this template
|
|
87
|
+
|
|
88
|
+
Keep in the plugin:
|
|
89
|
+
|
|
90
|
+
- registry type string and `typeVersion`;
|
|
91
|
+
- plugin-specific input fields;
|
|
92
|
+
- plugin-specific configuration workflows, such as `node configure` for HTTP/connector nodes;
|
|
93
|
+
- plugin-specific rules, common patterns, and debug table.
|
|
94
|
+
|
|
95
|
+
Replace with a link here:
|
|
96
|
+
|
|
97
|
+
- generic JSON skeleton;
|
|
98
|
+
- generic `outputs` block (`=result.response` / `=result.Error`);
|
|
99
|
+
- generic registry-validation prose;
|
|
100
|
+
- generic "Adding / Editing" cross-reference.
|