feat: forward EntryPointPath when starting a process job [PC-4935] - #1866
feat: forward EntryPointPath when starting a process job [PC-4935]#1866UiPathPetruPopa wants to merge 4 commits into
Conversation
Lets a process tool name which entry point of the referenced process it invokes. Inert until something sets it: with the field absent the payload is byte-identical to today's, and Orchestrator resolves the release's configured entry point. entry_point_path is threaded explicitly through invoke, invoke_async and _invoke_spec rather than left to **kwargs. The public methods do accept **kwargs, but _invoke_spec is called with an explicit argument list and pulls exactly one name out of it (parent_span_id), so a kwarg would have been accepted at the call site, dropped before the payload, and reported as success. The key is written as the literal "EntryPointPath". This payload is a plain dict of hardcoded PascalCase keys with no alias generator or conversion layer, so a snake_case name would ship as-is. The model side needs the same care for the opposite reason: BaseCfg sets validate_by_name and validate_by_alias but registers no alias generator, so every camelCase alias in that file is written by hand. Empty is omitted rather than sent: "" would make Orchestrator resolve an entry point named "", which fails the release lookup, whereas an absent key selects the configured default. A test pins that, and fails if the guard is weakened to `is not None`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…[PC-4935] CI requires a version not already on PyPI for every package a PR touches, and requires a dependent to raise its floor when it changes an internal dependency in the same PR -- otherwise a standalone install could resolve an older release that lacks the new parameter. uipath 2.14.5 -> 2.14.6, uipath-platform 0.2.19 -> 0.2.20, and uipath's pin raised from uipath-platform>=0.2.14 to >=0.2.20. Lockfiles refreshed to match. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
bcc4df5 to
280dd3a
Compare
Comment-only. Dropped the test-side copy of the omit-vs-empty rationale — it lives at the source, where the branch it explains is — and tightened the remaining two. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
🚨 Heads up:
|
There was a problem hiding this comment.
🟡 Changes recommended
The new public entry_point_path parameter is not documented in the invoke/invoke_async docstrings, so the API surface change is incomplete for users.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Adds support for selecting a specific process entry point when starting Orchestrator jobs, by introducing an optional entry_point_path/EntryPointPath field that is forwarded end-to-end across the SDK layers.
Changes:
- Add
entry_point_path(aliasentryPointPath) toAgentProcessToolPropertiesinpackages/uipath. - Extend
ProcessesService.invoke()/invoke_async()to acceptentry_point_pathand forward it to Orchestrator asstartInfo.EntryPointPath(omitting empty values). - Add service tests for including/omitting
EntryPointPath, and bump package versions/locks.
File summaries
| File | Description |
|---|---|
| packages/uipath/uv.lock | Bumps locked editable package versions (uipath, uipath-platform). |
| packages/uipath/src/uipath/agent/models/agent.py | Adds optional entry_point_path field to agent process tool properties. |
| packages/uipath/pyproject.toml | Bumps uipath version and minimum uipath-platform dependency. |
| packages/uipath-platform/uv.lock | Bumps locked editable uipath-platform version. |
| packages/uipath-platform/tests/services/test_processes_service.py | Adds tests validating EntryPointPath inclusion/omission behavior. |
| packages/uipath-platform/src/uipath/platform/orchestrator/_processes_service.py | Threads entry_point_path through invoke APIs into the StartJobs payload. |
| packages/uipath-platform/pyproject.toml | Bumps uipath-platform version. |
Review details
Suppressed comments (1)
packages/uipath-platform/src/uipath/platform/orchestrator/_processes_service.py:133
entry_point_pathwas added to the async API, but the docstringArgs:list wasn’t updated to describe it, so users relying on docs/autocomplete will miss the new parameter.
entry_point_path: Optional[str] = None,
- Files reviewed: 5/7 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| attachments: Optional[list[Attachment]] = None, | ||
| parent_operation_id: Optional[str] = None, | ||
| run_as_me: Optional[bool] = None, | ||
| entry_point_path: Optional[str] = None, |



What changed?
Two packages, one capability: a process tool can name which entry point of the referenced process it invokes.
packages/uipath—AgentProcessToolPropertiesgainsentry_point_path(aliasentryPointPath).packages/uipath-platform—ProcessesServiceforwards it to Orchestrator asStartInfo.EntryPointPath.Inert until something sets it. With the field absent the payload is byte-identical to today's, and Orchestrator resolves the release's configured entry point exactly as it does now. Nothing writes the field yet — the picker that does is gated behind its own flag in the Agents repo and lands after this.
Two things that would have failed silently
**kwargswould not have worked.invoke/invoke_asyncaccept**kwargs, but_invoke_specis called with an explicit argument list and pulls exactly one name out of it (parent_span_id). Anentry_point_pathkwarg would have been accepted at the call site, dropped before the payload, and reported as success. It is threaded explicitly through all three.The key must be the literal
"EntryPointPath". This payload is a plain dict of hardcoded PascalCase keys — no alias generator, no conversion layer — so a snake_case name would ship as-is. The model needs the same care for the mirror reason:BaseCfgsetsvalidate_by_nameandvalidate_by_aliasbut registers no alias generator, so every camelCase alias in that file is hand-written.Empty is omitted, not sent.
""would make Orchestrator resolve an entry point named"", which fails the release lookup; an absent key selects the configured default.How has this been tested?
tests/services/test_processes_service.py— 11 tests pass. Two added: the path appears instartInfowhen given, and an empty string is omitted.if entry_point_path:toif entry_point_path is not None:makes it fail. It guards the behaviour rather than merely covering the line.test_invokeasserts the exact payload and still passes unchanged — direct evidence the default path is untouched.packages/uipath: full model/agent suite green;ruff checkandruff format --checkclean on both packages.Are there any breaking changes?
Purely additive: a new optional model field and a new optional keyword argument.
Order
Part of PC-4935. Both packages must publish before
uipath-langchaincan raise its lower bounds and forward the stored value, and all of that precedes the picker UI — which is what makes the field user-reachable.🤖 Generated with Claude Code