@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,175 +0,0 @@
|
|
|
1
|
-
# Agent
|
|
2
|
-
|
|
3
|
-
*Exact signatures, fields, and defaults: `agent()`.*
|
|
4
|
-
|
|
5
|
-
Start a coded or low-code agent and wait for its output. The resource may be
|
|
6
|
-
published in Orchestrator or registered as a sibling project in this solution.
|
|
7
|
-
|
|
8
|
-
Signature: `agent({ key, name, folderPath?, location?, projectId?, inputs, returns?, flavour? })`
|
|
9
|
-
|
|
10
|
-
```ts
|
|
11
|
-
.step('count',
|
|
12
|
-
agent({
|
|
13
|
-
key: 'BAADF00D-BAAD-F00D-BAAD-F00DBAADF00D',
|
|
14
|
-
name: 'CountLetters',
|
|
15
|
-
folderPath: 'Shared',
|
|
16
|
-
inputs: { inputString: input('inputString') },
|
|
17
|
-
returns: { count: 'integer' },
|
|
18
|
-
flavour: 'coded'
|
|
19
|
-
}))
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
See [Orchestrator Processes](or-processes.md) and use the `Agent` process type to locate an agent process and determine its contract.
|
|
23
|
-
|
|
24
|
-
## General
|
|
25
|
-
|
|
26
|
-
- *flavour* can be either "coded" or "lowcode". It does not affect the runtime contract, only presentation. There is no equivalent field returned from `uip or processes get`.
|
|
27
|
-
|
|
28
|
-
`.onError(...)` is supported on agent steps.
|
|
29
|
-
|
|
30
|
-
## Reuse a published agent, or create one in the solution
|
|
31
|
-
|
|
32
|
-
Two shapes, and the request decides which.
|
|
33
|
-
When the request names an agent that may already exist, look for it first.
|
|
34
|
-
|
|
35
|
-
```bash
|
|
36
|
-
uip maestro flow registry pull --force
|
|
37
|
-
uip maestro flow registry search "uipath.core.agent" --output json
|
|
38
|
-
uip maestro flow registry get "uipath.core.agent.<key>" --output json
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
`registry get` is also how you learn the agent's own argument names and its
|
|
42
|
-
return shape — `inputDefinition.properties` and `outputDefinition`.
|
|
43
|
-
|
|
44
|
-
When the request asks for a coded agent to be CREATED in this solution,
|
|
45
|
-
scaffold it as a sibling project instead; do not substitute an inline low-code
|
|
46
|
-
agent.
|
|
47
|
-
Creating one the tenant already publishes is duplication, and binding a
|
|
48
|
-
pre-existing one when the request said to build it is a different task — so
|
|
49
|
-
read the request, do not guess from what the registry happens to hold.
|
|
50
|
-
|
|
51
|
-
**Never invent `key` or `projectId`.**
|
|
52
|
-
Both are minted by the tooling and read back from it.
|
|
53
|
-
If no source below yields one, stop on that field rather than supply a
|
|
54
|
-
plausible GUID: `check` and `validate` both accept a well-formed GUID that
|
|
55
|
-
resolves to nothing on the tenant, so a fabricated key fails at run time, not
|
|
56
|
-
at author time.
|
|
57
|
-
|
|
58
|
-
## Task-created in-solution coded agent
|
|
59
|
-
|
|
60
|
-
1. Scaffold the solution and Flow project.
|
|
61
|
-
2. Scaffold and implement the coded agent as a sibling directory.
|
|
62
|
-
3. Register the sibling with `uip solution projects add`.
|
|
63
|
-
4. Read the two identifiers back, then author the Flow with `agent({
|
|
64
|
-
location: 'in-solution', ... })`.
|
|
65
|
-
5. Compile into the nested Flow project, validate, refresh resources, and
|
|
66
|
-
debug the Flow.
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
uip solution init <SolutionName> --output json
|
|
70
|
-
( cd <SolutionName> && uip maestro flow init <FlowName> --output json )
|
|
71
|
-
|
|
72
|
-
mkdir -p <SolutionName>/<AgentProject>
|
|
73
|
-
( cd <SolutionName>/<AgentProject> \
|
|
74
|
-
&& uv venv --python 3.13 \
|
|
75
|
-
&& uv pip install <framework-package> \
|
|
76
|
-
&& uip codedagent setup --force --output json \
|
|
77
|
-
&& uip codedagent new <AgentName> )
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
**Install the framework package BEFORE `new`.**
|
|
81
|
-
`new` defaults to `--type auto`, which picks the template from whichever
|
|
82
|
-
framework package is installed in the active venv — so with none installed it
|
|
83
|
-
scaffolds a coded FUNCTION instead, and nothing says so at the time.
|
|
84
|
-
|
|
85
|
-
Verify the scaffold before going further: a `<framework>.json` beside `main.py`
|
|
86
|
-
(`langgraph.json` for `uipath-langchain`) means the agent template was used.
|
|
87
|
-
A `uipath.json` carrying a `functions` map and no `<framework>.json` is the
|
|
88
|
-
function fallback — install the package, delete the generated files, and re-run
|
|
89
|
-
`new`.
|
|
90
|
-
|
|
91
|
-
Scaffold from INSIDE the agent directory.
|
|
92
|
-
Run `codedagent new` from the solution root and it writes `main.py`,
|
|
93
|
-
`pyproject.toml` and `<framework>.json` into the solution root, which then has
|
|
94
|
-
to be cleaned up by hand.
|
|
95
|
-
|
|
96
|
-
Implement the project, then from that directory:
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
uv sync
|
|
100
|
-
uip codedagent init
|
|
101
|
-
uip codedagent review . --output json
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
`uv sync` comes before `init` because `uip codedagent init` imports the
|
|
105
|
-
entry-point graph, so it fails on any declared dependency the venv does not
|
|
106
|
-
have yet — and a failed `init` leaves `uipath.json` scaffolded but with its
|
|
107
|
-
entry-point map never filled in.
|
|
108
|
-
|
|
109
|
-
**`uip codedagent run` is not part of this path.**
|
|
110
|
-
It executes the graph, which needs `UIPATH_ACCESS_TOKEN` and reach to the LLM
|
|
111
|
-
gateway.
|
|
112
|
-
Where either is absent it fails at the platform client, and the import and
|
|
113
|
-
virtualenv errors it emits on the way there are environment, not defects in the
|
|
114
|
-
project — do not chase them.
|
|
115
|
-
`uip codedagent review` is the offline rung: it checks the project without
|
|
116
|
-
running the model.
|
|
117
|
-
|
|
118
|
-
Register the sibling, refresh, then read both identifiers back:
|
|
119
|
-
|
|
120
|
-
```bash
|
|
121
|
-
( cd <SolutionName> && \
|
|
122
|
-
uip solution projects add <AgentProject> <SolutionName>.uipx --output json )
|
|
123
|
-
uip solution resources refresh --solution-folder <SolutionName> --output json
|
|
124
|
-
uip maestro flow registry list --local --output json
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
`registry list --local`, run from the Flow project directory, is the
|
|
128
|
-
authoritative source for the minted key.
|
|
129
|
-
The generated resource file carries the same pair:
|
|
130
|
-
|
|
131
|
-
- `resource.key` → `key`
|
|
132
|
-
- `resource.projectKey` → `projectId`
|
|
133
|
-
|
|
134
|
-
**Find that file; do not assume its path.**
|
|
135
|
-
`uip solution projects add` reads the project type out of the manifest, and a
|
|
136
|
-
`uipath.json` with no `ProjectType` falls back to `Function` whenever it
|
|
137
|
-
carries a `functions` map — including an empty one, which a scaffolded project
|
|
138
|
-
has. So the resource can land under `process/function/<AgentProject>.json`
|
|
139
|
-
rather than `process/agent/`. Glob for it instead of hard-coding either:
|
|
140
|
-
|
|
141
|
-
```bash
|
|
142
|
-
ls <SolutionName>/resources/solution_folder/process/*/<AgentProject>.json
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
`uip solution projects list --output json` reports the type the manifest
|
|
146
|
-
resolved to.
|
|
147
|
-
`Type: Function` on a coded agent is that fallback, not a mistake in your
|
|
148
|
-
wiring: re-adding the project or hand-editing `uipath.json` will not change it,
|
|
149
|
-
so read the identifiers and wire the Flow rather than trying to correct it
|
|
150
|
-
first.
|
|
151
|
-
|
|
152
|
-
```ts
|
|
153
|
-
.step('analyze', agent({
|
|
154
|
-
key: localResourceKey,
|
|
155
|
-
name: '<AgentProject>',
|
|
156
|
-
location: 'in-solution',
|
|
157
|
-
projectId: localProjectKey,
|
|
158
|
-
inputs: { sentence: input('sentence') },
|
|
159
|
-
returns: { result: 'integer' },
|
|
160
|
-
flavour: 'coded',
|
|
161
|
-
}))
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
An in-solution agent intentionally has no `folderPath`. Its generated binding
|
|
165
|
-
uses the bare local resource key, and its definition carries the sibling
|
|
166
|
-
project id. The SDK checker rejects a missing project id or a published agent
|
|
167
|
-
with a missing folder, so the two resource forms cannot silently collapse into
|
|
168
|
-
one another.
|
|
169
|
-
|
|
170
|
-
## Evidence boundary
|
|
171
|
-
|
|
172
|
-
A green live run proves that a real job received inputs and returned the
|
|
173
|
-
declared shape. It does not prove the model's answer is correct. Preserve the
|
|
174
|
-
job identity, input/output witnesses, and a scenario-specific semantic
|
|
175
|
-
assertion; offline seeds should also rule out a hard-coded answer.
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# Agentic Process
|
|
2
|
-
|
|
3
|
-
*Exact signatures, fields, and defaults: `agenticProcess()`.*
|
|
4
|
-
|
|
5
|
-
Invoke a deployed Maestro agentic process.
|
|
6
|
-
|
|
7
|
-
Signature: `agenticProcess({ key, name, folderPath, inputs?, returns? })`
|
|
8
|
-
|
|
9
|
-
```ts
|
|
10
|
-
.step('intake',
|
|
11
|
-
agenticProcess({
|
|
12
|
-
key: 'BAADF00D-BAAD-F00D-BAAD-F00DBAADF00D',
|
|
13
|
-
name: 'ProcurementProcess',
|
|
14
|
-
folderPath: 'Shared',
|
|
15
|
-
inputs: { productId: 1 },
|
|
16
|
-
returns: { status: 'boolean' }
|
|
17
|
-
}))
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
See [Orchestrator Processes](or-processes.md) and use the `ProcessOrchestration`, `CaseManagement`, and/or `Flow` process types to locate an agentic process and determine its contract.
|
|
21
|
-
|
|
22
|
-
## General
|
|
23
|
-
|
|
24
|
-
- Declared outputs can be returned as `null`
|
|
25
|
-
|
|
26
|
-
## Forms and fire-and-forget completion
|
|
27
|
-
|
|
28
|
-
One `agenticProcess()` covers all three published forms; `form` selects the
|
|
29
|
-
wire identity: `'bpmn'` (default — Maestro BPMN process orchestration),
|
|
30
|
-
`'flow'` (published Maestro Flow), `'case'` (Case Management process).
|
|
31
|
-
|
|
32
|
-
`completion: 'fire-and-forget'` dispatches the process and continues
|
|
33
|
-
immediately: `returns` is forbidden, the step publishes no output (reading
|
|
34
|
-
`$vars.<step>.output` is a check error), and only dispatch failures route
|
|
35
|
-
through `.onError(...)`. Local replay treats it as dispatch-only.
|
|
36
|
-
|
|
37
|
-
```ts
|
|
38
|
-
.step('launchReview', agenticProcess({ key: reviewKey, name: 'ClaimsReview',
|
|
39
|
-
folderPath: 'Shared', form: 'flow', completion: 'fire-and-forget',
|
|
40
|
-
inputs: { claimId: input('claimId') } }))
|
|
41
|
-
```
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# API Workflow
|
|
2
|
-
|
|
3
|
-
*Exact signatures, fields, and defaults: `apiWorkflow()`.*
|
|
4
|
-
|
|
5
|
-
Run a deployed coded API workflow as a serverless Orchestrator job.
|
|
6
|
-
|
|
7
|
-
Signature: `apiWorkflow({ key, name, folderPath, inputs?, returns? })`.
|
|
8
|
-
|
|
9
|
-
```ts
|
|
10
|
-
.step('age', apiWorkflow({ key: workflowKey,
|
|
11
|
-
name: 'NameToAge', folderPath: 'Shared',
|
|
12
|
-
inputs: { name: input('name') }, returns: { age: 'integer' } }))
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## Tenant contract
|
|
16
|
-
|
|
17
|
-
The workflow key, name, and folder must describe one deployed resource. Confirm
|
|
18
|
-
its actual input/output names and casing from the tenant. See
|
|
19
|
-
[Orchestrator Processes](or-processes.md) and use the `Api` process type for the
|
|
20
|
-
shared, pagination-safe resource-discovery procedure.
|
|
21
|
-
|
|
22
|
-
`.onError(...)` is supported on API workflow steps. Choose a handler only when
|
|
23
|
-
the scenario wants recovery; otherwise a faulted job may need to fault the Flow.
|
|
24
|
-
|
|
25
|
-
## Evidence boundary
|
|
26
|
-
|
|
27
|
-
Replay uses the authored contract. Live evidence should identify the real job,
|
|
28
|
-
its input arguments, completion status, and returned output. Job completion does
|
|
29
|
-
not by itself prove the coded workflow's business result is correct.
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
# Author — build and edit a flow with the builder SDK
|
|
2
|
-
|
|
3
|
-
Everything that happens on disk before a flow touches the cloud: scaffold the
|
|
4
|
-
project, choose each node, write `<Name>.flow.ts`, and run the loop in
|
|
5
|
-
[`CLI-LOOP.md`](CLI-LOOP.md) until the emitted `.flow` validates. Authoring ends
|
|
6
|
-
at a valid artifact; publishing, running and debugging are
|
|
7
|
-
[`operate.md`](operate.md), and a failed run is [`diagnose.md`](diagnose.md).
|
|
8
|
-
|
|
9
|
-
The builder owns the `.flow` JSON. `compile` emits every node definition, the
|
|
10
|
-
`variables.nodes[]` entries that make `$vars.<step>.output` resolve, the
|
|
11
|
-
resource bindings, the connector `inputs.detail`, and the error flags, so none
|
|
12
|
-
of that is hand-authored here. What stays with you is judgment the compiler
|
|
13
|
-
cannot make: which node, which topology, what an output means, and what to ask.
|
|
14
|
-
|
|
15
|
-
## Critical rules
|
|
16
|
-
|
|
17
|
-
1. **Choose the node before writing it, from a search, never from a brand
|
|
18
|
-
name.** For an external service run `uip maestro registry search
|
|
19
|
-
'<service>'` and prefer, in order: a curated connector, managed HTTP in
|
|
20
|
-
connector mode, manual HTTP for an API with no connector, and an RPA
|
|
21
|
-
workflow only when there is no API at all (a desktop app, a terminal). For a
|
|
22
|
-
tenant resource (agent, process, API workflow, IxP model) run the family's
|
|
23
|
-
`uip maestro flow registry search`; it only returns published resources, so
|
|
24
|
-
`uip maestro flow registry pull --force` first, and check the solution's own
|
|
25
|
-
projects with `uip maestro flow registry list --local` before concluding a
|
|
26
|
-
resource is missing. `mock()` marks a capability both searches proved
|
|
27
|
-
absent; it is never a stand-in for one they found.
|
|
28
|
-
2. **Read the node's reference before writing the step.** The router table in
|
|
29
|
-
[SKILL.md](../SKILL.md#supported-node-types) names one reference and one
|
|
30
|
-
example per node. Copy identity fields (keys, model names, folder keys)
|
|
31
|
-
from the tenant; never construct them.
|
|
32
|
-
3. **Read the Integration Service contract before any `uip is` call.** Both
|
|
33
|
-
live in [/uipath:uipath-platform](/uipath:uipath-platform), under
|
|
34
|
-
`references/integration-service/`. `connections.md` covers selection,
|
|
35
|
-
folder scoping, BYOA filtering and empty-result recovery; if no healthy
|
|
36
|
-
connection exists after its recovery flow, stop and report it as an open
|
|
37
|
-
question. `resources.md` covers reference-field lookups; finish its
|
|
38
|
-
pagination loop before reporting "not found".
|
|
39
|
-
4. **Edit the source, not the artifact.** Change `<Name>.flow.ts` and re-emit
|
|
40
|
-
with `compile -o`. Never hand-edit the emitted `.flow`, `content/*.bpmn`,
|
|
41
|
-
`bindings_v2.json`, `entry-points.json`, `operate.json` or
|
|
42
|
-
`package-descriptor.json` — the CLI regenerates them, and the next compile
|
|
43
|
-
silently undoes a hand edit. Brownfield JSON goes through `decompile`
|
|
44
|
-
([`brownfield.md`](brownfield.md)).
|
|
45
|
-
5. **Run the loop once the source is complete.** `check --source` is cheap, so
|
|
46
|
-
use it freely while writing; `compile` and `validate` run on the finished
|
|
47
|
-
source, and again after the last edit. Treat every `validate` warning as a
|
|
48
|
-
failure unless the loop reference names it as reviewed.
|
|
49
|
-
6. **Bind every declared output on every path.** Each `.return({...})` must
|
|
50
|
-
name every key in `.output({...})`. `check` does not catch a missing one:
|
|
51
|
-
`compile` binds it to `$vars.<name>`, `validate` only warns
|
|
52
|
-
(`EXPRESSION_DIAGNOSTIC`), and the run returns `undefined` for it.
|
|
53
|
-
7. **Handle an error only when the request says what should happen.** Add
|
|
54
|
-
`.onError(...)` only for a stated failure ("if the call fails…", "return X
|
|
55
|
-
for invalid input", "handle timeouts"); an unhandled failure must fault the
|
|
56
|
-
run. A handler either genuinely recovers or reaches a terminal the caller
|
|
57
|
-
can tell apart from success — a distinct `.return`, or `.terminate`.
|
|
58
|
-
8. **Never invent the business meaning of a named output — ask.** When a
|
|
59
|
-
request names an output (`caseKey`, `severity`, `ticketId`) without saying
|
|
60
|
-
how to derive it, whether it passes through or is reformatted is the
|
|
61
|
-
user's rule. Ask, or state the assumption and confirm it. A guessed format
|
|
62
|
-
compiles and validates and returns the wrong value.
|
|
63
|
-
9. **Present a finite decision as a list of options, with "Something else"
|
|
64
|
-
last.** Which solution, which connector, which trigger, which resource to
|
|
65
|
-
bind: ask with the enumerated choices, never as an open question. Without a
|
|
66
|
-
structured-question tool, ask in chat as a numbered list. With nobody to ask
|
|
67
|
-
(CI, headless), take the recommended option and record it prominently in
|
|
68
|
-
the final report; if none is recommended, stop and report the open
|
|
69
|
-
decision. Consent gates — destructive operations, tenant writes — are never
|
|
70
|
-
auto-answered.
|
|
71
|
-
10. **Look for an existing solution before `uip solution init`.** Run
|
|
72
|
-
`find . -maxdepth 2 -name '*.uipx'`. If one exists, ask which to use (one
|
|
73
|
-
option per solution, "Create a new solution", then "Something else"); do
|
|
74
|
-
not silently adopt, re-initialize, or repair it. The scaffold itself is in
|
|
75
|
-
[SKILL.md](../SKILL.md#project-layout).
|
|
76
|
-
11. **Never invoke another skill on your own.** When the flow needs an RPA
|
|
77
|
-
process, an agent, or an app that does not exist, name the gap and hand
|
|
78
|
-
the user what they need to switch skills.
|
|
79
|
-
12. **Batch independent calls; chain dependent ones.** Scaffold, install and
|
|
80
|
-
the registry search go in one turn; `check`, each `prepare` it names, the
|
|
81
|
-
re-`check`, `compile` and `validate` chain in the next. Split only where a
|
|
82
|
-
later step needs an earlier step's output.
|
|
83
|
-
|
|
84
|
-
## Journeys
|
|
85
|
-
|
|
86
|
-
| Journey | Read |
|
|
87
|
-
| --- | --- |
|
|
88
|
-
| Create a new flow | [SKILL.md — Project layout](../SKILL.md#project-layout), then [`CLI-LOOP.md`](CLI-LOOP.md) |
|
|
89
|
-
| Edit an existing flow (`.flow.ts` or raw `.flow`) | [`brownfield.md`](brownfield.md) |
|
|
90
|
-
| Add or change one node | the node's row in [SKILL.md — Supported node types](../SKILL.md#supported-node-types) |
|
|
91
|
-
| Connector with tenant-specific fields | [`connector-params.md`](connector-params.md) + [`bindings.md`](bindings.md) |
|
|
92
|
-
|
|
93
|
-
### Count what the request names before building
|
|
94
|
-
|
|
95
|
-
Count the steps the request names: services, systems, documents, decisions,
|
|
96
|
-
approvals, schedules, computations. A domain or an outcome ("shipment
|
|
97
|
-
tracking", "our onboarding") is not a step, and neither is the project name.
|
|
98
|
-
|
|
99
|
-
- **Zero steps: scaffold only.** Scaffold the project, compile the stub, and
|
|
100
|
-
validate. Do not invent a pipeline from the domain word. Report what the flow
|
|
101
|
-
should do as open questions; that is the finished deliverable.
|
|
102
|
-
- **One or more steps: build all of them.** An outcome next to a step does not
|
|
103
|
-
cancel the step. "Check the weather for the Bellevue office and tell me if
|
|
104
|
-
it's a nice day" names a lookup and a threshold decision; build both.
|
|
105
|
-
|
|
106
|
-
### Plan first only when the flow is complex
|
|
107
|
-
|
|
108
|
-
Plan before building when the flow has five or more nodes with branching or
|
|
109
|
-
parallel paths, needs connector or resource discovery, or the requirements are
|
|
110
|
-
ambiguous. Build directly for a single-node edit, a linear pipeline, or a
|
|
111
|
-
topology the user already spelled out.
|
|
112
|
-
|
|
113
|
-
Skipping the plan never skips the node choice. Two outcomes ("if … otherwise
|
|
114
|
-
…") are a `.branch`, never a script ternary; three or more are a `.switch`; a
|
|
115
|
-
named external service goes through rule 1.
|
|
116
|
-
|
|
117
|
-
A plan states: a one-line summary, the node table (step name, node, why), the
|
|
118
|
-
wiring, the inputs and outputs, every connector and its connection, and open
|
|
119
|
-
questions. Get it approved before building (rule 9, with "proceed"
|
|
120
|
-
recommended).
|
|
121
|
-
|
|
122
|
-
**Is Maestro the right home?** A flow earns its place with several waits,
|
|
123
|
-
branching or parallel paths, SLAs, cross-product composition, or per-case
|
|
124
|
-
visibility. A single-wait, mostly linear process may be simpler as a queue plus
|
|
125
|
-
Action Center; say so before designing topology.
|
|
126
|
-
|
|
127
|
-
## Anti-patterns
|
|
128
|
-
|
|
129
|
-
- **Never replace a registered connector with `mock()` or a script because it
|
|
130
|
-
cannot be configured yet.** Write the `connector(...)` step, run the
|
|
131
|
-
`prepare` that `check` names, and if there is no live connection, report
|
|
132
|
-
"prepare pending" as an open question. Reviewers and Studio Web need the real
|
|
133
|
-
connector in the artifact.
|
|
134
|
-
- **Never reuse a reference id from another flow or session** — a mailbox
|
|
135
|
-
folder, a Slack channel, a Jira project. Ids are scoped to the account behind
|
|
136
|
-
the connection: a reused one compiles, validates, and faults at run time.
|
|
137
|
-
Resolve it again with a `lookup()` token and the `prepare` that `check`
|
|
138
|
-
names.
|
|
139
|
-
- **Never write a reference field you could not resolve.** If the lookup fails
|
|
140
|
-
(401/403 on an expired grant, 5xx), you have no id: do not substitute the
|
|
141
|
-
display name, an alias, or a remembered value. Stop and report the failed
|
|
142
|
-
resolve.
|
|
143
|
-
- **Never reference a parent's values inside a subflow.** A child flow has its
|
|
144
|
-
own scope; pass values through the `subflow(child, {...})` inputs and read
|
|
145
|
-
them with `input(...)`. `check` does not flag a child script that reads
|
|
146
|
-
`$vars.start.output.*` from the parent — it compiles and resolves to nothing.
|
|
147
|
-
- **Never use `console.log` in a script.** The script runtime has no
|
|
148
|
-
`console`, and `check` does not flag it. Return the value to inspect:
|
|
149
|
-
`return { debug: value }`.
|
|
150
|
-
- **Never treat a green `validate` as proof of business correctness.** It
|
|
151
|
-
checks structure. Named outputs, reference ids and connector field values
|
|
152
|
-
are only proven by the evidence in [`CLI-LOOP.md`](CLI-LOOP.md#bounded-completion).
|
|
153
|
-
|
|
154
|
-
## Completion output
|
|
155
|
-
|
|
156
|
-
When authoring is done, report:
|
|
157
|
-
|
|
158
|
-
1. **File paths** — the `.flow.ts` source and the emitted `.flow`.
|
|
159
|
-
2. **What was built** — steps, branches and outputs, in a sentence or two.
|
|
160
|
-
3. **Loop status** — the last `check`, `compile` and `validate` results,
|
|
161
|
-
including any warning you judged acceptable and why.
|
|
162
|
-
4. **Placeholders** — each `mock()` and the capability it stands for.
|
|
163
|
-
5. **Missing connections or pending prepares** — per connector.
|
|
164
|
-
6. **Open questions** — every decision the request left open, each marked
|
|
165
|
-
**[REQUIRED]** or **[OPTIONAL]**.
|
|
166
|
-
7. **What's next** — when the request did not already say, ask with rule 9:
|
|
167
|
-
upload to Studio Web, debug the flow, deploy to Orchestrator, or "Something
|
|
168
|
-
else". Each hands off to [`operate.md`](operate.md). A request that already
|
|
169
|
-
named the next step ("publish it", "debug it") is the selection; act on it.
|
|
170
|
-
|
|
171
|
-
## Narration and progress
|
|
172
|
-
|
|
173
|
-
Silent by default: surface decisions, failures, consent gates and the final
|
|
174
|
-
result. Narrate each logical step in one plain-English line, and keep a
|
|
175
|
-
step-level progress list, only when the user asks for it (verbose, show steps,
|
|
176
|
-
track progress) or has a standing preference for it. A logical step is the
|
|
177
|
-
smallest outcome the user cares about — "added the Slack step", not the three
|
|
178
|
-
commands behind it.
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# Batch Transform
|
|
2
|
-
|
|
3
|
-
*Exact signatures, fields, and defaults: `batchTransform()`.*
|
|
4
|
-
|
|
5
|
-
Adds AI-generated columns to a CSV and returns a new file attachment.
|
|
6
|
-
|
|
7
|
-
Signature: `batchTransform({ attachment, prompt, outputColumns, enableWebSearchGrounding? })`
|
|
8
|
-
|
|
9
|
-
```ts
|
|
10
|
-
.step('categorizeRows',
|
|
11
|
-
batchTransform({
|
|
12
|
-
attachment: out('start', 'csvFile'),
|
|
13
|
-
prompt: 'Classify each row by category and write a one-line summary.',
|
|
14
|
-
outputColumns: [
|
|
15
|
-
{ name: 'Category', description: 'One of: Utility, Software, Travel, Other' },
|
|
16
|
-
{ name: 'Summary', description: 'Plain-English one-line summary of the row' },
|
|
17
|
-
],
|
|
18
|
-
}))
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## General
|
|
22
|
-
|
|
23
|
-
- Error **460005** can be transient; retry it once before classifying the failure
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
# Symbolic connector bindings
|
|
2
|
-
|
|
3
|
-
`bindings.json` maps the short connection and folder names in authored
|
|
4
|
-
TypeScript to tenant resource keys. It lives in the SDK's work directory,
|
|
5
|
-
`.flow-sdk/`, beside the `<Name>.flow.ts` file.
|
|
6
|
-
|
|
7
|
-
## Project layout
|
|
8
|
-
|
|
9
|
-
```text
|
|
10
|
-
.flow-sdk/
|
|
11
|
-
<Name>.flow.ts
|
|
12
|
-
bindings.json
|
|
13
|
-
connectors/
|
|
14
|
-
<connector-key>.ts
|
|
15
|
-
connectors-local/
|
|
16
|
-
<connector-key>.ts
|
|
17
|
-
descriptors/
|
|
18
|
-
<connector-key>/
|
|
19
|
-
index.json
|
|
20
|
-
...generated descriptor data...
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
`uip maestro registry prepare` writes `.flow-sdk/bindings.json` and prints the
|
|
24
|
-
import for `./connectors-local/<connector-key>.ts`, relative to the source.
|
|
25
|
-
The generated descriptor data lives below `connectors-local/descriptors/`; do
|
|
26
|
-
not import it directly. `bindings.json` is independent of that descriptor
|
|
27
|
-
overlay. Studio Web reads none of these files, and `uip solution pack`/`upload`
|
|
28
|
-
leave `.flow-sdk/` out.
|
|
29
|
-
|
|
30
|
-
## Schema
|
|
31
|
-
|
|
32
|
-
Use `schemaVersion: "1"` and a `bindings` array. Version `1` is the current
|
|
33
|
-
authored-file format marker. The current loader does not branch on this value,
|
|
34
|
-
but including it keeps the file explicit and compatible with shipped examples.
|
|
35
|
-
|
|
36
|
-
Each connector entry should carry the complete shape below. Resolution needs a
|
|
37
|
-
matching `name` or `id` and a `resourceKey` or `default`; the other fields keep
|
|
38
|
-
the resource kind and emitted binding purpose explicit.
|
|
39
|
-
|
|
40
|
-
| Field | Required for resolution | Meaning |
|
|
41
|
-
|---|:---:|---|
|
|
42
|
-
| `id` | one of `id` / `name` | Stable binding identifier; may be used as the symbolic source name. |
|
|
43
|
-
| `name` | one of `id` / `name` | Symbolic name normally passed to `connection` or `folder`. |
|
|
44
|
-
| `resource` | no | `"Connection"` for Integration Service connection and folder entries. |
|
|
45
|
-
| `resourceKey` | one of `resourceKey` / `default` | Tenant connection id or folder key. This value wins when both value fields exist. |
|
|
46
|
-
| `default` | one of `resourceKey` / `default` | Fallback when `resourceKey` is absent. Shipped examples repeat the resource key here. |
|
|
47
|
-
| `propertyAttribute` | no | `"ConnectionId"` for a connection or `"FolderKey"` for a folder. |
|
|
48
|
-
|
|
49
|
-
## Where both values come from
|
|
50
|
-
|
|
51
|
-
**Usually you do not fill these in at all.**
|
|
52
|
-
`uip maestro registry prepare <connector-key> <action>` discovers the connection and writes both entries into `bindings.json` for you — see [connector-params.md](connector-params.md#resolving-connection-scoped-reference-values).
|
|
53
|
-
Reach for the manual route below only when you are authoring bindings without
|
|
54
|
-
running `prepare`.
|
|
55
|
-
|
|
56
|
-
If you are doing it by hand: `uip is connections list --all-folders` returns the
|
|
57
|
-
connection id **and its folder key** on the same record, so one call answers both.
|
|
58
|
-
Always pass `--all-folders`: the default listing is your own folder only, and a
|
|
59
|
-
connection shared from another folder (the usual case on a team tenant) is
|
|
60
|
-
invisible without it — an empty or unrelated default listing is not evidence
|
|
61
|
-
that the connection does not exist.
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
uip is connections list --all-folders --output json
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
```text
|
|
68
|
-
{
|
|
69
|
-
"Name": "dustin.metzgar",
|
|
70
|
-
"Id": "c03a1967-f702-47d2-9ede-917aed159805",
|
|
71
|
-
"Folder": "dustin.metzgar@uipath.com's workspace",
|
|
72
|
-
"FolderKey": "b53217ce-25b2-46cd-a6b0-b73c6ba5894c",
|
|
73
|
-
"ConnectorKey": "uipath-salesforce-slack",
|
|
74
|
-
"State": "Enabled"
|
|
75
|
-
}
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
`Id` is the connection binding's `resourceKey`; **`FolderKey` is the folder
|
|
79
|
-
binding's**. Never fill either with a made-up GUID or with the binding's own
|
|
80
|
-
name. `compile` refuses two shapes, and `check` reports both first: a binding
|
|
81
|
-
whose `resourceKey` is its own name (`BINDING_SELF_NAME`), and a `connection:` /
|
|
82
|
-
`folder:` label that a `bindings.json` with entries does not declare
|
|
83
|
-
(`BINDING_UNDECLARED` — for example the source says `is-sandboxes` while the file
|
|
84
|
-
declares `slack` and `shared`). It warns `CONNECTION_STUB` on an all-zero GUID,
|
|
85
|
-
an `<angle-bracket>` placeholder or any other non-GUID value, and on a label when
|
|
86
|
-
no `bindings.json` is loaded or it declares no entries (the run would fault at
|
|
87
|
-
dispatch — `'Connection' has an invalid GUID value` or a `401 Invalid
|
|
88
|
-
Organization or User secret`). A plausible-looking but wrong GUID still compiles
|
|
89
|
-
and faults at run time. Only an id read from the tenant is right.
|
|
90
|
-
|
|
91
|
-
Several connections often share one name (a team tenant can hold three Slack
|
|
92
|
-
connections all named `is-sandboxes`, in different folders). A name then cannot
|
|
93
|
-
pick one: `prepare … --connection <name>` lists each candidate with its
|
|
94
|
-
`--connection-id <id>` and folder — pass the id of the one in the folder you mean,
|
|
95
|
-
and `prepare` still writes both entries into `bindings.json`.
|
|
96
|
-
|
|
97
|
-
**Do not go looking in Orchestrator for the folder.** `uip or folders list` is a
|
|
98
|
-
different resource with different keys, and a folder binding wants the one the
|
|
99
|
-
CONNECTION lives in — which you already have. Measured on the eval corpus: an
|
|
100
|
-
agent that had already listed the connection went on to spend three to four
|
|
101
|
-
further calls on `uip or --help`, `uip or folders --help` and `folders list`,
|
|
102
|
-
searching for a folder matching the symbolic name in its prompt. The symbolic
|
|
103
|
-
name (`slack`, `shared`) is just the label you pass to `connector()`; it is never
|
|
104
|
-
something to search the tenant for.
|
|
105
|
-
|
|
106
|
-
Copy this two-connector, one-folder example and replace all three placeholders
|
|
107
|
-
with values from the connection listing above:
|
|
108
|
-
|
|
109
|
-
```json
|
|
110
|
-
{
|
|
111
|
-
"schemaVersion": "1",
|
|
112
|
-
"bindings": [
|
|
113
|
-
{
|
|
114
|
-
"id": "slack",
|
|
115
|
-
"name": "slack",
|
|
116
|
-
"resource": "Connection",
|
|
117
|
-
"resourceKey": "<slack-connection-id>",
|
|
118
|
-
"default": "<slack-connection-id>",
|
|
119
|
-
"propertyAttribute": "ConnectionId"
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
"id": "jira",
|
|
123
|
-
"name": "jira",
|
|
124
|
-
"resource": "Connection",
|
|
125
|
-
"resourceKey": "<jira-connection-id>",
|
|
126
|
-
"default": "<jira-connection-id>",
|
|
127
|
-
"propertyAttribute": "ConnectionId"
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
"id": "shared",
|
|
131
|
-
"name": "shared",
|
|
132
|
-
"resource": "Connection",
|
|
133
|
-
"resourceKey": "<folder-key>",
|
|
134
|
-
"default": "<folder-key>",
|
|
135
|
-
"propertyAttribute": "FolderKey"
|
|
136
|
-
}
|
|
137
|
-
]
|
|
138
|
-
}
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
Use unique `id` and `name` values. The resolver takes the first entry whose
|
|
142
|
-
`name` or `id` matches the authored symbol.
|
|
143
|
-
|
|
144
|
-
## Resolution and precedence
|
|
145
|
-
|
|
146
|
-
The compile commands load `--bindings <file>` when supplied. Otherwise they
|
|
147
|
-
load `.flow-sdk/bindings.json` under the current directory when it exists. A
|
|
148
|
-
workspace laid out before `.flow-sdk/` existed, with only a root-level
|
|
149
|
-
`./bindings.json`, keeps using that file; when both exist the `.flow-sdk/` one
|
|
150
|
-
wins and stderr names the ignored root file. `emitFlow()` uses the same
|
|
151
|
-
default unless `bindingsFile` or a `Bindings` instance is supplied.
|
|
152
|
-
|
|
153
|
-
```ts
|
|
154
|
-
.step('notify', connector(SendMessage, {
|
|
155
|
-
channel: 'C123',
|
|
156
|
-
text: 'Ready',
|
|
157
|
-
}, { connection: 'slack', folder: 'shared' }))
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
During emission, `connection: 'slack'` matches the entry whose `name` or `id`
|
|
161
|
-
is `slack`; `folder: 'shared'` is resolved the same way. For each match,
|
|
162
|
-
`resourceKey` wins over `default`. An unmatched symbol is emitted unchanged, so
|
|
163
|
-
do not treat a successful compile as proof that an invented id exists.
|
|
164
|
-
|
|
165
|
-
Only compile/emission reads the authored file. `uip maestro flow validate`,
|
|
166
|
-
solution resource refresh, and product debug read the emitted `.flow`, not
|
|
167
|
-
`.flow-sdk/bindings.json`. A compile regenerates the artifact from the authored
|
|
168
|
-
mapping. A later direct edit to the artifact remains in effect only until the
|
|
169
|
-
next compile.
|
|
170
|
-
|
|
171
|
-
## Emitted-artifact bindings
|
|
172
|
-
|
|
173
|
-
`uip maestro flow binding add` edits bindings inside an already emitted `.flow`;
|
|
174
|
-
it does not create or update `.flow-sdk/bindings.json`. SDK-authored Integration
|
|
175
|
-
Service actions and managed HTTP nodes should instead keep symbolic names in
|
|
176
|
-
source plus `bindings.json`, so recompilation deterministically restores the
|
|
177
|
-
same node detail and product bindings. Use direct artifact edits only for a
|
|
178
|
-
brownfield `.flow` with no source representation.
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# Branch
|
|
2
|
-
|
|
3
|
-
Branch makes a two-way runtime decision.
|
|
4
|
-
|
|
5
|
-
Signature: `.branch(name, condition, thenFn, elseFn?)`. Each callback receives a
|
|
6
|
-
sub-builder and may use `.label(text)` for its edge label.
|
|
7
|
-
|
|
8
|
-
```ts
|
|
9
|
-
.branch('large', js`${input('amount')} > 1000`,
|
|
10
|
-
(yes) => yes.step('review', script({ code: 'return "review";' })),
|
|
11
|
-
(no) => no.step('approve', script({ code: 'return "approved";' })))
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
Use Branch when the scenario has two paths. Whether each arm should end locally
|
|
15
|
-
or fall through to shared work is a business-flow choice.
|
|
16
|
-
|
|
17
|
-
The two sequence ports are `true` and `false`. Arm `.label(text)` values become
|
|
18
|
-
`trueLabel` and `falseLabel`, defaulting to `True` and `False`.
|