feat(cli): add opt-in uipath-ipc transport to uipath server [ROBO-5779]#1809
Draft
eduard-dumitru wants to merge 1 commit into
Draft
feat(cli): add opt-in uipath-ipc transport to uipath server [ROBO-5779]#1809eduard-dumitru wants to merge 1 commit into
eduard-dumitru wants to merge 1 commit into
Conversation
`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>
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Re-lands the
uipath serveruipath-ipc transport (ROBO-5779) — a clean cherry-pick of the feature commit onto currentmain, 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:UIPATH_SERVER_IPCenv var, gated by_ipc_capability_available()— falls back to HTTP ifuipath_ipcisn't importable, never fails. Unset ⇒ HTTP.IPythonRuntimeServer(Ping/StartJob) overNamedPipeServerTransport(Windows Proactor loop);--server-socketis the pipe name (IPC) or the UDS path (HTTP), so the executor's spawn is unchanged._run_command_isolated. Cancellation is out of scope for Phase 1 (StopJobstays a no-op).uipath-ipc>=2.5.1as a dependency (internal Azure Artifacts feed for now — see thepyprojectnote; a public-PyPI release ofuipath-ipcis a prerequisite for a publicpip install uipath).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 commit28c97ee7rebased onto currentmain— 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-integrationscross-tests and the SonarQube gate — those need to pass on the rebased code.🤖 Generated with Claude Code