Skip to content

feat(cli): serve the pre-warmed runtime over uipath-ipc alongside HTTP [ROBO-5779]#1809

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

feat(cli): serve the pre-warmed runtime over uipath-ipc alongside HTTP [ROBO-5779]#1809
eduard-dumitru wants to merge 4 commits into
mainfrom
feat/ROBO-5779-server-ipc-transport

Conversation

@eduard-dumitru

@eduard-dumitru eduard-dumitru commented Jul 13, 2026

Copy link
Copy Markdown

Adds a uipath-ipc named-pipe transport to uipath server, served alongside the existing HTTP-over-socket path (ROBO-5779).

What

  • uipath server serves both channels concurrently: HTTP (aiohttp over a Unix socket, or TCP on Windows) and — when --server-socket is given — a uipath-ipc named pipe. HTTP is never torn down; the IPC pipe name is the socket's basename, so the executor spawns the server the same way regardless of channel.
  • IPC hosts IPythonRuntimeServer (StartJob / StopJob) via NamedPipeServerTransport; both edges run jobs through one env/cwd-isolated core (_run_command_isolated).
  • Contract DTOs are typed dataclasses (PythonRunRequest / PythonRunResult) mirroring the .NET side. StopJob returns a bool so CoreIPC treats it as request/response, not fire-and-forget — cancellation itself is a no-op for now (Phase 1).
  • Adds uipath-ipc>=2.5.1 (internal Azure Artifacts feed for now — see the pyproject note; a public-PyPI uipath-ipc release is a prerequisite for a public pip install uipath).
  • Tests: test_server_ipc.py (IPC server) and test_server_transport.py (channel composition / _run_server arg resolution / CLI wiring).

Notes

  • Which transport a given job uses is decided on the .NET Handler side (the PythonRuntimePreferIpc FPS feature flag, Low-Code only) — separate PR in UiPath/hdens.
  • Rebased onto current main; pending green CI (cross-tests + Sonar) before ready.

🤖 Generated with Claude Code

@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
…P [ROBO-5779]

`uipath server` serves an HTTP channel and, when --server-socket is given, a
uipath-ipc named-pipe channel concurrently — both behind one env/cwd-isolated job
core. Adds the IPythonRuntimeServer contract (StartJob/StopJob) with typed
PythonRunRequest/PythonRunResult dataclasses mirroring the .NET side, plus tests.
Adds uipath-ipc as a dependency.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@eduard-dumitru
eduard-dumitru force-pushed the feat/ROBO-5779-server-ipc-transport branch from 72b8383 to 952d047 Compare July 21, 2026 11:08
@eduard-dumitru eduard-dumitru changed the title feat(cli): add opt-in uipath-ipc transport to uipath server [ROBO-5779] feat(cli): serve the pre-warmed runtime over uipath-ipc alongside HTTP [ROBO-5779] Jul 21, 2026
eduard-dumitru and others added 2 commits July 22, 2026 12:23
…OBO-5779]

Move the wire-dictated PascalCase surface (PythonRunRequest/PythonRunResult,
IPythonRuntimeServer, PythonRuntimeService, start_ipc_server) out of cli_server
into cli_server_ipc, re-exported for backward compatibility. Scopes the Sonar
S100/S116 suppression to that single file so the rest of the tree stays strict.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Cover the missing/empty-Command rejection and the StopJob bool ack over the
uipath-ipc channel, taking cli_server_ipc to full new-code coverage.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@eduard-dumitru
eduard-dumitru force-pushed the feat/ROBO-5779-server-ipc-transport branch from 01c4dfd to 832a0f2 Compare July 22, 2026 10:25
- Sonar: use resourceKey (not resourcePath) for the multicriteria issue ignore.
- version: bump uipath 2.13.13 -> 2.13.14 (2.13.13 already on PyPI).
- mypy: parametrize dict annotations in the server tests; ignore [type-abstract]
  on get_proxy(IPythonRuntimeServer) (proxying an interface is intended).
- ruff: wrap over-long lines to the 88-col format.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@eduard-dumitru
eduard-dumitru force-pushed the feat/ROBO-5779-server-ipc-transport branch from 832a0f2 to a641162 Compare July 22, 2026 10:27
@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
84.3% 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