Skip to content

feat(cli): add opt-in uipath-ipc transport to uipath server [ROBO-5779]#1809

Draft
eduard-dumitru wants to merge 1 commit into
mainfrom
feat/ROBO-5779-server-ipc-transport
Draft

feat(cli): add opt-in uipath-ipc transport to uipath server [ROBO-5779]#1809
eduard-dumitru wants to merge 1 commit into
mainfrom
feat/ROBO-5779-server-ipc-transport

Conversation

@eduard-dumitru

Copy link
Copy Markdown

Re-lands the uipath server uipath-ipc transport (ROBO-5779) — a clean cherry-pick of the feature commit onto current main, replacing the stale/closed #1786 (which had drifted to 2.13.6 and gone red on cross-tests).

What

Adds an opt-in uipath-ipc named-pipe transport to uipath server, alongside the existing HTTP-over-socket path:

  • Transport selected by the UIPATH_SERVER_IPC env var, gated by _ipc_capability_available() — falls back to HTTP if uipath_ipc isn't importable, never fails. Unset ⇒ HTTP.
  • IPC edge hosts IPythonRuntimeServer (Ping / StartJob) over NamedPipeServerTransport (Windows Proactor loop); --server-socket is the pipe name (IPC) or the UDS path (HTTP), so the executor's spawn is unchanged.
  • Both edges run jobs through _run_command_isolated. Cancellation is out of scope for Phase 1 (StopJob stays a no-op).
  • Adds uipath-ipc>=2.5.1 as a dependency (internal Azure Artifacts feed for now — see the pyproject note; a public-PyPI release of uipath-ipc is a prerequisite for a public pip install uipath).
  • Tests: test_server.py (HTTP), test_server_ipc.py (IPC), test_server_transport.py (env-var selection / capability fallback / endpoint guard).

Why fresh instead of reopening #1786

#1786's branch (feature/migrate-to-ipc) had gone stale (2.13.6 vs main's 2.13.10) and was closed with cross-tests red. This is the same single commit 28c97ee7 rebased onto current main — applied with no conflicts, version preserved at 2.13.10.

Before marking ready

Kept as draft until CI is green: the prior close was driven by uipath-langchain + uipath-integrations cross-tests and the SonarQube gate — those need to pass on the rebased code.

🤖 Generated with Claude Code

`uipath server` now supports two transports behind one shared job core; HTTP
stays the DEFAULT and IPC is opt-in via an env var, so the switch is reversible
and backward compatible.

- Transport = the UIPATH_SERVER_IPC env var: its presence selects uipath-ipc,
  gated by _ipc_capability_available() (an isolated, non-failing seam — today
  "is uipath_ipc importable") so an env var set against a runtime without IPC
  support falls back to HTTP instead of failing. Unset ⇒ HTTP.
- The endpoint arg is shared: --server-socket is the pipe name under IPC and the
  UDS path under HTTP. The executor never changes how it spawns, and an older
  runtime that predates IPC just ignores the env var and treats it as a UDS path.
- HTTP edge (default, unchanged): create_app / /health / /jobs/{job_key}/start,
  Unix socket or TCP, ready-ACK, host-header validation.
- IPC edge (opt-in): IPythonRuntimeServer (Ping / StartJob) over
  NamedPipeServerTransport, Windows Proactor loop.

Both edges run jobs through _run_command_isolated (per-job env/cwd isolation,
serialized by _state.lock). Cancellation is out of scope for Phase 1
(StopJobAsync stays a no-op); a future phase can add it.

`uipath-ipc` stays a hard dependency (internal Azure Artifacts feed for now).
Publishing it to public PyPI is a prerequisite for a public `pip install uipath`.

Tests: test_server.py (HTTP), test_server_ipc.py (IPC), test_server_transport.py
(env-var selection, capability fallback, endpoint guard).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions github-actions Bot added test:uipath-langchain Triggers tests in the uipath-langchain-python repository test:uipath-runtime test:uipath-integrations labels Jul 13, 2026
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
73.7% Coverage on New Code (required ≥ 90%)

See analysis details on SonarQube Cloud

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test:uipath-integrations test:uipath-langchain Triggers tests in the uipath-langchain-python repository test:uipath-runtime

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant