Skip to content

Commit 349d792

Browse files
cosmin-staicuclauderadu-mocanu
authored
feat(uipath-agents): generate SubType metadata for bindings.json (#379)
* feat(uipath-agents): generate SubType metadata for bindings.json Align the bindings-reference with uipath-python PR #1584, which adds virtual-resource fallback to `uipath push` and reads `SubType` from binding metadata to create the right kind of placeholder. - Emit `SubType: "credentialAsset"` for `retrieve_credential*` calls - Add lookup procedure against Resource Builder metadata (live endpoint + bundled `assets/solutions/metadata.json` snapshot fallback) - Add code-based asset sub-type heuristics (type annotations, usage patterns, sensitive variable names) with AskUserQuestion fallback - Document which kinds support virtual-resource fallback on push vs which hard-fail (connection, mcpServer, index) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(uipath-agents): address PR #379 review — trim metadata.json, dedup SubType, add test - Trim assets/solutions/metadata.json (10,952 → 199 lines): the agent only consumes {kind, type} from each entry; the embedded versions[] blobs (with full entity schema defaultValues) were dead weight. Wrap in {_snapshotDate, _source, _note, entries[]} so staleness is auditable. Add a refresh recipe in bindings-reference.md. - Collapse Step 2 SubType duplication in bindings-reference.md: the block at lines 51-66 inlined the full lookup procedure that already lives in the SubType Metadata section. Replace with a bridge that keeps only the retrieve_credential* shortcut inline. - Replace alpha.uipath.com example URL with cloud.uipath.com — alpha is an env-specific UiPath internal domain. - Shorten line 98 schema-rule SubType note to a pointer; it had been near-verbatim of the Implications-for-binding-generation section. - Add tests/tasks/uipath-agents/subtype_credential_asset/: agent authors a minimal coded-agent layout with retrieve_credential_async and runs the bindings sync; check verifies metadata.SubType == "credentialAsset" on the emitted binding. - Add "bindings" to SKILL.md description so the skill triggers on bindings-related requests. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: radu-mocanu <radu.mocanu@uipath.com>
1 parent b333b91 commit 349d792

5 files changed

Lines changed: 596 additions & 13 deletions

File tree

skills/uipath-agents/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
name: uipath-agents
3-
description: "UiPath agent lifecycle — coded (Python: LangGraph/LlamaIndex/OpenAI Agents) and low-code (agent.json from Agent Builder). Setup, auth, build, run, evaluate, deploy, sync. For C# or XAML workflows→uipath-rpa."
3+
description: "UiPath agent lifecycle — coded (Python: LangGraph/LlamaIndex/OpenAI Agents) and low-code (agent.json from Agent Builder). Setup, auth, build, run, evaluate, deploy, sync, bindings. For C# or XAML workflows→uipath-rpa."
44
allowed-tools: Bash, Read, Write, Glob, Grep, AskUserQuestion
55
user-invocable: true
66
---
Lines changed: 199 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,199 @@
1+
{
2+
"_snapshotDate": "2026-04-24",
3+
"_source": "https://<BASE_URL>/<ORG_ID>/studio_/backend/api/resourcebuilder/metadata",
4+
"_note": "Trimmed projection: agents only consume {kind, type} for SubType lookup. See bindings-reference.md → SubType Metadata for the refresh recipe.",
5+
"entries": [
6+
{
7+
"kind": "taskCatalog",
8+
"type": null
9+
},
10+
{
11+
"kind": "mcpServer",
12+
"type": "Coded"
13+
},
14+
{
15+
"kind": "mcpServer",
16+
"type": "Command"
17+
},
18+
{
19+
"kind": "mcpServer",
20+
"type": "Remote"
21+
},
22+
{
23+
"kind": "mcpServer",
24+
"type": "UiPath"
25+
},
26+
{
27+
"kind": "remoteA2aAgent",
28+
"type": "RemoteA2aAgent"
29+
},
30+
{
31+
"kind": "app",
32+
"type": null
33+
},
34+
{
35+
"kind": "app",
36+
"type": "Coded"
37+
},
38+
{
39+
"kind": "app",
40+
"type": "CodedAction"
41+
},
42+
{
43+
"kind": "appVersion",
44+
"type": null
45+
},
46+
{
47+
"kind": "connection",
48+
"type": null
49+
},
50+
{
51+
"kind": "connector",
52+
"type": null
53+
},
54+
{
55+
"kind": "choiceSet",
56+
"type": null
57+
},
58+
{
59+
"kind": "entity",
60+
"type": null
61+
},
62+
{
63+
"kind": "entity",
64+
"type": "caseCommentEntity"
65+
},
66+
{
67+
"kind": "entity",
68+
"type": "caseDocumentEntity"
69+
},
70+
{
71+
"kind": "entity",
72+
"type": "caseMainEntity"
73+
},
74+
{
75+
"kind": "entity",
76+
"type": "nativeEntity"
77+
},
78+
{
79+
"kind": "index",
80+
"type": null
81+
},
82+
{
83+
"kind": "memorySpace",
84+
"type": null
85+
},
86+
{
87+
"kind": "asset",
88+
"type": "stringAsset"
89+
},
90+
{
91+
"kind": "asset",
92+
"type": "integerAsset"
93+
},
94+
{
95+
"kind": "asset",
96+
"type": "booleanAsset"
97+
},
98+
{
99+
"kind": "asset",
100+
"type": "credentialAsset"
101+
},
102+
{
103+
"kind": "asset",
104+
"type": "secretAsset"
105+
},
106+
{
107+
"kind": "bucket",
108+
"type": "orchestratorBucket"
109+
},
110+
{
111+
"kind": "bucket",
112+
"type": "amazonBucket"
113+
},
114+
{
115+
"kind": "bucket",
116+
"type": "azureBucket"
117+
},
118+
{
119+
"kind": "businessRule",
120+
"type": null
121+
},
122+
{
123+
"kind": "calendar",
124+
"type": null
125+
},
126+
{
127+
"kind": "credentialStore",
128+
"type": null
129+
},
130+
{
131+
"kind": "library",
132+
"type": null
133+
},
134+
{
135+
"kind": "package",
136+
"type": null
137+
},
138+
{
139+
"kind": "process",
140+
"type": null
141+
},
142+
{
143+
"kind": "process",
144+
"type": "agent"
145+
},
146+
{
147+
"kind": "process",
148+
"type": "api"
149+
},
150+
{
151+
"kind": "process",
152+
"type": "caseManagement"
153+
},
154+
{
155+
"kind": "process",
156+
"type": "flow"
157+
},
158+
{
159+
"kind": "process",
160+
"type": "mcpServer"
161+
},
162+
{
163+
"kind": "process",
164+
"type": "process"
165+
},
166+
{
167+
"kind": "process",
168+
"type": "processOrchestration"
169+
},
170+
{
171+
"kind": "process",
172+
"type": "testAutomationProcess"
173+
},
174+
{
175+
"kind": "process",
176+
"type": "webApp"
177+
},
178+
{
179+
"kind": "queue",
180+
"type": null
181+
},
182+
{
183+
"kind": "trigger",
184+
"type": "connectedEventTrigger"
185+
},
186+
{
187+
"kind": "trigger",
188+
"type": "queueTrigger"
189+
},
190+
{
191+
"kind": "trigger",
192+
"type": "timeTrigger"
193+
},
194+
{
195+
"kind": "webhook",
196+
"type": null
197+
}
198+
]
199+
}

0 commit comments

Comments
 (0)