@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,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CAPABILITY: run a deployed Orchestrator FUNCTION as one step.
|
|
3
|
-
*
|
|
4
|
-
* A function is a small unit of code published as its own resource. `key`
|
|
5
|
-
* becomes part of the node type (`uipath.core.function.<key>`); `name` and
|
|
6
|
-
* `folderPath` locate the deployment. `returns` declares the fields the
|
|
7
|
-
* function hands back so downstream steps can read them.
|
|
8
|
-
*
|
|
9
|
-
* A function is usually deployed into a folder of its OWN name, and the
|
|
10
|
-
* binding's `resourceKey` is `<folderPath>.<name>` — read the folder from the
|
|
11
|
-
* tenant rather than assuming `'Shared'`.
|
|
12
|
-
*
|
|
13
|
-
* Generic scenario: convert a tide height between measurement systems.
|
|
14
|
-
*/
|
|
15
|
-
import { flow, publishedFunction, script, input, out, types } from '@uipath/maestro-builder-sdk';
|
|
16
|
-
|
|
17
|
-
export default flow('tide-table-converter')
|
|
18
|
-
.name('TideTableConverter')
|
|
19
|
-
.version('1.0.0')
|
|
20
|
-
.input({ heightFeet: types.number })
|
|
21
|
-
.output({ reading: types.string })
|
|
22
|
-
.step('toMetres', publishedFunction({
|
|
23
|
-
key: 'd41f60c8-27b5-4e19-8a3d-6f0be9147c52',
|
|
24
|
-
name: 'tide-convert',
|
|
25
|
-
folderPath: 'Shared/tide-convert',
|
|
26
|
-
inputs: { feet: input('heightFeet') },
|
|
27
|
-
returns: { metres: 'number' },
|
|
28
|
-
}))
|
|
29
|
-
.step('formatReading', script({
|
|
30
|
-
code:
|
|
31
|
-
'return String($vars.start.output.heightFeet) + " ft = "'
|
|
32
|
-
+ ' + String($vars.toMetres.output.metres) + " m";',
|
|
33
|
-
}))
|
|
34
|
-
.return({ reading: out('formatReading') })
|
|
35
|
-
.build();
|
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CAPABILITY: the three `transform` VARIANTS — filter, map, group-by — chained.
|
|
3
|
-
*
|
|
4
|
-
* Filter → keep the rows you want
|
|
5
|
-
* Map → reshape each row (`keepOriginalFields: false` drops the rest)
|
|
6
|
-
* Group by→ one row per key, with aggregations
|
|
7
|
-
*
|
|
8
|
-
* Each variant node carries EXACTLY ONE operation of the matching type
|
|
9
|
-
* (`variant: 'group-by'` ⇢ `type: 'groupBy'` — node type hyphenated, operation
|
|
10
|
-
* camelCase). Each step's `collection` is the previous step's `out(...)`, which
|
|
11
|
-
* is a path — which is what `collection` wants.
|
|
12
|
-
*
|
|
13
|
-
* Generic scenario: a season of hiking-trail logs → miles walked per difficulty
|
|
14
|
-
* band. Static data lives in a variable default because `collection` is a path.
|
|
15
|
-
*/
|
|
16
|
-
import { flow, transform, v, out, types } from '@uipath/maestro-builder-sdk';
|
|
17
|
-
|
|
18
|
-
export default flow('trail-log-summary')
|
|
19
|
-
.name('TrailLogSummary')
|
|
20
|
-
.version('1.0.0')
|
|
21
|
-
.output({ perBand: types.array })
|
|
22
|
-
|
|
23
|
-
.var('logs', types.array, [
|
|
24
|
-
{ trail: 'Cedar Ridge', band: 'moderate', status: 'open', miles: 7 },
|
|
25
|
-
{ trail: 'Fern Gully', band: 'easy', status: 'open', miles: 3 },
|
|
26
|
-
{ trail: 'Granite Spine', band: 'hard', status: 'closed', miles: 11 },
|
|
27
|
-
{ trail: 'Otter Creek', band: 'easy', status: 'open', miles: 4 },
|
|
28
|
-
{ trail: 'Storm Pass', band: 'hard', status: 'open', miles: 9 },
|
|
29
|
-
{ trail: 'Willow Bend', band: 'moderate', status: 'open', miles: 5 },
|
|
30
|
-
])
|
|
31
|
-
|
|
32
|
-
// 1. Filter — one rule, so the node IS a filter.
|
|
33
|
-
.step('walkable', transform({
|
|
34
|
-
variant: 'filter',
|
|
35
|
-
collection: v('logs'),
|
|
36
|
-
operations: [
|
|
37
|
-
{ type: 'filter', operation: 'and', filters: [{ field: 'status', condition: 'equals', value: 'open' }] },
|
|
38
|
-
],
|
|
39
|
-
}))
|
|
40
|
-
|
|
41
|
-
// 2. Map — keep only what step 3 needs. `keepOriginalFields: false` drops the rest.
|
|
42
|
-
.step('summaryFields', transform({
|
|
43
|
-
variant: 'map',
|
|
44
|
-
collection: out('walkable'),
|
|
45
|
-
operations: [
|
|
46
|
-
{
|
|
47
|
-
type: 'map',
|
|
48
|
-
keepOriginalFields: false,
|
|
49
|
-
mappings: [
|
|
50
|
-
{ field: 'band', transformation: 'uppercase', renameTo: 'grade' },
|
|
51
|
-
{ field: 'miles' },
|
|
52
|
-
],
|
|
53
|
-
},
|
|
54
|
-
],
|
|
55
|
-
}))
|
|
56
|
-
|
|
57
|
-
// 3. Group by — one row per grade. `count` is the only aggregation with no `field`.
|
|
58
|
-
.step('perBand', transform({
|
|
59
|
-
variant: 'group-by',
|
|
60
|
-
collection: out('summaryFields'),
|
|
61
|
-
operations: [
|
|
62
|
-
{
|
|
63
|
-
type: 'groupBy',
|
|
64
|
-
groupByField: 'grade',
|
|
65
|
-
aggregations: [
|
|
66
|
-
{ operation: 'count', alias: 'trails' },
|
|
67
|
-
{ operation: 'sum', field: 'miles', alias: 'totalMiles' },
|
|
68
|
-
],
|
|
69
|
-
},
|
|
70
|
-
],
|
|
71
|
-
}))
|
|
72
|
-
|
|
73
|
-
.return({ perBand: out('perBand') })
|
|
74
|
-
|
|
75
|
-
.build();
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CAPABILITY: invoke a deployed RPA workflow and declare its returned fields.
|
|
3
|
-
*
|
|
4
|
-
* The process key selects the node type; name and folder locate the deployed
|
|
5
|
-
* automation. `returns` makes the robot's output readable downstream.
|
|
6
|
-
*
|
|
7
|
-
* Generic scenario: ask a robot to count missing tools in a shared workshop.
|
|
8
|
-
*/
|
|
9
|
-
import { flow, rpaWorkflow, script, input, out, types } from '@uipath/maestro-builder-sdk';
|
|
10
|
-
|
|
11
|
-
export default flow('workshop-inventory')
|
|
12
|
-
.name('WorkshopInventory')
|
|
13
|
-
.version('1.0.0')
|
|
14
|
-
.input({ zone: types.string })
|
|
15
|
-
.output({ report: types.string })
|
|
16
|
-
.step('countTools', rpaWorkflow({
|
|
17
|
-
key: 'bb67ae85-84ca-4b2c-9f37-ac52c57f9d18',
|
|
18
|
-
name: 'Workshop Tool Count',
|
|
19
|
-
folderPath: 'Shared/community-workshop',
|
|
20
|
-
inputs: { zone: input('zone') },
|
|
21
|
-
returns: { missingTools: 'integer' },
|
|
22
|
-
}))
|
|
23
|
-
.step('formatCount', script({
|
|
24
|
-
code: 'return "missing tools: " + String($vars.countTools.output.missingTools);',
|
|
25
|
-
}))
|
|
26
|
-
.return({ report: out('formatCount') })
|
|
27
|
-
.build();
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schemaVersion": "1",
|
|
3
|
-
"bindings": [
|
|
4
|
-
{
|
|
5
|
-
"id": "slack",
|
|
6
|
-
"name": "slack",
|
|
7
|
-
"resource": "Connection",
|
|
8
|
-
"resourceKey": "<slack-connection-id from `uip is connections list --output json`>",
|
|
9
|
-
"default": "00000000-0000-0000-0000-000000000001",
|
|
10
|
-
"propertyAttribute": "ConnectionId"
|
|
11
|
-
},
|
|
12
|
-
{
|
|
13
|
-
"id": "jira",
|
|
14
|
-
"name": "jira",
|
|
15
|
-
"resource": "Connection",
|
|
16
|
-
"resourceKey": "<jira-connection-id from `uip is connections list --output json`>",
|
|
17
|
-
"default": "00000000-0000-0000-0000-000000000005",
|
|
18
|
-
"propertyAttribute": "ConnectionId"
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"id": "shared",
|
|
22
|
-
"name": "shared",
|
|
23
|
-
"resource": "Connection",
|
|
24
|
-
"resourceKey": "<folder-key from `uip is connections list --output json`>",
|
|
25
|
-
"default": "00000000-0000-0000-0000-000000000002",
|
|
26
|
-
"propertyAttribute": "FolderKey"
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
"id": "bWebhook",
|
|
30
|
-
"name": "uipath-http-webhook connection",
|
|
31
|
-
"resource": "Connection",
|
|
32
|
-
"resourceKey": "<http-webhook-connection-id from `uip is connections list --output json`>",
|
|
33
|
-
"default": "00000000-0000-0000-0000-000000000003",
|
|
34
|
-
"propertyAttribute": "ConnectionId"
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
"id": "bWebhookFolder",
|
|
38
|
-
"name": "uipath-http-webhook folder",
|
|
39
|
-
"resource": "Connection",
|
|
40
|
-
"resourceKey": "<folder-key of that connection, same command>",
|
|
41
|
-
"default": "00000000-0000-0000-0000-000000000004",
|
|
42
|
-
"propertyAttribute": "FolderKey"
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
"id": "dataService",
|
|
46
|
-
"name": "dataService",
|
|
47
|
-
"resource": "Connection",
|
|
48
|
-
"resourceKey": "<dataservice-connection-id from `uip is connections list --output json`>",
|
|
49
|
-
"default": "00000000-0000-0000-0000-000000000006",
|
|
50
|
-
"propertyAttribute": "ConnectionId"
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
"id": "entra",
|
|
54
|
-
"name": "entra",
|
|
55
|
-
"resource": "Connection",
|
|
56
|
-
"resourceKey": "<entra-connection-id from `uip is connections list --output json`>",
|
|
57
|
-
"default": "00000000-0000-0000-0000-000000000009",
|
|
58
|
-
"propertyAttribute": "ConnectionId"
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
"id": "bOneDrive",
|
|
62
|
-
"name": "uipath-microsoft-onedrive connection",
|
|
63
|
-
"resource": "Connection",
|
|
64
|
-
"resourceKey": "<onedrive-connection-id from `uip is connections list --all-folders --output json`>",
|
|
65
|
-
"default": "00000000-0000-0000-0000-000000000007",
|
|
66
|
-
"propertyAttribute": "ConnectionId"
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
"id": "bOneDriveFolder",
|
|
70
|
-
"name": "uipath-microsoft-onedrive folder",
|
|
71
|
-
"resource": "Connection",
|
|
72
|
-
"resourceKey": "<folder-key of that connection, same command>",
|
|
73
|
-
"default": "00000000-0000-0000-0000-000000000008",
|
|
74
|
-
"propertyAttribute": "FolderKey"
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
"id": "outlook",
|
|
78
|
-
"name": "outlook",
|
|
79
|
-
"resource": "Connection",
|
|
80
|
-
"resourceKey": "<outlook365-connection-id from `uip is connections list --output json`>",
|
|
81
|
-
"default": "00000000-0000-0000-0000-000000000010",
|
|
82
|
-
"propertyAttribute": "ConnectionId"
|
|
83
|
-
}
|
|
84
|
-
]
|
|
85
|
-
}
|
|
@@ -1,309 +0,0 @@
|
|
|
1
|
-
# Authoring and product-CLI loops
|
|
2
|
-
|
|
3
|
-
Choose one loop before running any build command:
|
|
4
|
-
|
|
5
|
-
- if the task requests product-CLI validation/debug, or the workspace enables
|
|
6
|
-
`flowSdk.emitOnly`/`FLOW_SDK_EMIT_ONLY=1`, use only the eval/product-CLI loop;
|
|
7
|
-
- otherwise use the packaged-SDK local gates.
|
|
8
|
-
|
|
9
|
-
In eval/product mode, create the solution/project scaffold immediately after
|
|
10
|
-
choosing the loop, before authoring the source. Once the source first
|
|
11
|
-
compiles, emit it into that nested project artifact—not `/tmp`—and keep the
|
|
12
|
-
artifact current after every source edit.
|
|
13
|
-
|
|
14
|
-
Tenant discovery is not a phase of either loop. The one step before authoring
|
|
15
|
-
is choosing the node ([SKILL.md, "Choose the node before writing it"](../SKILL.md)):
|
|
16
|
-
`check` cannot flag a node you never wrote, so a script or `mock()` written in
|
|
17
|
-
its place goes unflagged.
|
|
18
|
-
After that, author the source from the task's own words; the source `check`
|
|
19
|
-
names every tenant call you owe —
|
|
20
|
-
each unresolved lookup, unmaterialized object, and out-of-snapshot field, with
|
|
21
|
-
the exact `registry prepare` command — so the one expensive call is spent
|
|
22
|
-
once, after the cheap pass has found everything else that is wrong.
|
|
23
|
-
|
|
24
|
-
Do not mix the two loops in one workspace or use one mode as a probe for the
|
|
25
|
-
other. Their output layouts and evidence contracts are different.
|
|
26
|
-
|
|
27
|
-
## Source-model and brownfield judgment
|
|
28
|
-
|
|
29
|
-
TypeScript executes while the graph is constructed. Use Flow Branch, Switch,
|
|
30
|
-
Loop, and action nodes for decisions or work that must happen at runtime; a
|
|
31
|
-
native `if` or `for` is appropriate only for deliberate author-time graph
|
|
32
|
-
generation.
|
|
33
|
-
|
|
34
|
-
When editing an existing Flow, change the supplied `.flow.ts`, preserve existing
|
|
35
|
-
step names and unaffected wiring, and move an edge through an inserted step
|
|
36
|
-
rather than leaving the old bypass in place. If the input is only raw `.flow`
|
|
37
|
-
JSON, reconstruct source, compile once to compare the emitted baseline, and
|
|
38
|
-
then make the requested edit. Those are before/after judgments no final
|
|
39
|
-
artifact can establish.
|
|
40
|
-
|
|
41
|
-
## Installing the package
|
|
42
|
-
|
|
43
|
-
Skip this when the SDK is already installed: `npm ls -g @uipath/maestro-builder-sdk` lists it, or a prepared workspace has `node_modules/@uipath/maestro-builder-sdk` (a workspace copy is used before a global one).
|
|
44
|
-
Every `uip maestro flow` authoring verb — `check`, `compile`, `decompile` — runs from the installed package, so all of them refuse until it is installed; the package cannot bootstrap itself.
|
|
45
|
-
Install it once per machine, globally, so the workspace needs no `package.json` or `node_modules/`:
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
npm install -g @uipath/maestro-builder-sdk
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
The package is public on npmjs.com, so this needs no token and follows whatever registry or mirror the machine's npm config names.
|
|
52
|
-
Only if it fails with E401 or E404 **and** `npm config get @uipath:registry` names GitHub Packages, retry once with `--@uipath:registry=https://registry.npmjs.org` appended.
|
|
53
|
-
If it fails with EACCES (npm's global folder is not writable), do not use `sudo`; install into the workspace instead with `npm install --save-dev @uipath/maestro-builder-sdk`, which `uip` also finds.
|
|
54
|
-
Any other failure (a timeout, a mirror refusing the package) is the user's network or registry to fix, so report it rather than routing around it.
|
|
55
|
-
When `uip` reports the SDK is below its minimum version, run the command its `Instructions` give: it names `-g` or `--save-dev` depending on which copy it found.
|
|
56
|
-
|
|
57
|
-
## Local authoring hard gates
|
|
58
|
-
|
|
59
|
-
Use this section only when emit-only mode is disabled. Use the source check as
|
|
60
|
-
the fast no-output inner loop (with a library and `.flow-sdk/bindings.json` beside the
|
|
61
|
-
source it reports every connector-input and binding refusal `compile` would
|
|
62
|
-
raise), compile to emit, then run the product's static check on the artifact.
|
|
63
|
-
There is no compiled-artifact `check`; `validate` is that rung.
|
|
64
|
-
|
|
65
|
-
The full sequence, in order — `registry prepare` appears only where `check`
|
|
66
|
-
names it, never before the source exists:
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
uip maestro flow check .flow-sdk/<Name>.flow.ts --source
|
|
70
|
-
# run each prepare the check names, with the exact command it prints:
|
|
71
|
-
uip maestro registry prepare <key> <action> [--object <name>] [--resolve <field>:<by>=<value>] [-f <parent>=<value>]
|
|
72
|
-
uip maestro flow check .flow-sdk/<Name>.flow.ts --source # re-check until clean
|
|
73
|
-
uip maestro flow compile .flow-sdk/<Name>.flow.ts -o <Name>.flow
|
|
74
|
-
uip maestro flow validate <Name>.flow --output json
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
Warnings require deliberate review; whether one blocks a release comes from the
|
|
78
|
-
surrounding task or release policy.
|
|
79
|
-
|
|
80
|
-
Layout is deliberately absent from this sequence. `uip maestro flow format`
|
|
81
|
-
is not an authoring gate — `validate` passes without it and nothing upstream
|
|
82
|
-
reads a position. It is required before the emitted file reaches anything that
|
|
83
|
-
draws it: `solution upload`, `flow debug`, or a person opening the project in a
|
|
84
|
-
designer. See [`operate.md`](operate.md#lay-out-the-emitted-flow-first).
|
|
85
|
-
|
|
86
|
-
These authoring verbs require a prerelease of `@uipath/cli` that exposes them.
|
|
87
|
-
|
|
88
|
-
## Product-CLI scaffold
|
|
89
|
-
|
|
90
|
-
Product debug needs a solution containing a Flow project. Keep the authored
|
|
91
|
-
source in the project's own `.flow-sdk/` (`<Solution>/<Name>/.flow-sdk/`), run the
|
|
92
|
-
SDK verbs from the project folder, and create the nested scaffold once:
|
|
93
|
-
|
|
94
|
-
```bash
|
|
95
|
-
uip solution init <Solution>
|
|
96
|
-
( cd <Solution> && uip maestro flow init <Name> --sdk-source )
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
`--sdk-source` seeds `<Solution>/<Name>/.flow-sdk/<Name>.flow.ts` from the stub `flow init` just wrote (and creates the folder), so the flow's id and name come from the product instead of being invented, and the stub is overwritten in place by the first `compile -o`.
|
|
100
|
-
Drop `--sdk-source` when the source already exists (`init` refuses to overwrite it without `--force`), and skip the whole block for an existing project.
|
|
101
|
-
For a **Maestro Automate** project (the request names that product, not just the verb "automate"), add `--automate` to the `flow init` line; nothing else in either loop changes.
|
|
102
|
-
|
|
103
|
-
`<Solution>` and `<Name>` are the request's own names, used verbatim: a request
|
|
104
|
-
that gives one name for both ("inside a solution of the same name") uses it for
|
|
105
|
-
both, and a request that names only the Flow uses `<Name>` for both. The result
|
|
106
|
-
has three related names: `.flow-sdk/<Name>.flow.ts`, the `<Name>` project directory, and
|
|
107
|
-
`<Name>.flow` inside that project. Keep them aligned for this scaffold so each
|
|
108
|
-
command addresses the intended project; `compile -o` remains the authority over
|
|
109
|
-
where the emitted file is written.
|
|
110
|
-
|
|
111
|
-
## Eval/product-CLI packaging: emit-only
|
|
112
|
-
|
|
113
|
-
The product-runtime eval sets `flowSdk.emitOnly` in `package.json` (with
|
|
114
|
-
`FLOW_SDK_EMIT_ONLY=1` retained as an environment override). Emit-only is a
|
|
115
|
-
property of the **project**, not of the directory you run from: the mode is the
|
|
116
|
-
nearest `package.json` up the tree that actually declares `flowSdk.emitOnly`, so
|
|
117
|
-
compiling from a scaffolded solution subdirectory behaves exactly as it does
|
|
118
|
-
from the project root. A nested `package.json` that says nothing about `flowSdk`
|
|
119
|
-
inherits; one that sets `emitOnly: false` opts out. In that mode
|
|
120
|
-
`uip maestro flow compile` only serializes source, and `uip maestro flow check`
|
|
121
|
-
refuses, because product validation owns structural verification. The required
|
|
122
|
-
base pass is emit, any required artifact bindings, then validate. Add resource
|
|
123
|
-
refresh and debug only when the stated acceptance bar requires product-runtime
|
|
124
|
-
behavior evidence:
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
( cd <Solution>/<Name> && uip maestro flow compile .flow-sdk/<Name>.flow.ts -o <Name>.flow )
|
|
128
|
-
uip maestro flow validate <Solution>/<Name>/<Name>.flow --output json
|
|
129
|
-
# Before anything opens the emitted file — upload, debug, or a designer:
|
|
130
|
-
uip maestro flow format <Solution>/<Name>/<Name>.flow --output json
|
|
131
|
-
# Only for a stated runtime-behavior claim:
|
|
132
|
-
( cd <Solution> && uip solution resources refresh --solution-folder . --output json )
|
|
133
|
-
( cd <Solution> && uip maestro flow debug <Name> --log-level error \
|
|
134
|
-
--output-filter "{status:finalStatus,instance:instanceId,url:studioWebUrl,failed:elementExecutions[?status!='Completed'].{id:elementId,status:status},globals:variables.globals}" \
|
|
135
|
-
--output json )
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
This loop has exactly one emitted artifact:
|
|
139
|
-
`<Solution>/<Name>/<Name>.flow`. Never emit a second root-level `<Name>.flow`;
|
|
140
|
-
validators and evidence collectors cannot choose safely between duplicates.
|
|
141
|
-
Re-run the whole sequence after the final source or binding edit.
|
|
142
|
-
|
|
143
|
-
## Product validation and conditional bindings
|
|
144
|
-
|
|
145
|
-
### Reading product validation
|
|
146
|
-
|
|
147
|
-
The JSON envelope has top-level `Result`; a successful validation also reports
|
|
148
|
-
`Data.Status: "Valid"` and may carry `Data.Warnings`. Treat warnings as failures
|
|
149
|
-
except for the reviewed shared-connection advisory. Preserve any exception's
|
|
150
|
-
exact code/text and rationale instead of broadening an allowlist.
|
|
151
|
-
|
|
152
|
-
### Bounded completion
|
|
153
|
-
|
|
154
|
-
Match the final evidence to the stated acceptance bar after the last edit:
|
|
155
|
-
|
|
156
|
-
- For a validate-only bar, `Data.Status: "Valid"` plus the required structural
|
|
157
|
-
self-check is completion. Stop there; do not run debug only for confidence.
|
|
158
|
-
- For each distinct behavior claim named by the bar, plan at most one bounded
|
|
159
|
-
debug with the inputs and attachments that exercise it. One run may cover
|
|
160
|
-
compatible claims; do not repeat equivalent inputs.
|
|
161
|
-
- If one unknown still blocks the final wiring, run one bounded experiment that
|
|
162
|
-
distinguishes the choices, apply its answer, and return to the final
|
|
163
|
-
emit/validate pass. Do not create a scratch-solution family.
|
|
164
|
-
|
|
165
|
-
If the requested evidence cannot be obtained inside that bound, report the
|
|
166
|
-
evidence boundary instead of replacing it with repeated debug launches.
|
|
167
|
-
|
|
168
|
-
### Managed HTTP: authored connection bindings
|
|
169
|
-
|
|
170
|
-
`http({ managed: true, ... })` needs real connection and folder bindings for
|
|
171
|
-
connector-authenticated product debug. Select an enabled HTTP connection:
|
|
172
|
-
|
|
173
|
-
```bash
|
|
174
|
-
uip is connections list --all-folders \
|
|
175
|
-
--output-filter "[?ConnectorKey=='uipath-uipath-http'].{Id:Id,FolderKey:FolderKey,Name:Name}"
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
Declare symbolic entries in `bindings.json`, then pass both names to the node:
|
|
179
|
-
|
|
180
|
-
```ts
|
|
181
|
-
http({ managed: true, method: 'GET', url: '/me',
|
|
182
|
-
connection: 'spotifyHttp', folder: 'shared' })
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
Compilation resolves those names and writes both the connector-authenticated
|
|
186
|
-
node detail and the required product bindings into the emitted `.flow`. Do not
|
|
187
|
-
patch them into the artifact after emission; that edit would be lost on the next
|
|
188
|
-
compile. Omit both options only when manual/implicit authentication is intended.
|
|
189
|
-
|
|
190
|
-
## Refresh, debug, and preserve evidence
|
|
191
|
-
|
|
192
|
-
`flow debug` takes the project directory, not the `.flow` file, and resource
|
|
193
|
-
refresh must run first. From the solution directory, `<Name>` names that project.
|
|
194
|
-
These are the common flags; use only the ones the behavior claim needs:
|
|
195
|
-
|
|
196
|
-
| Need | Exact form |
|
|
197
|
-
|---|---|
|
|
198
|
-
| JSON inputs | `-i '{"name":"value"}'` or `--inputs @inputs.json` |
|
|
199
|
-
| File input | `--attachment <input-name>=<path>`; repeat for multiple files |
|
|
200
|
-
| Folder | one of `--folder-id`, `--folder-key`, or `--folder-path`; omit to auto-detect |
|
|
201
|
-
| Poll bound | `--timeout <seconds> --poll-interval <milliseconds>`; keep the stated task bound |
|
|
202
|
-
| Compact read-back | `--output-filter "<JMESPath>" --output json` |
|
|
203
|
-
| Quiet logs | `--log-level error`, or `--log-file <path>` to move them off the stream entirely |
|
|
204
|
-
|
|
205
|
-
### `--output-filter` is JMESPath, and three things about it are worth knowing
|
|
206
|
-
|
|
207
|
-
**A string literal is `'single-quoted'`, not `` `backticked` ``.** Backticks
|
|
208
|
-
delimit a JSON literal, so `` `Completed` `` is a syntax error — bare words are
|
|
209
|
-
not JSON. Both forms below work; prefer the first, because its failure is loud.
|
|
210
|
-
Wrap the whole expression in DOUBLE quotes so the inner `'…'` survives the shell:
|
|
211
|
-
|
|
212
|
-
```bash
|
|
213
|
-
--output-filter "elementExecutions[?status!='Completed']" # raw string literal
|
|
214
|
-
--output-filter 'elementExecutions[?status!=`"Completed"`]' # JSON literal
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
**The projection selects from `Data`, not from the envelope.** `Result` and
|
|
218
|
-
`Code` stay at the top level and are still printed, so a filter naming
|
|
219
|
-
`finalStatus` reads `Data.finalStatus`.
|
|
220
|
-
|
|
221
|
-
**Filter, do not post-process.** `--output-filter` is cheaper and less brittle
|
|
222
|
-
than piping the whole envelope through `jq`, and much cheaper than hunting for
|
|
223
|
-
the JSON inside interleaved log lines. If a filter is rejected, fix the
|
|
224
|
-
expression rather than falling back to `--output json | jq` — a rejected filter
|
|
225
|
-
exits non-zero with the parse error, so the fix is usually one edit.
|
|
226
|
-
|
|
227
|
-
### Ready-made projections — copy one, do not compose your own
|
|
228
|
-
|
|
229
|
-
These are verified against a real `flow debug` envelope. Pick the narrowest one
|
|
230
|
-
that answers the claim; composing a projection from scratch is what turns a
|
|
231
|
-
read-back into seven tool calls.
|
|
232
|
-
|
|
233
|
-
```bash
|
|
234
|
-
# Did it finish? The cheapest possible check.
|
|
235
|
-
--output-filter "{status:finalStatus,instance:instanceId}"
|
|
236
|
-
|
|
237
|
-
# The standard read-back: status, where to look, what did NOT complete, all globals.
|
|
238
|
-
--output-filter "{status:finalStatus,instance:instanceId,url:studioWebUrl,\
|
|
239
|
-
failed:elementExecutions[?status!='Completed'].{id:elementId,status:status},\
|
|
240
|
-
globals:variables.globals}"
|
|
241
|
-
|
|
242
|
-
# Just the values the flow produced.
|
|
243
|
-
--output-filter "variables.globals"
|
|
244
|
-
|
|
245
|
-
# Every element's status, when you need the path the run actually took.
|
|
246
|
-
--output-filter "elementExecutions[].{id:elementId,status:status}"
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
**`variables.globals` is a FLAT map, and its keys contain dots.** A step output is
|
|
250
|
-
`"<step>.output.<field>"`, alongside the bare name of every declared global:
|
|
251
|
-
|
|
252
|
-
```jsonc
|
|
253
|
-
{ "product": 42, "start.output.a": 6, "multiply.output": 42, "multiply.error": null }
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
So a bare global reads as `variables.globals.product`, and a dotted key needs
|
|
257
|
-
quoting — which flips the shell quoting, because the expression now contains
|
|
258
|
-
double quotes instead of single ones:
|
|
259
|
-
|
|
260
|
-
```bash
|
|
261
|
-
--output-filter '{status:finalStatus,raw:variables.globals."multiply.output"}'
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
**There is no `incidents` in this envelope.** `Data` carries exactly
|
|
265
|
-
`finalStatus`, `instanceId`, `studioWebUrl`, `jobKey`, `runId`, `folderKey`,
|
|
266
|
-
`solutionId`, `variables` and `elementExecutions` — an `incidents:incidents`
|
|
267
|
-
projection silently yields `null`. Incidents come from the separate
|
|
268
|
-
`debug-instance incidents` call below, keyed by the `instanceId` you just read.
|
|
269
|
-
|
|
270
|
-
For example, a direct-input claim can keep the useful status, outputs, and
|
|
271
|
-
diagnostics in one read-back instead of printing the full execution envelope:
|
|
272
|
-
|
|
273
|
-
```bash
|
|
274
|
-
( cd <Solution> && uip solution resources refresh --solution-folder . --output json )
|
|
275
|
-
( cd <Solution> && uip maestro flow debug <Name> --log-level error \
|
|
276
|
-
--inputs @inputs.json \
|
|
277
|
-
--output-filter "{status:finalStatus,instance:instanceId,url:studioWebUrl,failed:elementExecutions[?status!='Completed'].{id:elementId,status:status},globals:variables.globals}" \
|
|
278
|
-
--output json )
|
|
279
|
-
```
|
|
280
|
-
|
|
281
|
-
The top-level envelope still carries `Result`; the projection above selects
|
|
282
|
-
from `Data`. Read and retain `Result`, the projected status/instance/URL, the
|
|
283
|
-
`failed` element executions, and the globals the claim needs.
|
|
284
|
-
`Completed` with the expected globals and an empty `failed` is evidence for the
|
|
285
|
-
product-runtime path; a bare process exit code is not. Omit the filter only when
|
|
286
|
-
diagnosing a field the projection did not retain.
|
|
287
|
-
|
|
288
|
-
Incidents are **not** in this envelope — fetch them by the `instance` you just
|
|
289
|
-
read, and only when something actually failed.
|
|
290
|
-
|
|
291
|
-
For a fault, query the backend incident payload with the returned instance id:
|
|
292
|
-
|
|
293
|
-
```bash
|
|
294
|
-
uip maestro flow debug-instance incidents <instanceId> \
|
|
295
|
-
--output-filter "[*].{E:ElementId,C:ErrorCode,M:ErrorMessage,D:ErrorDetails}"
|
|
296
|
-
```
|
|
297
|
-
|
|
298
|
-
`ErrorDetails` commonly contains the service response or unresolved-resource
|
|
299
|
-
value that the summary message omits.
|
|
300
|
-
|
|
301
|
-
## CLI output conventions
|
|
302
|
-
|
|
303
|
-
Use `--output json`, not `--format json`. Use `--output-filter '<JMESPath>'` to
|
|
304
|
-
select fields from `Data`. Some successful commands print update/progress text
|
|
305
|
-
to stderr, so judge success from the structured `Result`, status, outputs, and
|
|
306
|
-
incidents rather than from the presence of stderr.
|
|
307
|
-
|
|
308
|
-
Product debug creates real side effects. Use sandbox resources and serialize
|
|
309
|
-
runs that share queues, issues, mailboxes, or other mutable tenant state.
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
# Agent resource families
|
|
2
|
-
|
|
3
|
-
*Exact signatures, fields, and defaults: `inlineAgent()`. Prompting, inputs and the sidecar: [inline-agent.md](inline-agent.md).*
|
|
4
|
-
|
|
5
|
-
An inline agent's capabilities are ARTIFACT nodes hanging off its own handles — tools on `tool`, a context index on `context`, an escalation on `escalation`, a memory on `memory` — not steps in the control flow.
|
|
6
|
-
Each is authored as an entry on `inlineAgent`, and the compiler emits the node and the edge.
|
|
7
|
-
Context index: [inline-agent.md](inline-agent.md#context-grounding).
|
|
8
|
-
|
|
9
|
-
```ts
|
|
10
|
-
.step('triage', inlineAgent({
|
|
11
|
-
model: 'gpt-5.4', systemPrompt: '…', userPrompt: '…',
|
|
12
|
-
tools: [
|
|
13
|
-
{ kind: 'mcp', name: 'Ticket MCP', key: '<guid>', slug: 'ticket-mcp', folderPath: 'Shared' },
|
|
14
|
-
{ kind: 'a2a', name: 'Research Agent', key: '<guid>', slug: 'research-agent' },
|
|
15
|
-
{ kind: 'clientside', name: 'pickFile', inputs: { prompt: 'string' }, returns: { path: 'string' } },
|
|
16
|
-
{ kind: 'httpRequest', url: 'https://api.example.test/items', method: 'GET' },
|
|
17
|
-
{ kind: 'function', key: '<guid>', name: 'acme-echo', folderPath: 'Shared/acme-echo' },
|
|
18
|
-
],
|
|
19
|
-
memory: { name: 'Support History', id: '<guid>' },
|
|
20
|
-
escalation: [{ variant: 'quick-form', name: 'Confirm', outcomes: ['Approve', 'Reject'],
|
|
21
|
-
fields: [{ id: 'approved', type: 'boolean', direction: 'output' }] }],
|
|
22
|
-
}))
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Tool kinds
|
|
26
|
-
|
|
27
|
-
| Kind | What it is | Identity you must supply |
|
|
28
|
-
| --- | --- | --- |
|
|
29
|
-
| `builtin` | A platform tool (`summarize`, `analyzefiles`, `batchtransform`) | the tool name |
|
|
30
|
-
| `connector` | An Integration Service operation | `connector` + `operation` (needs a library), plus `connection` + `folder` (`bindings.json` labels) — see [inline-agent.md](inline-agent.md#tools) |
|
|
31
|
-
| `process` / `api` / `flow` / `maestro` / `agent` / `function` | A deployed resource | `key` (GUID) + `name` + `folderPath` |
|
|
32
|
-
| `ixp` | A published IxP project | `projectId` + `name` |
|
|
33
|
-
| `mcp` | An MCP server's tools | `name` + `key`; `slug` is what the runtime resolves |
|
|
34
|
-
| `a2a` | A remote agent to delegate to | `name` + `key` + `slug` (required) |
|
|
35
|
-
| `clientside` | The CALLING application runs it | `name`, plus the `inputs`/`returns` contract |
|
|
36
|
-
| `httpRequest` | The built-in HTTP tool | nothing — see below |
|
|
37
|
-
|
|
38
|
-
For `mcp`, `a2a`, `memory` and the per-instance resource kinds, the node TYPE is
|
|
39
|
-
minted from the identity you give (`…tool.mcp.<name-slug>.<key-slug>`), so a
|
|
40
|
-
wrong key emits a node the tenant cannot resolve. Read them from the tenant.
|
|
41
|
-
|
|
42
|
-
**The HTTP tool's fields are three-way.** Each of `url`, `method`, `headers`,
|
|
43
|
-
`params`, `body`, `timeout` is either FIXED (give it a value) or left for the
|
|
44
|
-
MODEL to fill at call time (omit it, which keeps the definition's prompt-mode
|
|
45
|
-
default and its field description). Fixing everything defeats the point of
|
|
46
|
-
giving an agent a tool; fixing nothing gives the model no constraints. Fix what
|
|
47
|
-
the scenario pins and leave the rest.
|
|
48
|
-
|
|
49
|
-
**A client-side tool declares only a CONTRACT.** The flow says what the tool is
|
|
50
|
-
called and what it takes and returns; the calling application owns the
|
|
51
|
-
implementation and dispatches on the name. Nothing local runs it.
|
|
52
|
-
|
|
53
|
-
## Escalation
|
|
54
|
-
|
|
55
|
-
The default variant is app-backed: `app: { key, name, folderPath }` names a
|
|
56
|
-
deployed Action Center app that owns the form. `variant: 'quick-form'` puts the
|
|
57
|
-
form INLINE instead — `fields` (the same rows a human task takes) and no `app`.
|
|
58
|
-
`check` refuses the two mixed, in either direction.
|
|
59
|
-
|
|
60
|
-
## Memory
|
|
61
|
-
|
|
62
|
-
`memory: { name, id }` attaches an episodic memory so the agent learns from past
|
|
63
|
-
runs, with optional retrieval tuning (`dynamicFewShotLearning`,
|
|
64
|
-
`semanticSimilarity`, `kValue`, `searchMode`). Naming one selects the agent's
|
|
65
|
-
**1.4** definition — the version that declares the `memory` handle. Omitting it
|
|
66
|
-
leaves the agent on 1.2 exactly as before.
|
|
67
|
-
|
|
68
|
-
## Evidence boundary
|
|
69
|
-
|
|
70
|
-
Every resource here is tenant data, runtime behaviour, or both: no local rung
|
|
71
|
-
calls an MCP server, delegates to a remote agent, retrieves a memory, or asks a
|
|
72
|
-
client application to run a tool. Offline `validate` proves the minted node
|
|
73
|
-
types, the wiring to the right handle, and the declared contracts. Whether the
|
|
74
|
-
resources exist and what they return is platform evidence.
|