You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: extract evaluation framework into uipath-eval package
Move src/uipath/eval to a new namespace package distribution
(packages/uipath-eval, import path unchanged: uipath.eval) so the
evaluation framework — evaluators, mocking, eval runtime — can be
consumed standalone, e.g. by the python eval worker in the agents
backend, without pulling in the CLI and the rest of the SDK.
- uipath-eval 0.1.0: depends only on uipath-core, uipath-platform,
uipath-runtime (+ mockito, pydantic-function-models, coverage, which
move out of the main package's dependencies)
- uipath 2.10.82 depends on uipath-eval>=0.1.0,<0.2.0; editable link
via [tool.uv.sources]
- pure-eval tests move with the code (731 tests); CLI-coupled eval
tests (discovery, telemetry, progress reporter, live tracking) stay
in packages/uipath
- the three legacy evaluators' relative import of
uipath._utils.constants now uses the eval-local constant
- CI: detect_changed_packages dependency graph, test/lint jobs,
cd.yml publish tier (core -> platform -> eval -> uipath), labeler
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CLAUDE.md
+6-5Lines changed: 6 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,17 +4,18 @@ This file provides guidance to Claude Code (claude.ai/code) when working with co
4
4
5
5
## Repository Overview
6
6
7
-
This is the **UiPath Python SDK** monorepo — a Python SDK and CLI for programmatic interaction with the UiPath Cloud Platform. It publishes three packages to PyPI: `uipath`, `uipath-core`, and `uipath-platform`.
7
+
This is the **UiPath Python SDK** monorepo — a Python SDK and CLI for programmatic interaction with the UiPath Cloud Platform. It publishes four packages to PyPI: `uipath`, `uipath-core`, `uipath-platform`, and `uipath-eval`.
8
8
9
9
## Monorepo Structure
10
10
11
-
The repo contains three packages under `packages/`, each with its own `pyproject.toml`, `src/`, and `tests/`:
11
+
The repo contains four packages under `packages/`, each with its own `pyproject.toml`, `src/`, and `tests/`:
12
12
13
-
-**`packages/uipath`** — The main SDK package. Contains the CLI (`uipath` command), agent framework, evaluation framework, tracing/telemetry, and function utilities. This is what users `uv pip install uipath`. Entry point: `src/uipath/_cli:cli`.
13
+
-**`packages/uipath`** — The main SDK package. Contains the CLI (`uipath` command), agent framework, tracing/telemetry, and function utilities. This is what users `uv pip install uipath`. Entry point: `src/uipath/_cli:cli`.
14
14
-**`packages/uipath-core`** — Core abstractions shared across packages: tracing, serialization, events, feature flags, error types, chat models, guardrails. Depends on OpenTelemetry and Pydantic.
15
+
-**`packages/uipath-eval`** — The evaluation framework (`uipath.eval` namespace): evaluators (deterministic + LLM-based), the `@mockable` simulation/mocking system, and the eval runtime. Consumable standalone (e.g. by the python eval worker in the agents backend). Depends on `uipath-core`, `uipath-platform`, and `uipath-runtime`.
15
16
-**`packages/uipath-platform`** — HTTP client layer for UiPath Platform APIs. Contains service classes for orchestrator resources (assets, buckets, jobs, processes, queues), action center, context grounding, documents, connections, chat, and guardrails. Depends on `uipath-core`, httpx, and tenacity.
16
17
17
-
Dependency chain: `uipath` → `uipath-platform` → `uipath-core`. Local editable links are configured via `[tool.uv.sources]`.
18
+
Dependency chain: `uipath` → `uipath-eval` → `uipath-platform` → `uipath-core`. Local editable links are configured via `[tool.uv.sources]`.
18
19
19
20
## Build & Development Commands
20
21
@@ -96,7 +97,7 @@ The CLI uses **click** and is organized as `cli_<command>.py` files in `src/uipa
This file provides guidance to Claude Code (claude.ai/code) when working with the `uipath-eval` package.
4
+
5
+
## Package Purpose
6
+
7
+
The evaluation framework for UiPath agents, providing the `uipath.eval` namespace package. Extracted from the main `uipath` SDK so consumers (e.g. the python eval worker in the agents backend) can depend on evaluators without the CLI and the rest of the SDK. Depends on `uipath-core`, `uipath-platform`, and `uipath-runtime`.
8
+
9
+
## Development Commands
10
+
11
+
```bash
12
+
cd packages/uipath-eval
13
+
14
+
uv sync --all-extras # Install dependencies
15
+
pytest # Run all tests
16
+
pytest tests/eval/mocks/ # Run a test subdirectory
17
+
ruff check .# Lint
18
+
ruff format --check .# Format check
19
+
mypy src # Type check
20
+
```
21
+
22
+
No justfile exists for this package — run commands directly.
|`runtime/`|`UiPathEvalRuntime`, `UiPathEvalContext`, `evaluate()` entry point, eval events, parallelization, exporters |
32
+
|`helpers.py`|`EvalHelpers` (eval set loading/migration), `get_agent_model()`|
33
+
34
+
## Constraints
35
+
36
+
- This is a **namespace package**: `src/uipath/` has no `__init__.py`; only `src/uipath/eval/` does. Import paths are unchanged from when the code lived in the main SDK (`from uipath.eval...`).
37
+
- Do not import from the main `uipath` package internals (`uipath._cli`, `uipath._utils`, `uipath.agent`, ...) — only `uipath.core`, `uipath.platform`, and `uipath.runtime` are available here. The main `uipath` package depends on this one, not vice versa.
38
+
- Structured output across model providers must use function calling, not `response_format` (Claude returns prose, Gemini returns empty content for `response_format` on the normalized gateway — see `mocks/_structured_output.py`).
39
+
- The CLI-facing progress reporters (`_progress_reporter.py`, `_console_progress_reporter.py`) intentionally stay in `packages/uipath/src/uipath/_cli/_evals/` — they are CLI infrastructure, not part of this package.
0 commit comments