@uipath/skills 1.197.2 → 1.198.0-preview.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/CODEOWNERS +18 -11
- package/README.md +1 -0
- package/assets/skill-status.json +8 -0
- package/hooks/hooks.json +44 -8
- package/hooks/send-telemetry.ps1 +392 -0
- package/hooks/send-telemetry.sh +118 -86
- package/hooks/set-session-env.ps1 +72 -0
- package/hooks/set-session-env.sh +64 -0
- package/hooks/suggest-permissions.ps1 +45 -0
- package/hooks/suggest-permissions.sh +4 -0
- package/package.json +1 -1
- package/skills/uipath-admin/references/audit-commands.md +2 -2
- package/skills/uipath-admin/references/audit-workflow-guide.md +4 -4
- package/skills/uipath-agents/references/coded/capabilities/batch-transform/planning.md +1 -1
- package/skills/uipath-agents/references/coded/capabilities/deeprag/planning.md +1 -1
- package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails-recommend.md +5 -2
- package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails.md +8 -4
- package/skills/uipath-agents/references/coded/embedding-in-flows.md +1 -1
- package/skills/uipath-agents/references/coded/flow-integration.md +2 -2
- package/skills/uipath-agents/references/coded/lifecycle/build.md +0 -1
- package/skills/uipath-agents/references/coded/lifecycle/setup.md +0 -1
- package/skills/uipath-agents/references/coded/quickstart.md +1 -1
- package/skills/uipath-agents/references/lowcode/agent-definition.md +24 -5
- package/skills/uipath-agents/references/lowcode/capabilities/built-in-tools/batch-transform/planning.md +1 -1
- package/skills/uipath-agents/references/lowcode/capabilities/built-in-tools/deeprag/planning.md +1 -1
- package/skills/uipath-agents/references/lowcode/capabilities/context/attachments.md +1 -0
- package/skills/uipath-agents/references/lowcode/capabilities/guardrails/guardrails-recommend.md +1 -0
- package/skills/uipath-api-workflow/references/cli-reference.md +1 -1
- package/skills/uipath-api-workflow/references/connector-activity-discovery.md +1 -1
- package/skills/uipath-api-workflow/references/troubleshooting.md +1 -1
- package/skills/uipath-automation-discovery/SKILL.md +26 -1
- package/skills/uipath-automation-discovery/assets/templates/estimation-worksheet-template.md +80 -0
- package/skills/uipath-automation-discovery/references/estimation-guide.md +104 -0
- package/skills/uipath-connector-builder/SKILL.md +6 -4
- package/skills/uipath-connector-builder/references/auth.md +137 -13
- package/skills/uipath-connector-builder/references/configuration.md +29 -7
- package/skills/uipath-connector-builder/references/debugging.md +1 -1
- package/skills/uipath-connector-builder/references/standard-resources.md +162 -13
- package/skills/uipath-governance/references/cli-cheatsheet.md +3 -3
- package/skills/uipath-governance/references/diagnose/references/failure-modes.md +5 -5
- package/skills/uipath-insights/SKILL.md +277 -0
- package/skills/uipath-insights/references/investigation-playbook-guide.md +145 -0
- package/skills/uipath-insights/references/jobs-commands-guide.md +144 -0
- package/skills/uipath-ixp/SKILL.md +4 -1
- package/skills/uipath-ixp/references/cli-reference.md +18 -3
- package/skills/uipath-maestro-bpmn/references/cli-conventions.md +2 -0
- package/skills/uipath-maestro-bpmn/validator/README.md +12 -2
- package/skills/uipath-maestro-case/SKILL.md +27 -13
- package/skills/uipath-maestro-case/assets/templates/sdd-template-examples.md +37 -4
- package/skills/uipath-maestro-case/assets/templates/sdd-template.md +20 -9
- package/skills/uipath-maestro-case/assets/templates/sdd-viewer.html +8 -7
- package/skills/uipath-maestro-case/references/bindings-v2-sync.md +5 -1
- package/skills/uipath-maestro-case/references/brownfield.md +86 -0
- package/skills/uipath-maestro-case/references/case-commands.md +8 -0
- package/skills/uipath-maestro-case/references/case-editing-operations.md +230 -21
- package/skills/uipath-maestro-case/references/case-schema.md +29 -11
- package/skills/uipath-maestro-case/references/connector-integration.md +1 -1
- package/skills/uipath-maestro-case/references/connector-trigger-common.md +1 -1
- package/skills/uipath-maestro-case/references/entry-points-sync.md +204 -0
- package/skills/uipath-maestro-case/references/implementation.md +19 -9
- package/skills/uipath-maestro-case/references/phase-0-interview.md +10 -8
- package/skills/uipath-maestro-case/references/phased-execution.md +11 -4
- package/skills/uipath-maestro-case/references/placeholder-tasks.md +24 -2
- package/skills/uipath-maestro-case/references/planning.md +9 -3
- package/skills/uipath-maestro-case/references/plugins/case/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/sla/impl-json.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/sla/planning.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/stages/impl-json.md +11 -10
- package/skills/uipath-maestro-case/references/plugins/stages/planning.md +13 -14
- package/skills/uipath-maestro-case/references/plugins/tasks/agent/impl-json.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/tasks/agent/planning.md +91 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/impl-json.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/planning.md +87 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/planning.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/triggers/event/impl-json.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/triggers/manual/impl-json.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/triggers/timer/impl-json.md +2 -1
- package/skills/uipath-maestro-case/references/plugins/variables/bindings/impl-json.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/variables/global-vars/impl-json.md +20 -10
- package/skills/uipath-maestro-case/references/plugins/variables/global-vars/planning.md +9 -8
- package/skills/uipath-maestro-case/references/plugins/variables/io-binding/impl-json.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/variables/io-binding/planning.md +1 -1
- package/skills/uipath-maestro-case/references/registry-discovery.md +87 -10
- package/skills/uipath-maestro-case/references/sdd-generation-rules.md +34 -26
- package/skills/uipath-maestro-flow/SKILL.md +4 -1
- package/skills/uipath-maestro-flow/references/author/CAPABILITY.md +1 -2
- package/skills/uipath-maestro-flow/references/author/references/editing-operations-json.md +3 -3
- package/skills/uipath-maestro-flow/references/author/references/greenfield.md +4 -2
- package/skills/uipath-maestro-flow/references/author/references/planning-arch.md +0 -1
- package/skills/uipath-maestro-flow/references/author/references/planning-impl.md +0 -1
- package/skills/uipath-maestro-flow/references/author/references/plugins/connector/impl.md +1 -0
- package/skills/uipath-maestro-flow/references/author/references/plugins/connector-trigger/impl.md +7 -7
- package/skills/uipath-maestro-flow/references/author/references/plugins/ixp/impl.md +14 -14
- package/skills/uipath-maestro-flow/references/author/references/plugins/script/impl.md +10 -6
- package/skills/uipath-maestro-flow/references/shared/cli-conventions.md +7 -0
- package/skills/uipath-maestro-flow/references/shared/file-format.md +1 -1
- package/skills/uipath-mcp-servers/references/is-activity-workflow.md +3 -3
- package/skills/uipath-planner/SKILL.md +1 -1
- package/skills/uipath-platform/SKILL.md +4 -14
- package/skills/uipath-platform/references/data-fabric/data-fabric.md +1 -1
- package/skills/uipath-platform/references/integration-service/agent-workflow.md +4 -4
- package/skills/uipath-platform/references/integration-service/reference-resolution.md +1 -1
- package/skills/uipath-platform/references/integration-service/resources.md +5 -5
- package/skills/uipath-platform/references/integration-service/triggers.md +10 -9
- package/skills/uipath-platform/references/orchestrator/setup-environment.md +2 -0
- package/skills/uipath-review/SKILL.md +8 -4
- package/skills/uipath-review/references/agents/agent-review-checklist.md +1 -22
- package/skills/uipath-review/references/agents/agents-coded-rules.md +24 -7
- package/skills/uipath-review/references/agents/agents-lowcode-rules.md +0 -1
- package/skills/uipath-review/references/agents/guardrails/coded-guardrails-review.md +231 -0
- package/skills/uipath-review/references/rule-catalog-workflow.md +4 -2
- package/skills/uipath-rpa/SKILL.md +2 -2
- package/skills/uipath-rpa/references/activity-docs/UiPath.DataService.Activities/guides/data-service-filter-builder-guide.md +1 -1
- package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/coded-api.md +1 -1
- package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/curl-import.md +3 -3
- package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/http-request-upgrade.md +3 -3
- package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/service-discovery.md +2 -2
- package/skills/uipath-rpa/references/coded/coding-guidelines.md +1 -1
- package/skills/uipath-rpa/references/ui-automation-guide.md +7 -7
- package/skills/uipath-rpa/references/uia-configure-target-workflows.md +5 -5
- package/skills/uipath-rpa/references/uia-elements-interaction-guide.md +19 -10
- package/skills/uipath-rpa/references/uia-prerequisites.md +7 -7
- package/skills/uipath-rpa/references/validation-guide.md +2 -2
- package/skills/uipath-rpa/references/xaml/common-pitfalls.md +4 -0
- package/skills/uipath-rpa/references/xaml/csharp-activity-binding-guide.md +3 -1
- package/skills/uipath-rpa/references/xaml/csharp-expression-pitfalls.md +9 -4
- package/skills/uipath-rpa/references/xaml/workflow-guide.md +2 -2
- package/skills/uipath-rpa/references/xaml/xaml-basics-and-rules.md +1 -1
- package/skills/uipath-solution/SKILL.md +4 -4
- package/skills/uipath-solution/references/activate-and-manage.md +6 -1
- package/skills/uipath-solution/references/develop-solution.md +24 -5
- package/skills/uipath-solution/references/pack-and-deploy.md +5 -2
- package/skills/uipath-solution/references/scenarios/manual-edits.md +2 -2
- package/skills/uipath-solution/references/solution-overview.md +2 -2
- package/skills/uipath-troubleshoot/SKILL.md +3 -3
- package/skills/uipath-troubleshoot/references/products/agents/playbooks/context-grounding-index-not-found.md +0 -2
- package/skills/uipath-troubleshoot/references/products/maestro/playbooks/personal-automation-quota.md +1 -1
- package/version-manifest.json +3 -3
- package/hooks/ensure-uip.sh +0 -220
- package/skills/uipath-maestro-flow/references/author/references/plugins/connector/data-fabric/impl.md +0 -683
- package/skills/uipath-maestro-flow/references/author/references/plugins/connector/data-fabric/planning.md +0 -45
|
@@ -235,6 +235,6 @@ C) <user-driven approach>
|
|
|
235
235
|
| **Service property not available** | Missing package dependency | Install the required package via `uip rpa packages install --project-dir "<PROJECT_DIR>" --packages id=<PACKAGE_ID> --output json` (no `add-dependency` command exists; do not hand-edit `project.json`) |
|
|
236
236
|
| **Timeout** | Studio took too long to start. First headless call on a cold NuGet cache can take 30–90 s. | Increase timeout: `--timeout 600` |
|
|
237
237
|
| **"Target name 'X' is not part of the current screen"** | Element descriptor used on wrong screen handle | Use the `UiTargetApp` handle from `Open`/`Attach` for the screen that owns the element |
|
|
238
|
-
| **"Cannot select item. It was not found among existing items"** | `
|
|
238
|
+
| **"Cannot select item. It was not found among existing items"** | The `Item` value doesn't match any option (wrong text/casing) — not a control-type limitation | Read the control's `items` attribute (via the interact CLI, see the UIA cli-reference) and pass one of those values verbatim. `SelectItem` drives any control whose `items` lists options (any UI stack); use `TypeInto` only for type-ahead combos or controls with no `items`. |
|
|
239
239
|
| **`packages inspect` cannot find UILibrary package** | Package is on a private/local NuGet feed | Use `--nupkg-path` to inspect the local `.nupkg` directly, or read `.metadata` files manually from `~/.nuget/packages/<name>/<version>/contentFiles/any/any/.objects/` |
|
|
240
240
|
| **Studio rejects manually created project** | Missing metadata dirs, wrong schema/version | Always use `uip rpa init` instead of writing `project.json` manually |
|
|
@@ -76,7 +76,7 @@ A `Log("LoginWorkflow: type username")` stub:
|
|
|
76
76
|
|
|
77
77
|
A real `<uix:NTypeInto>` activity with placeholder selector + `TODO Indicate` marker:
|
|
78
78
|
|
|
79
|
-
- Build/validate
|
|
79
|
+
- Build/validate surface the unconfigured targets ("Target or Input UI Element must be set" — hard errors in current packages) — useful, since they tell the developer what is left to do. A stub-mode deliverable therefore does NOT reach a clean `build`; its acceptance bar is that the ONLY remaining validate/build errors are the expected unconfigured-target ones.
|
|
80
80
|
- The activity is wired into the workflow's control flow, package dependencies, scope, and Object Repository registration plumbing. The developer's only remaining work is **Indicate**.
|
|
81
81
|
- The TODO marker is visible in Studio's designer pane and grep-able in the file.
|
|
82
82
|
- The cost of "what does this stub actually need from the developer?" drops from "read this carefully and infer" to "click Indicate on the marked activities."
|
|
@@ -199,13 +199,13 @@ When a procedure exists specifically to check something against ground truth, do
|
|
|
199
199
|
|
|
200
200
|
## Common UIA Pitfalls
|
|
201
201
|
|
|
202
|
-
- **SelectItem
|
|
202
|
+
- **Choosing SelectItem vs click-to-open for dropdowns/lists** — whether `SelectItem` drives a control is independent of its UI stack, tag, or role (native `<select>`, WinForms/WPF combo, Java/SAP list, ARIA combobox — all candidates). Don't guess from the selector — query the control's `items` attribute via the interact CLI: if it lists options → `SelectItem` drives it (pass one of them), no option-element capture needed; if empty/absent → fall back to click-to-open + click-option (or `TypeInto`). Procedure and syntax: [uia-elements-interaction-guide.md § Dropdowns, lists, and comboboxes](uia-elements-interaction-guide.md).
|
|
203
203
|
- **ScreenPlay overuse** — UITask/ScreenPlay is non-deterministic and slow. Always try proper selectors first.
|
|
204
204
|
- **Wrong Object Repository references** — never copy references from examples or other projects. Always use `uia-configure-target` to generate them for the current application state.
|
|
205
205
|
- **Using `InjectJsScript` instead of standard activities** — do NOT use `InjectJsScript` when standard UI activities (GetText, Click, TypeInto, ExtractTableData, etc.) with configured targets would work. `InjectJsScript` is a last resort — it's hard to debug, fragile to page changes, and bypasses the Object Repository.
|
|
206
206
|
- **Hallucinated keyboard shortcuts instead of UIA targets** — do NOT send keyboard shortcuts (`Ctrl+S`, `Alt+F4`, `Tab` navigation, menu mnemonics, etc.) as a substitute for clicking or typing into a real UI element. `Click` and `TypeInto` against configured targets are deterministic, survive layout changes, and are observable in logs; guessed shortcuts depend on focus, locale, and version. Reserve keyboard shortcuts for genuinely hotkey-only operations (commands with no clickable surface) and confirm the shortcut exists in the live app — never infer from OS convention or muscle memory.
|
|
207
207
|
- **Chaining keystrokes in one `NKeyboardShortcuts` after one navigates away faults on a stale node.** The activity resolves its `Target` **once**; if the first shortcut destroys/replaces that element (a navigation key that changes the view), a second shortcut chained in the same activity (multi-shortcut `Shortcuts` string or `DelayBetweenShortcuts`) hits the stale node and throws `InvalidNodeException: "The UI element is invalid..."`. Example: Explorer `Alt+Up` (go to parent, auto-selecting the current folder) + `Alt+Enter` (open Properties) in one activity targeting "Items View" — `Alt+Up` navigates, then `Alt+Enter` faults on the destroyed node. **Fix:** use **separate** `NKeyboardShortcuts` activities so the follow-up **re-resolves** its target against the new screen, plus a small `DelayBefore` to let it settle.
|
|
208
|
-
- **Unnecessary `Delay` activities before UIA actions** — UIA activities (`NClick`, `NTypeInto`, `NSelectItem`, `NGoToUrl`, etc.) have embedded target-finding resilience: they retry the selector lookup for a configurable timeout before failing. A `Delay` placed in front of a UIA activity to "let the UI settle" is almost always redundant and inflates workflow runtime without changing correctness. Include `Delay` only when ALL of: the wait is NOT for a UI element that a following UIA activity will target; a concrete non-retry reason exists (post-action animation with no UIA anchor, fixed-duration business pause, background job the UI doesn't reflect); and the caller can state in one sentence why the next UIA activity's built-in retry is insufficient. A button that is present but **disabled** during async validation/load/refresh is a separate case retry does not cover — use the activity's `DelayBefore`/`DelayAfter` *properties* (not a `Delay` activity): [uia-elements-interaction-guide.md §
|
|
208
|
+
- **Unnecessary `Delay` activities before UIA actions** — UIA activities (`NClick`, `NTypeInto`, `NSelectItem`, `NGoToUrl`, etc.) have embedded target-finding resilience: they retry the selector lookup for a configurable timeout before failing. A `Delay` placed in front of a UIA activity to "let the UI settle" is almost always redundant and inflates workflow runtime without changing correctness. Include `Delay` only when ALL of: the wait is NOT for a UI element that a following UIA activity will target; a concrete non-retry reason exists (post-action animation with no UIA anchor, fixed-duration business pause, background job the UI doesn't reflect); and the caller can state in one sentence why the next UIA activity's built-in retry is insufficient. A button that is present but **disabled** during async validation/load/refresh is a separate case retry does not cover — use the activity's `DelayBefore`/`DelayAfter` *properties* (not a `Delay` activity): [uia-elements-interaction-guide.md § Buttons disabled during async operations](uia-elements-interaction-guide.md).
|
|
209
209
|
- **`Cannot send input ... outside of screen bounds` on hover-revealed elements** — pop-up menu items, autocomplete entries, and dropdown rows that only appear after a hover/click frequently fail under the default input method. Switch the affected activity (or its UIA interact CLI counterpart) to a simulated input method. Available input-method values: `{PROJECT_DIR}/.local/docs/packages/UiPath.UIAutomation.Activities/references/cli-reference.md`.
|
|
210
210
|
- **`HealingAgentBehavior` enum split between card and child activities.** `NApplicationCard` (Use Application/Browser) accepts `NHealingAgentBehavior` — values `Job`, `Disabled`, `RecommendationOnly`. Child activities (`NClick`, `NTypeInto`, `NCheckState`, etc.) accept `NChildHealingAgentBehavior`, which adds `SameAsCard`. Putting `SameAsCard` on the card itself fails with `Failed to create a 'HealingAgentBehavior' from the text 'SameAsCard'`. When introducing a new card (e.g., a nested card for a sign-in subprocess), set its `HealingAgentBehavior` to `Job`/`Disabled`/`RecommendationOnly` — never copy the value from a child activity. Confirm via `{PROJECT_DIR}/.local/docs/packages/UiPath.UIAutomation.Activities/activities/common/NHealingAgentBehavior.md` and `NChildHealingAgentBehavior.md`.
|
|
211
211
|
|
|
@@ -213,15 +213,15 @@ When a procedure exists specifically to check something against ground truth, do
|
|
|
213
213
|
|
|
214
214
|
## Control-Specific Interaction Patterns
|
|
215
215
|
|
|
216
|
-
> **MANDATORY — read and apply before authoring.** Before writing any `TypeInto`, `SelectItem`, or `Click` (XAML `NTypeInto` / `NSelectItem` / `NClick`, or coded `uiAutomation.*`) against a captured target, classify the control. If **any** target is a date / time input, a dropdown, or a button that can be disabled during async work, you MUST read [uia-elements-interaction-guide.md](uia-elements-interaction-guide.md) IN FULL and apply it **before** authoring that activity — the same bar as target capture ([§ Configuring Targets](#configuring-targets-object-repository)). The correct technique is type-specific and documented there: a date field must be typed in its **displayed** format (not ISO) via a key-event method, dropdowns
|
|
216
|
+
> **MANDATORY — read and apply before authoring.** Before writing any `TypeInto`, `SelectItem`, or `Click` (XAML `NTypeInto` / `NSelectItem` / `NClick`, or coded `uiAutomation.*`) against a captured target, classify the control. If **any** target is a date / time input, a dropdown, or a button that can be disabled during async work, you MUST read [uia-elements-interaction-guide.md](uia-elements-interaction-guide.md) IN FULL and apply it **before** authoring that activity — the same bar as target capture ([§ Configuring Targets](#configuring-targets-object-repository)). The correct technique is type-specific and documented there: a date field must be typed in its **displayed** format (not ISO) via a key-event method, for dropdowns/lists you decide by querying the control's `items` attribute (via the interact CLI) rather than by tag/role — items listed → `SelectItem`, none → click-to-open, and async-disabled buttons need `DelayBefore`. Apply the documented method up front — do not guess a value (e.g. ISO into a date field) and iterate against the running app.
|
|
217
217
|
|
|
218
218
|
After a target is captured, these control types need type-specific handling to drive correctly:
|
|
219
219
|
|
|
220
220
|
- **Date / formatted date-time inputs** — type the field's **displayed** format (e.g. en-US `MM/DD/YYYY`), not the ISO `value`.
|
|
221
|
-
- **Dropdowns** —
|
|
221
|
+
- **Dropdowns / lists / comboboxes** — query the control's `items` attribute (via the interact CLI); items listed → `SelectItem`, none → click-to-open + click option (or `TypeInto`). Independent of tag / role / UI technology.
|
|
222
222
|
- **Buttons disabled during async ops** — present but `disabled` during validation/load/refresh; use the activity's `DelayBefore`/`DelayAfter` properties (not a `Delay` activity).
|
|
223
223
|
|
|
224
|
-
Patterns
|
|
224
|
+
Patterns there cover web-specific controls (date inputs) plus cross-technology ones (dropdowns/lists, async-disabled buttons): [uia-elements-interaction-guide.md](uia-elements-interaction-guide.md).
|
|
225
225
|
|
|
226
226
|
---
|
|
227
227
|
|
|
@@ -507,7 +507,7 @@ Example — copy a value from App A and paste it into App B. Outer card → App
|
|
|
507
507
|
<uix:NApplicationCard.Body>
|
|
508
508
|
<Sequence sap2010:WorkflowViewState.IdRef="Sequence_2">
|
|
509
509
|
<!-- ScopeIdentifier = App A card's ScopeGuid → reads from App A (outer) -->
|
|
510
|
-
<uix:NGetText DisplayName="Get value from App A"
|
|
510
|
+
<uix:NGetText DisplayName="Get value from App A" TextString="[out_Value]"
|
|
511
511
|
ScopeIdentifier="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
|
|
512
512
|
sap2010:WorkflowViewState.IdRef="NGetText_1" Version="V5" />
|
|
513
513
|
<!-- ScopeIdentifier = App B card's ScopeGuid → pastes into App B (inner) -->
|
|
@@ -166,12 +166,12 @@ Workflow steps, response shape, downstream OR regeneration for coded vs XAML, an
|
|
|
166
166
|
|
|
167
167
|
Once targets are registered in the OR (via `uia-configure-target` or indication fallback), attach them to XAML activities per `{PROJECT_DIR}/.local/docs/packages/UiPath.UIAutomation.Activities/references/uia-target-attachment-guide.md`. That doc owns the concrete subcommands, flags, and response shapes for both attachment paths.
|
|
168
168
|
|
|
169
|
-
**Path-choice policy (this skill's scope — which path to take, not how to invoke it).** The attachment guide describes two paths
|
|
169
|
+
**Path-choice policy (this skill's scope — which path to take, not how to invoke it).** The attachment guide describes two paths:
|
|
170
170
|
|
|
171
|
-
- **
|
|
172
|
-
- **
|
|
171
|
+
- **Link path — DEFAULT.** Attach OR entries to activities by their `sap2010:WorkflowViewState.IdRef` — screen first, then all element targets in one batched call. The file does not need to be open in Studio.
|
|
172
|
+
- **Embed fallback — per-reference, only on a link failure.** If a link call fails for a specific reference, inline that reference's OR-resolved target XAML as a child of the consuming activity element — scoped to only the failed reference, not the whole screen.
|
|
173
173
|
|
|
174
|
-
|
|
174
|
+
Take the link path first. On a link failure for a reference, drop straight to the embed fallback for that one reference — do not iterate through activity-id / display-name variations (see § CLI Pitfalls). The package attachment guide is source-of-truth when it diverges from this skill (per SKILL.md).
|
|
175
175
|
|
|
176
176
|
### Multi-Screen Workflows
|
|
177
177
|
|
|
@@ -185,4 +185,4 @@ Runtime symptoms that have wasted entire capture sessions. Canonical flag list,
|
|
|
185
185
|
- **Selector resolution rejects bare element refs (`Invalid --refs entry`).** Each ref must be paired with the definition file that owns it.
|
|
186
186
|
- **OR element-creation rejects inline JSON.** The OR CLI consumes pre-written per-element definition files only. Generate the definition files first, then invoke create-elements with their paths.
|
|
187
187
|
- **UIA interact actions reject discovery and global flags (`unknown option`).** Interact subcommands accept only interaction-shape flags. Folder, ref, and project-dir style flags belong to other UIA subcommand families.
|
|
188
|
-
- **
|
|
188
|
+
- **A link call fails with `Could not retrieve the activity from the workflow`.** Not an activity-id / display-name / reference-ID problem — do not iterate on those. Stop after the **first** failure for that reference and use the embed fallback (see § Attaching Targets to Workflow Activities).
|
|
@@ -50,22 +50,31 @@ Why try without emptying first: native date inputs and framework date-time picke
|
|
|
50
50
|
formScreen.TypeInto(Descriptors.MyApp.Form.InvoiceDate, formattedDate);
|
|
51
51
|
```
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
---
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
## All UI Technologies
|
|
56
56
|
|
|
57
|
-
|
|
58
|
-
|---------|--------------|
|
|
59
|
-
| **Native `<select>`** (real HTML `<select>` / `<option>`) | `SelectItem`, passing the option text. Deterministic. |
|
|
60
|
-
| **Custom dropdown** (div/`<ul>`/`<li>`/ARIA hierarchy that only *looks* like a dropdown — no `<select>` tag) | `SelectItem` fails. Click to open, then `Click` the option element (capture both as OR targets). Use `TypeInto` for type-ahead / filter combos. |
|
|
57
|
+
Patterns that apply to any captured control regardless of UI stack (web, desktop, Java, etc.).
|
|
61
58
|
|
|
62
|
-
|
|
59
|
+
### Dropdowns, lists, and comboboxes
|
|
63
60
|
|
|
64
|
-
|
|
61
|
+
Whether `SelectItem` (`NSelectItem`) can drive a control does **not** depend on its UI technology,
|
|
62
|
+
tag, or role — a native HTML `<select>`, a WinForms/WPF combo box, a Java list, a SAP dropdown, and
|
|
63
|
+
a div/ARIA combobox are all candidates. **Don't classify it from the captured selector — query the
|
|
64
|
+
control's `items` attribute for its selectable options** (the read verb is in
|
|
65
|
+
`{PROJECT_DIR}/.local/docs/packages/UiPath.UIAutomation.Activities/references/cli-reference.md`):
|
|
65
66
|
|
|
66
|
-
|
|
67
|
+
- **`items` lists options** → the control is selectable; `SelectItem` will drive it — pass one of the
|
|
68
|
+
listed values. No need to capture the individual option elements or open the list first.
|
|
69
|
+
- **`items` empty/absent** → not a real option-list control. Fall back to click-to-open + click the
|
|
70
|
+
option (capture both as OR targets), or `TypeInto` for type-ahead / filter combos.
|
|
67
71
|
|
|
68
|
-
|
|
72
|
+
Read the `items` attribute to learn the valid values, and the `selecteditem` / `selecteditems`
|
|
73
|
+
attribute to confirm the result after selecting (the cli-reference above shows how to read them).
|
|
74
|
+
|
|
75
|
+
The rule is general: verified against a control with no native `<select>` (a Lightning picklist
|
|
76
|
+
rendered as a `role="combobox"` button) and applies identically to desktop, Java, and SAP option
|
|
77
|
+
lists — so an option-list control needs **no option-element capture at all**.
|
|
69
78
|
|
|
70
79
|
### Buttons disabled during async operations
|
|
71
80
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# UiAutomation Prerequisites
|
|
2
2
|
|
|
3
3
|
**Required package:** `UiPath.UIAutomation.Activities`
|
|
4
|
-
**Minimum version (`<MIN_VERSION>`):** `26.
|
|
5
|
-
**Source feed:** the official UiPath NuGet feed — the same feed Studio resolves by default.
|
|
4
|
+
**Minimum version (`<MIN_VERSION>`):** `26.4.1-preview`
|
|
5
|
+
**Source feed:** the official UiPath NuGet feed — the same feed Studio resolves by default. Prerelease / preview builds of `UiPath.UIAutomation.Activities` are published there alongside stable releases. Installing them is a normal supported path, not a third-party workaround.
|
|
6
6
|
|
|
7
|
-
> **
|
|
7
|
+
> **Prerelease required.** `<MIN_VERSION>` is a preview — stable releases of `UiPath.UIAutomation.Activities` do NOT yet ship the `uia-configure-target` skill content. Install the prerelease build explicitly. `uip rpa packages versions` MUST be invoked with `--include-prerelease` (the flag defaults to `false`), otherwise the required preview is filtered out of the listing and the agent will report "no upgrade available" against a feed that actually has it.
|
|
8
8
|
|
|
9
9
|
The `uip rpa uia` CLI used by `uia-configure-target` requires `UiPath.UIAutomation.Activities` at `<MIN_VERSION>` or newer. Before configuring any target, check the installed version in `project.json` under `dependencies`.
|
|
10
10
|
|
|
@@ -17,10 +17,10 @@ Never upgrade UIA silently. Every upgrade requires explicit user consent before
|
|
|
17
17
|
|
|
18
18
|
| Scenario | Behavior |
|
|
19
19
|
|---|---|
|
|
20
|
-
| No UIA installed, request needs UIA | Ask before installing `<MIN_VERSION
|
|
20
|
+
| No UIA installed, request needs UIA | Ask before installing `<MIN_VERSION>`. Disclose that it is a prerelease build from the official UiPath feed. |
|
|
21
21
|
| Major-version upgrade (e.g. `25.x` → `26.x`) | Ask. Note that breaking changes are possible across major versions. |
|
|
22
|
-
| Minor-version upgrade (e.g. `26.
|
|
23
|
-
| Patch / build upgrade within the
|
|
22
|
+
| Minor-version upgrade (e.g. `26.3.x` → `26.4.x`) | Ask. Note that the minimum required for `uia-configure-target` is a preview. |
|
|
23
|
+
| Patch / build upgrade within the preview band | Ask before installing the newer preview build. |
|
|
24
24
|
| Already at or above `<MIN_VERSION>` | Proceed without prompting. |
|
|
25
25
|
|
|
26
26
|
If the user declines, do NOT install. Warn that `uip rpa uia` commands will fail without UIA at `<MIN_VERSION>` and fall back to indication authoring — [uia-configure-target-workflows.md](uia-configure-target-workflows.md) MUST be read IN FULL first (see § Indication Fallback). Record `UI capture: indication-only` in the plan header so downstream tasks do not route to `uia-configure-target`.
|
|
@@ -39,4 +39,4 @@ Install / upgrade (mutating — only after consent per the table above; substitu
|
|
|
39
39
|
uip rpa packages install --packages 'id=UiPath.UIAutomation.Activities,version=<MIN_VERSION>' --project-dir "$PROJECT_DIR" --output json
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
-
`packages install`
|
|
42
|
+
`packages install` accepts the beta version directly via the `version` field — no separate prerelease flag is needed once the version string is specified explicitly.
|
|
@@ -48,7 +48,7 @@ PHASE 2 — build-clean (per-project, once per edit session):
|
|
|
48
48
|
3. EXIT to Smoke Test
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
**Why both phases.** `validate` is static analysis: catches structural XAML, missing references, analyzer rules, schema violations. `build` is the compiler: catches **unknown member names** (e.g. `NGetText.Value` when the
|
|
51
|
+
**Why both phases.** `validate` is static analysis: catches structural XAML, missing references, analyzer rules, schema violations. `build` is the compiler: catches **unknown member names** (e.g. `NGetText.Value` when the output member is `TextString` (or legacy `Text`)), **invalid enum values** (e.g. `Operator="StartsWith"` when the enum has no such member), **member resolution / CacheMetadata failures**, and attribute-form C# expression JIT failures. `validate` returns "no diagnostics found" for these; `build` flags them at compile time. Per-file `validate` plus one end-of-session `build` covers both error classes — trusting only `validate` ships broken workflows.
|
|
52
52
|
|
|
53
53
|
**Target the specific file:** `validate --file-path` validates only the file you changed (faster than whole-project). `build` is project-scoped (no `--file-path`); when it errors, the output names the offending file — re-run `validate --file-path` on it as part of Phase 2's fix loop.
|
|
54
54
|
|
|
@@ -78,7 +78,7 @@ uip rpa build "<PROJECT_DIR>" --log-level Warn --output json
|
|
|
78
78
|
|
|
79
79
|
| Error class | Example | Why `validate` misses it |
|
|
80
80
|
|-------------|---------|----------------------------|
|
|
81
|
-
| Unknown member name | `<uix:NGetText Value="[x]" />` (correct: `
|
|
81
|
+
| Unknown member name | `<uix:NGetText Value="[x]" />` (correct: `TextString`) | `validate` does not resolve property names against activity assemblies |
|
|
82
82
|
| Invalid enum value | `Operator="StartsWith"` on `VerifyExpressionWithOperator` (enum has no such member) | Enum membership is checked at CacheMetadata / compile time, not static parse |
|
|
83
83
|
| CacheMetadata / member resolution | Required-extension misses, type-mismatch on `InArgument<T>` | Surfaces only when the runtime instantiates the activity |
|
|
84
84
|
| Attribute-form C# expressions | `Value="x + y"` in `expressionLanguage: CSharp` projects | JIT compiler needs the expression in element form — see [xaml/csharp-expression-pitfalls.md](xaml/csharp-expression-pitfalls.md) |
|
|
@@ -610,6 +610,10 @@ Activity properties typed as enums (e.g. `Operator`, `ClickType`, `KeyModifiers`
|
|
|
610
610
|
|
|
611
611
|
**Prevention:** When using `uip rpa activities get-default-xaml`, the output matches the currently installed package version. Never copy XAML snippets from projects using different package versions.
|
|
612
612
|
|
|
613
|
+
## UIA `N*` Activities Carry a `Version` — Never Strip It
|
|
614
|
+
|
|
615
|
+
Every UIA `N*` activity carries a `Version` attribute in its `uip rpa activities get-default-xaml` starter (e.g. `NGetText Version="V5"`, `NApplicationCard Version="V2"`). Dropping it survives BOTH `validate` and `build` and fails only at runtime with `System.InvalidOperationException ... ThrowIfNotInTree` on the activity's argument bindings. Carry over **every** attribute the starter emits. See [csharp-expression-pitfalls.md § `ThrowIfNotInTree` at runtime](csharp-expression-pitfalls.md).
|
|
616
|
+
|
|
613
617
|
## Expression Language Mismatch
|
|
614
618
|
|
|
615
619
|
Every XAML file must use the same expression language as the project (`expressionLanguage` in `project.json`).
|
|
@@ -69,7 +69,9 @@ Which properties exist on a given activity, the `<Activity>.md` lookup order, an
|
|
|
69
69
|
</uix:NGetText>
|
|
70
70
|
```
|
|
71
71
|
|
|
72
|
-
**
|
|
72
|
+
**Author new Get Text activities with `TextString`** (the typed, current-designer property shown above). **When editing an existing workflow,** note that older ones may bind the output to the legacy non-generic `Text` `OutArgument` (`<uix:NGetText.Text>`) instead — both `Text` and `TextString` are real, functional members (the activity writes the scraped text to both at runtime), so a working `Text` binding is valid and should be left as-is, not rewritten to `TextString`. Only `Value` is a genuine unknown member.
|
|
73
|
+
|
|
74
|
+
**Scoping requirement:** when `NGetText` sits inside `<uix:NApplicationCard.Body><ActivityAction><Sequence>`, the `statusText` variable must be declared on that inner `Sequence.Variables`, not on an outer one crossing the `ActivityAction` boundary — otherwise runtime throws `ThrowIfNotInTree`. See [csharp-expression-pitfalls.md](csharp-expression-pitfalls.md#throwifnotintree-at-runtime--two-causes).
|
|
73
75
|
|
|
74
76
|
### Assign with a C# expression
|
|
75
77
|
|
|
@@ -23,9 +23,9 @@ ExpressionToCompile { Code = "logMessage" ... } should have been compiled by the
|
|
|
23
23
|
|
|
24
24
|
`<uix:NGetText TextString="statusText"/>` raises `Failed to create a 'TextString' from the text 'statusText'` — `TextString` is `OutArgument<String>`, not a plain property, so the XAML parser has no converter for it. Always use the `<OutArgument>` + `<CSharpReference>` child form for output bindings.
|
|
25
25
|
|
|
26
|
-
## `ThrowIfNotInTree`
|
|
26
|
+
## `ThrowIfNotInTree` at runtime — two causes
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
Same runtime stack, two distinct root causes:
|
|
29
29
|
|
|
30
30
|
```
|
|
31
31
|
System.InvalidOperationException: The argument of type 'System.String' cannot be used.
|
|
@@ -33,6 +33,11 @@ Make sure that it is declared on an activity.
|
|
|
33
33
|
at System.Activities.Argument.ThrowIfNotInTree()
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
**
|
|
36
|
+
**Cause 1 — variable declared outside the `ActivityAction` scope.** `OutArgument<T>` + `<CSharpReference>` bound to a variable declared on a `Sequence` **outside** the `ActivityAction` body passes validation but throws at runtime.
|
|
37
37
|
|
|
38
|
-
**
|
|
38
|
+
- **Typical case:** a UI activity inside `<uix:NApplicationCard.Body><ActivityAction><Sequence>` writes an output to a variable declared on the *outer* `Sequence` rather than the inner one.
|
|
39
|
+
- **Fix:** declare the variable on the `Sequence.Variables` immediately inside the `ActivityAction`, not on a parent `Sequence` outside it.
|
|
40
|
+
|
|
41
|
+
**Cause 2 — UIA activity authored without its `Version` attribute.** A UIA activity missing the `Version` its `activities get-default-xaml` starter emits (e.g. `NGetText` without `Version="V5"`) throws `ThrowIfNotInTree` at runtime on its argument bindings even when variable scoping is correct. This passes BOTH `validate` AND `build` clean — it surfaces only at run.
|
|
42
|
+
|
|
43
|
+
- **Diagnosis rule:** when scoping is verified correct, diff the authored activity against its `uip rpa activities get-default-xaml` starter and restore any missing attributes — the starter's `Version` in particular. Never strip an attribute the starter emits.
|
|
@@ -47,7 +47,7 @@ Analyze:
|
|
|
47
47
|
|
|
48
48
|
### Step 1.2: Discover Activity Documentation (Primary Source)
|
|
49
49
|
|
|
50
|
-
**This is the most important discovery step. Read `<Activity>.md` BEFORE `activities get-default-xaml`, every time, even for activities that look simple.** Installed activity packages ship structured markdown at `{projectRoot}/.local/docs/packages/{PackageId}/activities/<Activity>.md`. The doc is the property surface; the CLI starter is not. `activities get-default-xaml` strips every property at its type default — for `NGetText` that means **all** output properties are absent from the starter, and authoring from the starter produces `NGetText.Value="..."` instead of `NGetText.
|
|
50
|
+
**This is the most important discovery step. Read `<Activity>.md` BEFORE `activities get-default-xaml`, every time, even for activities that look simple.** Installed activity packages ship structured markdown at `{projectRoot}/.local/docs/packages/{PackageId}/activities/<Activity>.md`. The doc is the property surface; the CLI starter is not. `activities get-default-xaml` strips every property at its type default — for `NGetText` that means **all** output properties are absent from the starter, and authoring from the starter produces `NGetText.Value="..."` instead of the real output member `NGetText.TextString`. `validate` does not catch the wrong member name; only `build` does, after a wasted round-trip.
|
|
51
51
|
|
|
52
52
|
**Availability:** Docs exist only for **installed packages** and typically only for **newer package versions**. When the package is not installed, install it first. When docs are missing, update to the latest version, or fall back to `skills/uipath-rpa/references/activity-docs/<PackageId>/<closest-version>/`.
|
|
53
53
|
|
|
@@ -203,7 +203,7 @@ Edit: file_path=... old_string=<exact text> new_string=<modified text>
|
|
|
203
203
|
|
|
204
204
|
### Step 3.1: Check for Errors
|
|
205
205
|
|
|
206
|
-
Run both validators per iteration. `validate` catches structural / reference / analyzer issues; `build` catches member-name and enum-value mistakes that `validate` misses (e.g. `NGetText.Value` when the property is `
|
|
206
|
+
Run both validators per iteration. `validate` catches structural / reference / analyzer issues; `build` catches member-name and enum-value mistakes that `validate` misses (e.g. `NGetText.Value` when the property is `TextString`, `Operator="StartsWith"` when the enum has no such member). See [../validation-guide.md § Validation Iteration Loop](../validation-guide.md#validation-iteration-loop) for the canonical loop.
|
|
207
207
|
|
|
208
208
|
```bash
|
|
209
209
|
uip rpa validate --file-path "Workflows/MyWorkflow.xaml" --output json
|
|
@@ -236,7 +236,7 @@ Never construct activity XAML from memory. Two sources, in this order:
|
|
|
236
236
|
2. **Fallback:** `skills/uipath-rpa/references/activity-docs/<PackageId>/<closest-version>/<Activity>.md` — bundled reference set covering the major UiPath packages. Use this when `.local/docs` is empty for that package (older versions don't ship per-activity docs) or when no project directory is in scope yet. Pick the version folder closest to the installed version.
|
|
237
237
|
3. **Neither exists:** the package is third-party or unusual. Document this in your output, fall back to `activities find` + `activities get-default-xaml` alone, and warn the user that the property surface may be incomplete.
|
|
238
238
|
|
|
239
|
-
> **Skip-tax.** `activities get-default-xaml` omits any property whose value equals the type default (`null`, `0`, `false`, unset). For `NTypeInto`: 2 of 20 properties. For `NClick`: ~3 of ~15. For `NGetText`: every output property — the starter is literally `<uix:NGetText HealingAgentBehavior="SameAsCard" />`, with no
|
|
239
|
+
> **Skip-tax.** `activities get-default-xaml` omits any property whose value equals the type default (`null`, `0`, `false`, unset). For `NTypeInto`: 2 of 20 properties. For `NClick`: ~3 of ~15. For `NGetText`: every output property — the starter is literally `<uix:NGetText HealingAgentBehavior="SameAsCard" />`, with no output member visible. Authoring from this starter alone is how `NGetText.Value="..."` gets written — `Value` does not exist on that activity, so `validate` accepts it as static-clean and `build` finally rejects it as an unknown member. The starter looks complete; it isn't. The MD read is the only way you learn which properties actually exist (`TextString`, `ClickType`, `KeyModifiers`, `WaitForReady`, `EmptyFieldMode`, etc.). **When authoring a new Get Text, bind the output to `TextString`** (`OutArgument<string>`) — the typed member the current designer surfaces. But `NGetText` declares **two** real output members: `TextString` and a legacy non-generic `Text` `OutArgument` (backwards-compat — the activity writes the scraped text to both at runtime, and the designer hides whichever the installed version does not use). So a `Text="..."` binding in an existing or older workflow is valid and must not be flagged or "corrected" — only `Value` is a genuine unknown member.
|
|
240
240
|
|
|
241
241
|
**Workflow — each step depends on the previous step's output:**
|
|
242
242
|
|
|
@@ -53,7 +53,7 @@ All other `solution` subcommands (`pack`, `publish`, `deploy activate/status/uni
|
|
|
53
53
|
6. **Run `uip solution resources refresh` before `pack` or `upload`.** Bundled artefact files and `userProfile/<userId>/debug_overwrites.json` must reflect current cloud state. Skipping refresh ships stale bindings.
|
|
54
54
|
7. **Coded apps are NOT registered in `.uipx`.** `uip solution project add` does not apply to coded-app directories; they deploy independently via `uip codedapp publish / deploy`. A coded app folder can sit alongside a solution but is not part of its manifest.
|
|
55
55
|
8. **Verify the artifact after every CLI mutation.** Read `project.json`, `.uipx`, or `uip solution deploy status` output — exit codes lie. Verification is additional; it does not replace requested read-only list commands. If the user asks to show or list registered projects, solution resources, packages, deployments, or statuses, run the matching `uip solution ... list/status --output json` command and then inspect files only as a secondary sanity check.
|
|
56
|
-
9. **For multi-environment promotion,
|
|
56
|
+
9. **For multi-environment promotion, switch tenants with `uip login tenant set <tenant>` and pass a per-environment deploy config via `--config-file <path>`.** The same packed `.uipx` deploys to dev/staging/prod — the environment differs by the target tenant and the config file (generated with `deploy config get`, edited with `config set` / `config link`), not by a different package. There is no `-c <CONFIG_KEY>` flag.
|
|
57
57
|
|
|
58
58
|
## Workflow
|
|
59
59
|
|
|
@@ -61,7 +61,7 @@ The typical lifecycle for a UiPath Solution:
|
|
|
61
61
|
|
|
62
62
|
```
|
|
63
63
|
1. init / project add → Create solution, register projects (.uipx + resources/solution_folder/)
|
|
64
|
-
2.
|
|
64
|
+
2. resources refresh → Sync bundled artefacts and debug overwrites with cloud state
|
|
65
65
|
3. (optional) restore → Resolve NuGet deps in place (incl. authenticated Orchestrator feeds); login first
|
|
66
66
|
4. pack → Produce deployable .zip package
|
|
67
67
|
5. login → uip login (if not already authenticated)
|
|
@@ -87,7 +87,7 @@ This skill is the terminal step of an SDD-driven build: after `uipath-planner` p
|
|
|
87
87
|
| File | Purpose |
|
|
88
88
|
|------|---------|
|
|
89
89
|
| [Solution Overview](references/solution-overview.md) | What a Solution is, `.uipx` manifest, file structure, lifecycle diagram, command tree |
|
|
90
|
-
| [Develop a Solution](references/develop-solution.md) | `uip solution init / project add / import / remove /
|
|
90
|
+
| [Develop a Solution](references/develop-solution.md) | `uip solution init / project add / import / remove / resources refresh / resources add / resources remove / resources edit`; field-tested gotchas |
|
|
91
91
|
| [Pack and Deploy](references/pack-and-deploy.md) | `restore / pack / publish / deploy run`, deploy configs, CI/CD pipeline patterns |
|
|
92
92
|
| [Activate and Manage](references/activate-and-manage.md) | `deploy activate / status / uninstall`, environment management |
|
|
93
93
|
| [Scenarios Index](references/scenarios.md) | Failure modes and edge cases — manual edits, shared resources, virtual resources, name collisions |
|
|
@@ -98,6 +98,6 @@ This skill is the terminal step of an SDD-driven build: after `uipath-planner` p
|
|
|
98
98
|
2. **Editing `resources/solution_folder/` directly.** It is auto-generated and auto-cleaned. Manual edits desync from `.uipx`. Use `uip solution project add/remove` instead.
|
|
99
99
|
3. **Skipping `uip solution resources refresh` before `pack` or `upload`.** Ships stale bindings and debug-overwrite state.
|
|
100
100
|
4. **Adding a coded-app directory via `uip solution project add`.** Coded apps have no `project.uiproj` / `project.json` and are not packed by `uip solution pack`. Deploy them independently via `uip codedapp publish / deploy`.
|
|
101
|
-
5. **Creating a new `.uipx` per environment instead of using deploy configs.** One solution
|
|
101
|
+
5. **Creating a new `.uipx` per environment instead of using deploy configs.** One packed solution promotes to dev/staging/prod via a per-environment `--config-file` (and `uip login tenant set` to target the tenant). Different `.uipx` files per environment defeats version tracking.
|
|
102
102
|
6. **Using `uip solution upload` (Studio Web) as a deployment path.** Upload is for browser-based debugging only — it does not produce a published package and cannot be promoted via `deploy run`. Use `pack` → `publish` → `deploy run` for real deploys. `upload` also lands the solution in Studio Web's **Cloud workspace** tab — not the Local tab; SW's Local tab is a separate registration not addressable by `uip solution`.
|
|
103
103
|
7. **Trusting exit codes alone after a mutation.** Always read the artefact (`project.json`, `.uipx`, deploy status) — a non-zero exit may indicate partial state and a zero exit can mask warnings.
|
|
@@ -90,17 +90,22 @@ uip solution packages list --output json
|
|
|
90
90
|
|
|
91
91
|
# Paginate and sort
|
|
92
92
|
uip solution packages list --limit 20 --sort-by "Name" --sort-order "Ascending" --output json
|
|
93
|
+
uip solution packages list --limit 50 --offset 50 --output json # page 2
|
|
93
94
|
|
|
94
|
-
# Filter by name (server-side substring match on the package name)
|
|
95
|
+
# Filter by name (server-side substring match on the package name, case-insensitive)
|
|
95
96
|
uip solution packages list --name "Invoice" --output json
|
|
96
97
|
```
|
|
97
98
|
|
|
98
99
|
| Option | Description | Default |
|
|
99
100
|
|--------|-------------|---------|
|
|
100
101
|
| `--limit <n>` | Number of results to return | 50 |
|
|
102
|
+
| `--offset <n>` | Number of results to skip (page start) | 0 |
|
|
103
|
+
| `--name <pattern>` | Server-side substring match on the package name | -- |
|
|
101
104
|
| `--sort-by <field>` | Sort field | -- |
|
|
102
105
|
| `--sort-order <dir>` | `Ascending` or `Descending` | -- |
|
|
103
106
|
|
|
107
|
+
The response's `Pagination` block reports `Total` (all matches on the server) and `HasMore`. If `HasMore` is `true`, re-run with `--offset <previous offset + Returned>` to fetch the next page — a package missing from the first page is not necessarily absent. The list is tenant-scoped: packages published on another tenant of the same organization do not appear; check the active tenant with `uip login status`.
|
|
108
|
+
|
|
104
109
|
## Step 5: Download a Package Version
|
|
105
110
|
|
|
106
111
|
Download a published solution package .zip from the solution feed:
|
|
@@ -243,7 +243,7 @@ uip solution resources add --source remote --kind Queue --name InvoiceQueue \
|
|
|
243
243
|
| `--source <source>` | `local`, `remote` | **required** |
|
|
244
244
|
| `--kind <kind>` | Any kind RCS indexes (e.g. Queue, Asset, Bucket, Process, Connection, App, Index, Trigger). Case-insensitive lookup; trimmed and lowerFirstChar-applied before persistence | **required** |
|
|
245
245
|
| `--name <name>` | Resource name (max 256 chars; path separators, control chars, and `: * ? " < > |` are rejected). Per-kind Orchestrator limits are stricter — queues cap at 50 | **required** |
|
|
246
|
-
| `--type <type>` | Resource subtype (e.g. `Text`/`Bool`/`Integer` for Asset, connector type for Connection) | None |
|
|
246
|
+
| `--type <type>` | Resource subtype (e.g. `Text`/`Bool`/`Integer` for Asset, connector type for Connection). On `--source remote` it is inferred from the matched resource when omitted; pass it only to override | None |
|
|
247
247
|
| `--folder-path <path>` | Orchestrator folder for remote lookup. **Not valid with `--source local`** — virtual stubs live under the solution folder | None |
|
|
248
248
|
| `--cloud-key <guid>` | Skip RCS search, import this exact resource key. Only valid with `--source remote`; must be a GUID | None |
|
|
249
249
|
| `--solution-folder <path>` | Path to solution root (must directly contain a `.uipx`) | Current working directory |
|
|
@@ -272,17 +272,36 @@ uip solution resources add --source remote --kind Queue --name InvoiceQueue \
|
|
|
272
272
|
|
|
273
273
|
### Ambiguous remote match
|
|
274
274
|
|
|
275
|
-
When `--source remote` is given without `--cloud-key` and the RCS search returns multiple resources with the same `(kind, name)
|
|
275
|
+
When `--source remote` is given without `--cloud-key` and the RCS search returns multiple resources with the same `(kind, name)`, `add` does **not** guess — it emits a structured error listing every candidate (with its folder, subtype, and key) inline so an agent can re-call without a separate `resources list`:
|
|
276
276
|
|
|
277
277
|
```json
|
|
278
278
|
{
|
|
279
279
|
"Result": "Failure",
|
|
280
|
-
"Message": "Ambiguous match:
|
|
281
|
-
"Instructions": "Candidates (
|
|
280
|
+
"Message": "Ambiguous match: 2 remote resources matching kind=connection name=orders@example.com",
|
|
281
|
+
"Instructions": "Candidates (disambiguate with --cloud-key <key>; --folder-path only helps when they are in different folders):\n - Folder=Shared Type=uipath-google-gmail Key=8f3a1b2c-...\n - Folder=Shared Type=uipath-google-drive Key=21a07d4e-..."
|
|
282
282
|
}
|
|
283
283
|
```
|
|
284
284
|
|
|
285
|
-
|
|
285
|
+
Two cases produce this:
|
|
286
|
+
|
|
287
|
+
- **Same name across different folders** — resolve with `--folder-path <one-of-the-candidates>` *or* `--cloud-key <one-of-the-keys>`.
|
|
288
|
+
- **Same name *and* folder, different subtype** (e.g. a `uipath-google-gmail` and a `uipath-google-drive` connection both named `orders@example.com` in the same folder). `--folder-path` can't separate these — only `--cloud-key` will. The `Type` column in each candidate tells them apart.
|
|
289
|
+
|
|
290
|
+
### `--cloud-key` that can't be resolved
|
|
291
|
+
|
|
292
|
+
`--cloud-key` skips the name search and looks the resource up by key to recover its source folder (the folder context is required — without it the deploy-time FPS export of connection/app resources fails). If the key resolves to nothing — wrong key, a resource not visible to your user, or (when `--folder-path` is also given) a resource that isn't in that folder — `add` fails clearly instead of importing a folderless resource:
|
|
293
|
+
|
|
294
|
+
```json
|
|
295
|
+
{
|
|
296
|
+
"Result": "Failure",
|
|
297
|
+
"Message": "No remote resource found with key 8f3a1b2c-... in folder \"Sales/CRM\"",
|
|
298
|
+
"Instructions": "Verify the key via 'uip solution resources list --source remote' (and that --folder-path, if given, matches the resource's folder)."
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
Distinguish this from a **transient lookup failure**: if the Orchestrator search itself errors (RCS/API outage), `add` reports a separate `"Failed to look up the resource in Orchestrator by key"` instead of the not-found message above. Treat that one as retry-able; treat `"No remote resource found with key …"` as a key/folder to fix.
|
|
303
|
+
|
|
304
|
+
An *already-imported* key is not an error — the idempotency check runs first, so re-adding it returns `Status: "Unchanged"`. On a successful by-key import the resource's subtype is taken from the match automatically (same as the name-search path), so `--type` is only needed to override it.
|
|
286
305
|
|
|
287
306
|
### How it relates to `refresh`
|
|
288
307
|
|
|
@@ -91,7 +91,7 @@ uip solution upload ./MySolution --output json
|
|
|
91
91
|
|
|
92
92
|
This uploads to Studio Web for collaborative editing. It does **not** place the package on the solution feed and cannot be used with `deploy run`. If the `SolutionId` in `.uipx` already exists in Studio Web, `upload` refuses unless `--force` is passed (forcing replaces the cloud project in place and wipes its Studio Web version history).
|
|
93
93
|
|
|
94
|
-
`upload` always lands the solution in Studio Web's **Cloud workspace** tab, not the Local tab. SW's Local tab is a separate registration for solutions whose source of truth is a tracked local folder — populated by SW-initiated flows (creating a solution from the SW UI, or downloading a cloud solution to local) or by Studio Desktop signing into the same tenant. `uip solution upload` does not address the Local tab. Authoring with `uip solution
|
|
94
|
+
`upload` always lands the solution in Studio Web's **Cloud workspace** tab, not the Local tab. SW's Local tab is a separate registration for solutions whose source of truth is a tracked local folder — populated by SW-initiated flows (creating a solution from the SW UI, or downloading a cloud solution to local) or by Studio Desktop signing into the same tenant. `uip solution upload` does not address the Local tab. Authoring with `uip solution init` then `upload` produces a Cloud-tab solution; the local folder on disk has no live link to either tab afterward — edits in one place do not propagate to the other without a re-upload (Cloud) or a download (Local).
|
|
95
95
|
|
|
96
96
|
## Step 4: Deploy to Orchestrator
|
|
97
97
|
|
|
@@ -143,9 +143,12 @@ The CLI also falls back to the persistent `searchSearchDeployments22` record if
|
|
|
143
143
|
```bash
|
|
144
144
|
uip solution deploy list --output json
|
|
145
145
|
uip solution deploy list --folder-path "Shared" --limit 20 --sort-by "Name" --sort-order "Ascending" --output json
|
|
146
|
+
uip solution deploy list --limit 50 --offset 50 --output json # page 2
|
|
146
147
|
```
|
|
147
148
|
|
|
148
|
-
Options: `--folder-path`, `--limit` (default 50), `--sort-by`, `--sort-order` (`Ascending`/`Descending`).
|
|
149
|
+
Options: `--folder-path`, `--limit` (default 50), `--offset` (default 0), `--sort-by`, `--sort-order` (`Ascending`/`Descending`).
|
|
150
|
+
|
|
151
|
+
The response's `Pagination` block reports `Total` and `HasMore`; when `HasMore` is `true`, fetch the next page with `--offset`. Note that `--folder-path` filters client-side after the fetch, so with that flag `Returned` counts the filtered rows while `Offset`/`Total` stay server-side — page with `--offset` first, then filter.
|
|
149
152
|
|
|
150
153
|
---
|
|
151
154
|
|
|
@@ -64,7 +64,7 @@ Open the file. The shape is roughly:
|
|
|
64
64
|
| `resource.runtimeDependencies` | Recomputed at every pack — manual edits lost on next pack |
|
|
65
65
|
| `resource.files`, `resource.locks` | Managed; never appear in user-edit scenarios |
|
|
66
66
|
| `resource.folders` | Moves the resource. For a *cloud-imported* resource the folder is `solution_folder` (placeholder) — editing it doesn't change cloud location, only confuses sync. For a *virtual* resource that you authored at a non-`solution_folder` folder, edit at the binding (`bindings_v2.json`) and let refresh re-create — don't edit the resource file directly |
|
|
67
|
-
| `resource.spec.<reference-fields>` | E.g. `storageBucketReference`, `retentionBucketRef`. The SDK rewrites these when the target's link state changes; hand-edits get clobbered. (
|
|
67
|
+
| `resource.spec.<reference-fields>` | E.g. `storageBucketReference`, `retentionBucketRef`. The SDK rewrites these when the target's link state changes; hand-edits get clobbered. (Also see [SOL-7051](https://uipath.atlassian.net/browse/SOL-7051) — the rewrite isn't always applied automatically; that's a known bug, not a license to hand-edit dependents arbitrarily) |
|
|
68
68
|
|
|
69
69
|
### Examples — safe edits
|
|
70
70
|
|
|
@@ -123,7 +123,7 @@ Same principle, looser rules. The deploy config is **per-deployment**, not per-s
|
|
|
123
123
|
|
|
124
124
|
**Manual editing of the deploy config is not ideal** — there's no schema validation in the CLI, and a bad edit fails server-side at `deploy run` (often with a generic `ValidationFailed`). But it's the pragmatic escape hatch when:
|
|
125
125
|
|
|
126
|
-
- You need to set a nested property `config set` doesn't expose (e.g. `configuration.storageBucketReference.key` to work around
|
|
126
|
+
- You need to set a nested property `config set` doesn't expose (e.g. `configuration.storageBucketReference.key` to work around [SOL-7051](https://uipath.atlassian.net/browse/SOL-7051)).
|
|
127
127
|
- You're scripting a config transform (CI step injecting per-environment secrets, etc.) and want a single JSON-patch step instead of N CLI calls.
|
|
128
128
|
- The CLI surface is missing a flag for the field you need.
|
|
129
129
|
|
|
@@ -51,7 +51,7 @@ MySolution/
|
|
|
51
51
|
```mermaid
|
|
52
52
|
graph LR
|
|
53
53
|
A[init] --> B[project add]
|
|
54
|
-
B --> C[
|
|
54
|
+
B --> C[resources refresh]
|
|
55
55
|
C --> D[pack]
|
|
56
56
|
D --> E[publish]
|
|
57
57
|
E --> F["deploy run<br/>(auto-activate by default)"]
|
|
@@ -63,7 +63,7 @@ Two distinct distribution paths from the same solution source:
|
|
|
63
63
|
- **`pack` → `publish` → `deploy run`** — promotes a versioned package to Orchestrator.
|
|
64
64
|
- **`upload`** — pushes the solution to Studio Web for browser-based debugging only. Does not produce a published package and cannot be deployed via `deploy run`.
|
|
65
65
|
|
|
66
|
-
Always run `
|
|
66
|
+
Always run `resources refresh` before either path so the bundled artefact files and `userProfile/<userId>/debug_overwrites.json` reflect the current cloud state.
|
|
67
67
|
|
|
68
68
|
---
|
|
69
69
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: uipath-troubleshoot
|
|
3
|
-
description: "UiPath
|
|
4
|
-
when_to_use: "
|
|
3
|
+
description: "UiPath troubleshooting, diagnostics, and root-cause investigations across any UiPath product, feature, runtime, or artifact. Investigates errors, failures, faults, exceptions, regressions, performance problems, unexpected behavior, and silent malfunctions — answers why something failed, broke, stopped, hung, slowed down, returned wrong results, lost access, or stopped working after a change. Also diagnoses failures and faults in Integration Service connectors/connections, Office 365 / Outlook, Google Workspace (GSuite), Excel / Word / PDF activities, Computer Vision, databases / SQL, and HTTP / web activities — route here (not uipath-platform) when the intent is why it failed rather than operating the surface. Walks the available evidence (logs, traces, incidents, status fields, configuration, history) to identify the originating fault and explain what changed. For operating or CRUD on these surfaces→uipath-platform."
|
|
4
|
+
when_to_use: "User asks why something failed, broke, stopped, hung, was stuck, returns wrong results, or behaves unexpectedly in any UiPath system. Triggers: 'why did X fail', 'find the cause', 'find why', 'what changed', 'investigate', 'diagnose', 'debug this', 'triage', 'help me figure out', 'what's wrong', 'root cause', 'fix this error', 'inspect this trace / incident / log / job / instance', 'X worked yesterday but now …'. Also fires on raw error messages, exception stacks, error codes, job / queue IDs, or 'stuck / orphan / zombie' state descriptions."
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# UiPath Troubleshooting Agent
|
|
@@ -21,7 +21,7 @@ ALL phases. Never override.
|
|
|
21
21
|
7. **Live ≠ historical.** Current snapshots (machine status, licenses, connections) cannot prove what happened during incidents older than 24h — context only.
|
|
22
22
|
8. **Symptom ≠ cause.** A matching error string confirms the playbook *match*, not the *cause*. The §6 checklist gates every conclusion.
|
|
23
23
|
9. **No inference from undocumented fields.** Behavior not in a playbook or docsai result → flag as unverified, don't guess.
|
|
24
|
-
10. **Approval gate.** Diagnosis is autonomous;
|
|
24
|
+
10. **Approval gate.** Diagnosis is autonomous; **modifying user source files requires explicit approval via `AskUserQuestion`**. On decline or non-answer: do not edit. If AskUserQuestion is unavailable, present the proposed edit as text and stop.
|
|
25
25
|
11. **No ad-hoc code execution.** Playbook-provided diagnostic snippets are recommendations for the user unless the playbook says to run them. Shell for file I/O and uip is fine.
|
|
26
26
|
|
|
27
27
|
**Tools:** uip CLI (json by default in non-interactive mode). Documentation search: `uip docsai ask "<question>" --source docs` (product docs) or `--source technical_solution_articles` (support KB — known bugs, workarounds).
|
|
@@ -67,8 +67,6 @@ What to look for:
|
|
|
67
67
|
uip context-grounding ingest --index-name "<index-name>" --folder-path "<folder-path>" --output json
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
Ingestion is async: after `ingest`, poll `uip context-grounding retrieve --index-name "<index-name>" --folder-path "<folder-path>" --output json` until `last_ingestion_status` is `Successful` before searching — the index is not queryable earlier.
|
|
71
|
-
|
|
72
70
|
No agent republish needed — the runtime resolves by name.
|
|
73
71
|
|
|
74
72
|
**If the index exists but is in a different folder — re-link the agent:**
|
|
@@ -32,7 +32,7 @@ What to look for:
|
|
|
32
32
|
|
|
33
33
|
## Resolution
|
|
34
34
|
|
|
35
|
-
- **If Personal Automation quota exhausted:** request a license upgrade via
|
|
35
|
+
- **If Personal Automation quota exhausted:** request a license upgrade via [self-service license increase](https://uipath.atlassian.net/wiki/spaces/LIC/pages/2834596253), or wait for the monthly quota reset
|
|
36
36
|
- **If Agentic Units expired:** allocate AU from **Admin > Organization > Subscriptions** or contact the UiPath account manager
|
|
37
37
|
- **If recurring:** redesign the workflow to use a tenant-level Unattended robot instead of Personal Automation so quotas come from the shared pool
|
|
38
38
|
|
package/version-manifest.json
CHANGED