Skip to content

docs(studio-web): document coded function integration [PRODEV-605]#1675

Open
alexandra-c wants to merge 2 commits into
mainfrom
feat/coded-function-docs
Open

docs(studio-web): document coded function integration [PRODEV-605]#1675
alexandra-c wants to merge 2 commits into
mainfrom
feat/coded-function-docs

Conversation

@alexandra-c
Copy link
Copy Markdown

@alexandra-c alexandra-c commented May 22, 2026

Extend the Studio Web integration guide to cover coded functions alongside coded agents

PRODEV-605

Copilot AI review requested due to automatic review settings May 22, 2026 09:39
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Extends the Studio Web integration documentation to include coded functions alongside coded agents, updating setup, sync, and CLI usage guidance so users can follow a single guide for both project types.

Changes:

  • Updates the intro and Cloud Workspace flow to cover importing/pushing coded functions as well as coded agents.
  • Expands Local Workspace setup with a dedicated Coded Function scaffold path.
  • Adds agent/function tabbed examples for uipath run and uipath debug, plus new notes around evaluations.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/uipath/docs/core/studio_web.md Outdated
Comment thread packages/uipath/docs/core/studio_web.md
Comment thread packages/uipath/docs/core/studio_web.md
Comment thread packages/uipath/docs/core/studio_web.md
@alexandra-c alexandra-c changed the title docs(studio-web): document coded function integration docs(studio-web): document coded function integration [PRODEV-605] May 22, 2026
@alexandra-c alexandra-c force-pushed the feat/coded-function-docs branch from d33e6df to ee52f4e Compare May 22, 2026 10:03
@alexandra-c alexandra-c requested a review from radu-mocanu May 22, 2026 10:04
@AlexBizon AlexBizon requested a review from EusebiuJecan07 May 27, 2026 15:37
@@ -1,5 +1,7 @@
# CLI Reference

The following commands apply to both **coded functions** and **coded agents**. The entry point name (`main`, `agent`, or any key you define in `uipath.json`) is the first argument to `run`, `debug`, `eval`, and `invoke`.
Copy link
Copy Markdown
Collaborator

@radu-mocanu radu-mocanu May 29, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

uipath.json is the main manifest only for coded functions.
for coded agents each integration has its specific manifest where entrypoints are defined.
ex
uipath-langchain -> langgraph.json
uipath-llamaindex -> llamaindex.json
uipath-openai -> openai_agents.json

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated. The intro now clarifies the entry point is the uipath.json key for functions and the framework manifest for agents, with examples:

for a coded agent it is the entry point declared in the framework manifest — langgraph.json (uipath-langchain), llama_index.json (uipath-llamaindex), or openai_agents.json (uipath-openai-agents)

/// tab | Bash/ZSH
```console
uipath run agent '{"topic": "UiPath"}'
uipath run main '{"message": "hello"}'
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

main is too specific for functions IMO.

Suggested change
uipath run main '{"message": "hello"}'
uipath run <entrypoint> '{"message": "hello"}'

we can have an info box where we give some examples if this is not clear enough. like
uipath run agent / uipath run function

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done — the shell tabs now use uipath run <entrypoint> ..., and I added an info box with examples:

uipath run agent '{"message": "hello"}'   # coded agent
uipath run main '{"message": "hello"}'    # coded function

@@ -0,0 +1,245 @@
# Python Coded Agents

A coded agent is Python code that uses an LLM reasoning loop to make decisions, call tools, and produce a result. You write the agent logic using a framework of your choice — the `uipath` SDK provides the platform layer: authentication, assets, buckets, connections, tracing, and human-in-the-loop. Package it with the CLI and deploy it as an Orchestrator job.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

one or more LLMs*

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You write the agent logic using a framework of your choice -> I would mention somewhere around here our curated integrations. uipath-langchain (recommended) or one from uipath-integrations with repo links

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

authentication, assets, buckets, connections, tracing, and human-in-the-loop. -> this is not a comprehensive list as it currently sounds like. I would also mention guardrails, AI Trust Layer here

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed: now reads "uses one or more LLMs in a reasoning loop".

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added — the intro now calls out our curated integrations: uipath-langchain (recommended) plus the uipath-integrations repo, both linked.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added guardrails and AI Trust Layer, and ended the list with "and more" so it no longer reads as exhaustive.


A coded agent is Python code that uses an LLM reasoning loop to make decisions, call tools, and produce a result. You write the agent logic using a framework of your choice — the `uipath` SDK provides the platform layer: authentication, assets, buckets, connections, tracing, and human-in-the-loop. Package it with the CLI and deploy it as an Orchestrator job.

Use a coded agent when your automation needs multi-step reasoning, dynamic tool selection, or LLM-driven decisions. Use a [coded function](./functions.md) when your logic is deterministic and no LLM is required.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would remove the automation part here

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed — now reads "Use a coded agent when your logic needs multi-step reasoning...".


| Layer | Package | Responsibility |
|-------|---------|---------------|
| **Platform** | `uipath` | Auth, assets, buckets, connections, tracing, human-in-the-loop, CLI, packaging |
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

platform is in uipath-platform package.
let s change package to package(s) in column name and add here uipath-core, uipath-platform, uipath-llm-clients etc. (these are only a subset of our libraries)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done — renamed the column to Package(s) and listed uipath, uipath-core, uipath-platform, uipath-llm-clients, ....

Comment on lines +25 to +27
| PydanticAI | `uipath-pydantic-ai` | Type-safe agents with Pydantic models |
| Google ADK | `uipath-google-adk` | Gemini models, Google ecosystem |
| UiPath Agent Framework | `uipath-agent-framework` | UiPath-native agent primitives |
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not documented yet, remove for now

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed all three (PydanticAI, Google ADK, UiPath Agent Framework) — from both this table and the Framework Guides table below. Also dropped them from the install list on the Studio Web page for consistency.


## Input & Output

Define `Input` and `Output` as Python dataclasses, the same way as [coded functions](./functions.md#input--output):
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

they can be dataclasees/baseModels/typedDicts etc. this depends on the framework used
I would remove this entire section

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed the entire Input & Output section — the shape depends on the framework.


## Platform Services

The `uipath` SDK gives your agent access to Orchestrator resources at runtime — credentials are injected automatically when running as a job.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

not only orchestrator

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generalized — now reads "access to UiPath platform resources" / "full set of platform services" instead of Orchestrator.


---

## Quickstart
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we need this section? we already have quickstarts for each framework. I would drop it

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dropped the Quickstart section and replaced it with a pointer to the per-framework Framework Guides.

@@ -0,0 +1,423 @@
# Python Coded Functions

A coded function is Python code with typed input and output that runs as an Orchestrator job. You write plain Python — no agent framework, no LLM required — package it with the CLI, and invoke it from Maestro processes, Coded Apps, or any UiPath job trigger.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UiPath job trigger -> this sounds weird for somebody that is unfamiliar with UiPath platform. I would just extend the enumeration with RPA and Agents

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reworded — extended the enumeration: "Maestro processes, RPA workflows, coded agents, Coded Apps, or any UiPath job".


## Input & Output

Define `Input` and `Output` as Python dataclasses. The runtime validates against these at invocation time and exports them as JSON Schema for Maestro variable binding.
Copy link
Copy Markdown
Collaborator

@radu-mocanu radu-mocanu May 29, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

they can also be pydantic BaseModels or thin classes with typed annotations.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is maestro singled out here? same applies to RPA/Agents

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added — now reads "dataclasses, pydantic BaseModels, or thin classes with typed annotations".

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generalized — the exported JSON Schema is now described for "callers (Maestro processes, RPA workflows, agents, and others)", not Maestro alone.


### Error output pattern

Return business errors as typed output fields rather than raising exceptions. This lets Maestro inspect the error reason and route the process accordingly:
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here about maestro mention. we can include it as an example if we want, but this sounds like coded functions will be only available within maestro processes

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same — now reads "lets the caller (a Maestro process, an RPA workflow, an agent, ...) inspect the error reason and route accordingly".


## Platform Services

`UiPath()` gives your function access to Orchestrator resources at runtime. Credentials are injected automatically when running as a job — no configuration needed.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here. there are many more FPSs available through UiPath() interface.
full list here

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done — added a link to the full uipath-platform package list so it is clear there are many more services than the few shown.


---

## Platform Services
Copy link
Copy Markdown
Collaborator

@radu-mocanu radu-mocanu May 29, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why is this a section? we have every service already documented. this just duplicates data

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Condensed the section to a short intro plus links to the per-service references, instead of duplicating each service with its own code block.


## Idempotency

Functions may be retried by Maestro after a transient failure. Always check for an existing result before writing to an external system:
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same maestro phrasing

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed — now reads "Functions may be retried by the caller after a transient failure".

return Output(result_id=result_id, status="Created")
```

Use a stable, business-meaningful identifier (invoice number, order ID) as the idempotency key — avoid auto-generated IDs that don't exist before the first write.
Copy link
Copy Markdown
Collaborator

@radu-mocanu radu-mocanu May 29, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this should be phrased as a recommendation, not as a hard rule. I suggest an info box

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reframed as a recommendation in a tip info box rather than a hard rule:

/// tip
Prefer a stable, business-meaningful identifier (invoice number, order ID) as the idempotency key ...
///


- Invoked as a **Maestro Service Task** — Maestro binds typed input/output to process variables automatically from the exported JSON Schema
- Triggered via the **Orchestrator API** (`POST /Jobs/StartJobs`)
- Run from the CLI: `uipath invoke main '{"..."}'`
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

only if it is deployed in personal workspace.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Scoped — now reads "Run from the CLI with uipath invoke main ... (when deployed to your personal workspace)".

Comment thread packages/uipath/docs/core/studio_web.md Outdated
Comment thread packages/uipath/docs/core/studio_web.md Outdated
## Syncing Evaluations

Evaluations can be defined either in Studio Web or locally. They sync automatically when you use `uipath pull` and `uipath push`.
Evaluations can be defined either in Studio Web or locally, and sync automatically when you use `uipath pull` and `uipath push`. Defining and running evaluations in Studio Web is supported for coded agents only; coded functions can still be evaluated locally with `uipath eval`.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why do we have evals for coded functions? Evals are agent specific. classic python functions can (and should) be unit tested.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed — evals are now scoped to coded agents only. The page notes functions are plain Python to be unit-tested instead, and the "Syncing Evaluations" section is described as a coded-agent feature.

- Add docs/core/functions.md — full reference for coded functions:
  project structure, I/O types, platform services, tracing, multiple
  entry points, idempotency, pack/publish with screenshots
- Add docs/core/agents.md — guide for coded agents: architecture,
  framework comparison table (LangChain, LlamaIndex, OpenAI Agents,
  PydanticAI, Google ADK, UiPath Agent Framework), quickstart,
  platform services, tracing, framework guides
- Add three screenshots: Maestro execution trace, Orchestrator
  Processes list, Maestro Service Task with I/O binding
- Update home page (index.md) with two clear entry points:
  Functions vs Agents with SDK dependency explained
- Update nav: Getting Started → Coded Functions → Coded Agents → CLI
- Neutralize agent-only language in cli/index.md,
  environment_variables.md, FAQ.md, traced.md, getting_started.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@alexandra-c alexandra-c force-pushed the feat/coded-function-docs branch from 683cd4d to 17eb20b Compare May 29, 2026 13:18
@sonarqubecloud
Copy link
Copy Markdown

@AlexBizon AlexBizon requested a review from radu-mocanu May 29, 2026 13:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants