feat: JIT escalation apps support - #1823
Conversation
There was a problem hiding this comment.
Pull request overview
Adds support for JIT (debug) Action Center “escalation apps” task creation by allowing callers to bypass deployed-app schema resolution and instead send app identity hints (project key / app type) so Orchestrator can resolve a not-yet-deployed app.
Changes:
- Extend
TasksService.create/create_asyncto support JIT (debug) creation viais_debug,app_project_key,app_type, and optionalaction_schema. - Include additional escalation channel property fields in the agent models to carry app metadata.
- Add tests covering debug-mode behavior and request payload expectations.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| packages/uipath/src/uipath/agent/models/agent.py | Adds app-related fields to escalation channel properties to represent JIT escalation app metadata. |
| packages/uipath-platform/src/uipath/platform/action_center/_tasks_service.py | Adds JIT/debug parameters and logic to task creation + taskSource enhancements (solutionId/isDebug). |
| packages/uipath-platform/tests/services/test_actions_service.py | Adds tests for debug-mode creation and payload contents. |
Comments suppressed due to low confidence (1)
packages/uipath-platform/src/uipath/platform/action_center/_tasks_service.py:134
- _create_spec calls _apply_task_source with two arguments, but _apply_task_source now requires the new is_debug parameter. This will raise a TypeError at runtime when creating app tasks.
json_payload, priority, labels, is_actionable_message_enabled
)
_apply_task_source(json_payload, source_name)
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
a40e999 to
dafe935
Compare
dafe935 to
1da4c4c
Compare
🚨 Heads up:
|
|



Summary
Adds just-in-time (JIT) escalation apps support: an escalation can target a not-yet-deployed ("inline") Action Center app during a debug run, instead of only deployed apps. During a debug run the runtime resolves the app's project key and action schema at runtime (from the solution) and stamps the task as a debug task, so a developer can exercise HITL escalations against an app they haven't published yet.
This is the
uipath-python(SDK) half of the change. It is consumed by the correspondinguipath-langchain-pythonand Studio Web (frontend) PRs.What changed
Debug-run detection & config (
common/_config.py,orchestrator/job.py)Jobgains aparent_contextfield (ParentContext), whose{"IsDebug": true}payload identifies a debug run.UiPathConfig.is_rooted_to_debug_jobis now settable (runtime override + setter, cleared byreset()). The debug status is resolved once and recorded here, so it does not have to be threaded through every task-creation call.App type helper (
action_center/tasks.py)is_low_code_app(app_type)helper andAPP_TYPE_LOW_CODEconstant."Custom"denotes a low-code (Studio Web) app;"Coded"denotes a coded app.Task creation (
action_center/_tasks_service.py)app_project_keyis supplied for a low-code app, the task's action schema is built from the suppliedaction_schemaand the deployed-app schema lookup is skipped (the app isn't deployed yet);appType/appProjectKeyare sent so Orchestrator can resolve the inline app.taskSource.isDebug/solutionIdare stamped fromUiPathConfig.is_rooted_to_debug_job— a single source of truth, not a per-call parameter, so the publiccreate*signatures stay clean. Both these parameters are now sent to Action Center all the time for potential future use (debug licensing)Escalation channel model (
agent/models/agent.py)app_type(appType) andaction_schema(actionSchema), so the app type and its schema can travel with the escalation resource.Versioning
uipath-platformanduipath, and raises theuipath→uipath-platformminimum pin so a standalone install can't resolve an older platform without these APIs. Lockfiles regenerated.Backward compatibility
app_project_key, noappProjectKey/appTypeis sent and the normal deployed-app path runs.isDebugis only stamped when the run is actually rooted to a debug job, so release runs are unaffected.Testing
test_config_env_vars.py:is_rooted_to_debug_jobsetter / override precedence / reset.test_actions_service.py:is_low_code_app, JIT low-code create (uses supplied schema, skips lookup, sends project key), no project key on the deployed path, andtaskSource.isDebugdriven by config (on and off).Related
uipath-langchain-pythonPR (runtime resolution of the inline app + escalation flow) depends on theis_low_code_app/ debug-config APIs added here, so this PR must be released first.appType/actionSchema/appVersionfor the updated-frontend path.