Skip to content

Commit 807b041

Browse files
authored
chore: add studio web docs and fix uipath push (#1475)
1 parent 8f22003 commit 807b041

12 files changed

Lines changed: 257 additions & 9 deletions
121 KB
Loading
139 KB
Loading
61.9 KB
Loading
62.2 KB
Loading
33.8 KB
Loading
35.7 KB
Loading
Lines changed: 244 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,244 @@
1+
# Studio Web Integration
2+
3+
[Studio Web](https://docs.uipath.com/studio-web/automation-cloud/latest/user-guide/overview) is a cloud IDE for building projects such as RPAs, low code agents, and API workflows. It also supports importing coded agents built locally. Bringing your coded agent into Studio Web gives you:
4+
5+
- Cloud debugging with dynamic breakpoints
6+
- Running and defining evaluations directly in the cloud
7+
- A unified build experience alongside multiple project types
8+
- Self contained solution deployment units
9+
10+
<picture data-light="../assets/studio_web_diagram_light.png" data-dark="../assets/studio_web_diagram_dark.png">
11+
<source
12+
media="(prefers-color-scheme: dark)"
13+
srcset="
14+
../assets/studio_web_diagram_dark.png
15+
"
16+
/>
17+
<img
18+
src="../assets/studio_web_diagram_light.png"
19+
alt="Coded agent in Studio Web"
20+
/>
21+
</picture>
22+
23+
There are two ways to connect a coded agent to Studio Web: using a [Cloud Workspace](#cloud-workspace) or a [Local Workspace](#local-workspace).
24+
25+
---
26+
27+
## Cloud Workspace
28+
29+
In a Cloud Workspace, your project lives in Studio Web and you sync code between your local IDE and the cloud.
30+
31+
### Importing a Coded Agent
32+
33+
1. Open your solution in Studio Web
34+
2. Create a new Agent and select **Coded**
35+
36+
<picture data-light="../assets/studio_web_select_coded_light.png" data-dark="../assets/studio_web_select_coded_dark.png">
37+
<source
38+
media="(prefers-color-scheme: dark)"
39+
srcset="
40+
../assets/studio_web_select_coded_dark.png
41+
"
42+
/>
43+
<img
44+
src="../assets/studio_web_select_coded_light.png"
45+
/>
46+
</picture>
47+
48+
3. Choose a sample project to start from, or push an existing local agent
49+
50+
### Pushing an Existing Agent
51+
52+
If you already have a coded agent locally, you can sync it to Studio Web:
53+
54+
1. Copy the `UIPATH_PROJECT_ID` from Studio Web into your `.env` file
55+
56+
<picture data-light="../assets/studio_web_sync_from_ide_light.png" data-dark="../assets/studio_web_sync_from_ide_dark.png">
57+
<source
58+
media="(prefers-color-scheme: dark)"
59+
srcset="
60+
../assets/studio_web_sync_from_ide_dark.png
61+
"
62+
/>
63+
<img
64+
src="../assets/studio_web_sync_from_ide_light.png"
65+
/>
66+
</picture>
67+
68+
2. Push your project:
69+
70+
<!-- termynal -->
71+
```shell
72+
> uipath push
73+
Pushing UiPath project to Studio Web...
74+
Uploading 'main.py'
75+
Uploading 'uipath.json'
76+
Updating 'pyproject.toml'
77+
Uploading '.uipath/studio_metadata.json'
78+
Importing referenced resources to Studio Web project...
79+
🔵 Resource import summary: 3 total resources - 1 created, 1 updated, 1 unchanged, 0 not found
80+
```
81+
82+
Notice the **Resource import summary** at the end. The push command also imports resources defined in `bindings.json` into the Studio Web solution, just like importing resources for a low code agent. This ensures that all required resources are packaged with the solution, so the coded agent works anywhere the solution is deployed.
83+
84+
See [`uipath push`](../cli/index.md) in the CLI Reference.
85+
86+
### Pulling Changes
87+
88+
To pull the latest version from Studio Web to your local environment:
89+
90+
<!-- termynal -->
91+
```shell
92+
> uipath pull
93+
Pulling UiPath project from Studio Web...
94+
Processing: main.py
95+
File 'main.py' is up to date
96+
Processing: uipath.json
97+
File 'uipath.json' is up to date
98+
Processing: bindings.json
99+
File 'bindings.json' is up to date
100+
Processing: evaluations\eval-sets\evaluation-set-default.json
101+
Downloaded 'evaluations\eval-sets\evaluation-set-default.json'
102+
Processing: evaluations\evaluators\evaluator-default.json
103+
Downloaded 'evaluations\evaluators\evaluator-default.json'
104+
✓ Project pulled successfully
105+
```
106+
107+
See [`uipath pull`](../cli/index.md) in the CLI Reference.
108+
109+
---
110+
111+
## Local Workspace
112+
113+
!!! warning "Preview Feature"
114+
The local workspace integration is currently experimental.
115+
Behavior is subject to change in future versions.
116+
117+
In a Local Workspace, your project lives on your machine and is linked to a Studio Web solution. See the [Local Workspace documentation](https://docs.uipath.com/studio-web/automation-cloud/latest/user-guide/solutions-in-the-local-workspace) for setup details.
118+
119+
You can either start from a predefined template in Studio Web or set up a new agent from scratch.
120+
121+
### Starting from a Template
122+
123+
When creating a new Coded agent in Studio Web with a Local Workspace, you can pick one of the predefined templates. This creates the project files directly on your machine. Templates come with sample code and predefined evaluations you can run immediately.
124+
125+
### Setting Up a New Agent
126+
127+
You can also create a coded agent from scratch in your local IDE and have it appear in Studio Web.
128+
129+
First, install the SDK package for the framework you want to use:
130+
131+
//// tab | uv
132+
133+
<!-- termynal -->
134+
```shell
135+
# Pick the package that matches your framework:
136+
# uipath-langchain - LangChain / LangGraph
137+
# uipath-openai-agents - OpenAI Agents SDK
138+
# uipath-llamaindex - LlamaIndex
139+
# uipath-pydantic-ai - PydanticAI
140+
# uipath-google-adk - Google ADK
141+
# uipath-agent-framework - UiPath Agent Framework
142+
> uv add uipath-langchain
143+
Resolved 42 packages in 1.2s
144+
Installed 42 packages in 0.8s
145+
```
146+
147+
////
148+
149+
//// tab | pip
150+
151+
<!-- termynal -->
152+
```shell
153+
# Pick the package that matches your framework:
154+
# uipath-langchain - LangChain / LangGraph
155+
# uipath-openai-agents - OpenAI Agents SDK
156+
# uipath-llamaindex - LlamaIndex
157+
# uipath-pydantic-ai - PydanticAI
158+
# uipath-google-adk - Google ADK
159+
# uipath-agent-framework - UiPath Agent Framework
160+
> pip install uipath-langchain
161+
Successfully installed uipath-langchain
162+
```
163+
164+
////
165+
166+
Then authenticate, scaffold the agent, and initialize the project:
167+
168+
<!-- termynal -->
169+
```shell
170+
> uipath auth
171+
⠋ Authenticating with UiPath ...
172+
🔗 If a browser window did not open, please open the following URL in your browser: [LINK]
173+
👇 Select tenant:
174+
0: Tenant1
175+
1: Tenant2
176+
Select tenant number: 0
177+
Selected tenant: Tenant1
178+
✓ Authentication successful.
179+
180+
> uipath new agent
181+
✓ Created new agent project.
182+
183+
> uipath init
184+
⠋ Initializing UiPath project ...
185+
✓ Created 'entry-points.json' file.
186+
```
187+
188+
That's it, your agent should now be visible in Studio Web.
189+
190+
---
191+
192+
## Publishing
193+
194+
Once your coded agent is in Studio Web, publishing works the same as any other project. Click **Publish** in Studio Web and it will be packaged and deployed through the standard workflow.
195+
196+
---
197+
198+
## Running and Debugging
199+
200+
Your agent can be run both in the cloud (via Studio Web) and locally using the CLI.
201+
202+
### Running Locally
203+
204+
<!-- termynal -->
205+
```shell
206+
> uipath run agent '{"message": "hello"}'
207+
```
208+
209+
See [`uipath run`](../cli/index.md) in the CLI Reference.
210+
211+
### Debugging Locally
212+
213+
Use `uipath debug` for an enhanced local debugging experience. Unlike `uipath run`, the debug command:
214+
215+
- Auto polls for trigger responses when the agent suspends (e.g., LangGraph interrupts)
216+
- Fetches binding overwrites from Studio Web (configurable in **Debug > Debug Configuration > Solution resources**)
217+
218+
<!-- termynal -->
219+
```shell
220+
> uipath debug agent '{"message": "hello"}'
221+
```
222+
223+
See [`uipath debug`](../cli/index.md) in the CLI Reference.
224+
225+
### Evaluating Locally
226+
227+
Run evaluations against your agent using the CLI:
228+
229+
<!-- termynal -->
230+
```shell
231+
> uipath eval agent .\evaluations\eval-sets\faithfulness-multi-model.json
232+
```
233+
234+
See [`uipath eval`](../cli/index.md) in the CLI Reference and the [Evaluations documentation](../eval/index.md).
235+
236+
---
237+
238+
## Syncing Evaluations
239+
240+
Evaluations can be defined either in Studio Web or locally. They sync automatically when you use `uipath pull` and `uipath push`.
241+
242+
/// note
243+
Custom evaluators must be created locally. See [Custom Evaluators](../eval/custom_evaluators.md) for details.
244+
///

packages/uipath/mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ nav:
6060
- Environment Variables: core/environment_variables.md
6161
- CLI Reference: cli/index.md
6262
- Tracing: core/traced.md
63+
- Studio Web Integration: core/studio_web.md
6364
- Services:
6465
- Assets: core/assets.md
6566
- Attachments: core/attachments.md

packages/uipath/pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "uipath"
3-
version = "2.10.24"
3+
version = "2.10.25"
44
description = "Python SDK and CLI for UiPath Platform, enabling programmatic interaction with automation services, process management, and deployment tools."
55
readme = { file = "README.md", content-type = "text/markdown" }
66
requires-python = ">=3.11"

packages/uipath/src/uipath/_cli/_utils/_common.py

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,14 @@ async def may_override_files(
173173

174174
local_version_display = local_code_version if local_code_version else "Not Set"
175175

176-
try:
177-
push_date = datetime.fromisoformat(remote_metadata.last_push_date)
178-
formatted_date = push_date.strftime("%b %d, %Y at %I:%M %p UTC")
179-
except (ValueError, TypeError):
180-
formatted_date = remote_metadata.last_push_date
176+
if not remote_metadata.last_push_date:
177+
formatted_date = "unknown"
178+
else:
179+
try:
180+
push_date = datetime.fromisoformat(remote_metadata.last_push_date)
181+
formatted_date = push_date.strftime("%b %d, %Y at %I:%M %p UTC")
182+
except (ValueError, TypeError):
183+
formatted_date = remote_metadata.last_push_date
181184

182185
console = ConsoleLogger()
183186
console.warning("Your local version is behind the remote version.")

0 commit comments

Comments
 (0)