@uipath/skills 1.197.0 → 1.197.2
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/package.json +1 -1
- package/skills/uipath-ixp/SKILL.md +2 -2
- package/skills/uipath-ixp/references/label-documents-guide.md +1 -1
- package/skills/uipath-maestro-flow/references/author/references/editing-operations-json.md +1 -1
- package/skills/uipath-maestro-flow/references/shared/file-format.md +1 -1
- package/skills/uipath-platform/SKILL.md +10 -1
- package/skills/uipath-review/SKILL.md +21 -10
- package/skills/uipath-review/references/api-workflows/api-workflow-review-checklist.md +72 -0
- package/skills/uipath-review/references/bpmn/bpmn-review-checklist.md +92 -0
- package/skills/uipath-review/references/coded-apps/coded-app-review-checklist.md +16 -15
- package/skills/uipath-review/references/flows/flow-common-issues.md +1 -25
- package/skills/uipath-review/references/flows/flow-review-checklist.md +12 -67
- package/skills/uipath-review/references/rpa/long-running-workflow-issues.md +2 -2
- package/skills/uipath-review/references/rpa/modern-studio-issues.md +2 -2
- package/skills/uipath-review/references/rpa/rpa-common-issues.md +15 -59
- package/skills/uipath-review/references/rpa/rpa-review-checklist.md +17 -16
- package/skills/uipath-review/references/solution-review-guide.md +1 -1
- package/skills/uipath-rpa/SKILL.md +7 -8
- package/skills/uipath-rpa/references/cli-reference.md +7 -6
- package/skills/uipath-rpa/references/debugging.md +117 -56
- package/skills/uipath-rpa/references/environment-setup.md +2 -2
- package/skills/uipath-rpa/references/ui-automation-guide.md +12 -2
- package/skills/uipath-rpa/references/uia-prerequisites.md +7 -7
- package/skills/uipath-rpa/references/validation-guide.md +9 -12
- package/skills/uipath-solution/references/scenarios/manual-edits.md +2 -2
- package/skills/uipath-troubleshoot/SKILL.md +68 -137
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-action-failed-after-find.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-cell-targeting-failures.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-element-not-found.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-get-text-empty-or-wrong-result.md +2 -1
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-invalid-descriptor.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-scroll-search-failures.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/cv-activities/playbooks/cv-silent-failures-and-false-results.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/excel-activities/playbooks/delete-range-failures.md +2 -1
- package/skills/uipath-troubleshoot/references/activity-packages/gsuite-activities/investigation_guide.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/gsuite-activities/playbooks/connection-and-auth-failures.md +3 -1
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/investigation_guide.md +1 -0
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/authentication-token-invalid.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/o365-activities/playbooks/email-trigger-connection-event-failure.md +2 -2
- package/skills/uipath-troubleshoot/references/activity-packages/system-activities/playbooks/get-asset-activity-bug-silent-failure.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/application-not-found.md +2 -2
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/click-coordinate-off-screen.md +2 -2
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/selector-failure-healing-disabled.md +3 -3
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/selector-failure-healing-fix.md +3 -3
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/investigation_guide.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/word-activities/playbooks/replace-text-silent-no-substitution.md +2 -0
- package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/overview.md +26 -0
- package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/playbooks/app-request-trigger-connection-lost.md +40 -0
- package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/playbooks/handle-app-request-null-reference.md +34 -0
- package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/playbooks/initialize-hub-connection-aggregate-failure.md +40 -0
- package/skills/uipath-troubleshoot/references/activity-packages/workflowevents-activities/summary.md +9 -0
- package/skills/uipath-troubleshoot/references/escalation.md +98 -0
- package/skills/uipath-troubleshoot/references/investigation_guide.md +41 -1
- package/skills/uipath-troubleshoot/references/knowledge-base-guide.md +22 -24
- package/skills/uipath-troubleshoot/references/presenting.md +143 -0
- package/skills/uipath-troubleshoot/references/products/agents/playbooks/context-grounding-index-not-found.md +2 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/cns-error-codes-reference.md +91 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/dap-error-codes-reference.md +109 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/overview.md +9 -3
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/activity-configuration-corrupt.md +52 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connection-invalid.md +2 -2
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connection-not-resolved.md +47 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/connector-general-exception.md +2 -2
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-connection-not-authenticated.md +46 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-connection-not-found.md +53 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-connector-unavailable.md +48 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-dependency-unavailable.md +59 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-events-callback-failed.md +55 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-operation-conflict.md +41 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-permission-denied.md +54 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-solutions-install-failed.md +66 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/cs-trigger-operation-failed.md +48 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/http-client-exception.md +44 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/missing-required-input.md +38 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/request-failed.md +49 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/response-mapping-mismatch.md +43 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/token-refresh-failed.md +42 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/playbooks/trigger-execution-failed.md +47 -0
- package/skills/uipath-troubleshoot/references/products/integration-service/summary.md +43 -0
- package/skills/uipath-troubleshoot/references/products/maestro/investigation_guide.md +4 -4
- package/skills/uipath-troubleshoot/references/products/maestro/playbooks/personal-automation-quota.md +1 -1
- package/skills/uipath-troubleshoot/references/products/orchestrator/investigation_guide.md +13 -27
- package/skills/uipath-troubleshoot/references/products/orchestrator/playbooks/job-pending-stale-dispatch.md +2 -2
- package/skills/uipath-troubleshoot/references/runtime-exceptions/playbooks/argument-null-exception.md +1 -1
- package/skills/uipath-troubleshoot/references/summary.md +33 -12
- package/skills/uipath-troubleshoot/references/templates/playbook-template.md +1 -1
- package/version-manifest.json +1 -1
- package/skills/uipath-troubleshoot/agents/depth-verifier.md +0 -164
- package/skills/uipath-troubleshoot/agents/hypothesis-generator.md +0 -42
- package/skills/uipath-troubleshoot/agents/hypothesis-tester.md +0 -103
- package/skills/uipath-troubleshoot/agents/presenter.md +0 -160
- package/skills/uipath-troubleshoot/agents/scope-checker.md +0 -42
- package/skills/uipath-troubleshoot/agents/shared.md +0 -97
- package/skills/uipath-troubleshoot/agents/triage.md +0 -148
- package/skills/uipath-troubleshoot/schemas/evidence.schema.md +0 -118
- package/skills/uipath-troubleshoot/schemas/hypotheses.schema.md +0 -71
- package/skills/uipath-troubleshoot/schemas/scope-check.schema.md +0 -27
- package/skills/uipath-troubleshoot/schemas/state.schema.md +0 -145
|
@@ -6,15 +6,19 @@ This is a powerful complement to `validate` (static validation). While `validate
|
|
|
6
6
|
|
|
7
7
|
## Studio Desktop vs headless
|
|
8
8
|
|
|
9
|
-
Most debugging works on **headless Studio** with no Studio Desktop install: `run`, `debug start` (
|
|
9
|
+
Most debugging works on **headless Studio** with no Studio Desktop install: `run`, `debug start` (including **activity-targeted breakpoints via `--breakpoints`**), all stepping verbs (`debug step-over`, `debug step-into`, `debug step-out`), `debug continue`, `debug break`, `debug resume`, `debug continue-retry`, `debug continue-ignore`, `debug state`, `debug set-breakpoints`, `execution cancel`, `debug restart-from-top`.
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
On the headless backend, every debug command **returns at the next stable state** — paused at an activity, suspended on an exception, or completed — carrying `DebugState` / `DebugDetails` in the result, so you always learn where execution stands from the command's own response. See [The stable-state debug loop](#the-stable-state-debug-loop-headless).
|
|
12
|
+
|
|
13
|
+
**Studio Desktop is required** for any flow that targets the *focused* activity, because focusing goes through `uip rpa focus-activity` and only Studio Desktop has a designer to focus:
|
|
12
14
|
|
|
13
15
|
| Command | Why it needs Studio Desktop |
|
|
14
16
|
|---------|------------------------------|
|
|
15
|
-
| `debug test-activity` | Operates on the focused activity — requires `focus-activity` first |
|
|
16
|
-
| `debug start-from-here` | Operates on the focused activity — requires `focus-activity` first |
|
|
17
|
-
| `debug toggle-breakpoint`
|
|
17
|
+
| `debug test-activity` | Operates on the focused activity — requires `focus-activity` first. Headless rejects the command |
|
|
18
|
+
| `debug start-from-here` | Operates on the focused activity — requires `focus-activity` first. Headless rejects the command |
|
|
19
|
+
| `debug toggle-breakpoint` | Toggles on the focused activity/line — requires `focus-activity` first. Headless rejects the command; set headless breakpoints with `--breakpoints` on `debug start` (or `debug set-breakpoints` mid-session), which target activities by IdRef with no focusing step |
|
|
20
|
+
|
|
21
|
+
> **`focus-activity` on headless is a silent no-op** — it returns `success: true` but focuses nothing (there is no designer). Do NOT use it to "target" an activity for a headless debug flow and do not treat its success as confirmation: on headless, the focus-dependent verbs above fail with `Unknown command` regardless, and activity targeting goes through `--breakpoints` instead.
|
|
18
22
|
|
|
19
23
|
Before invoking any of the above, run `uip rpa studio start --project-dir "<PROJECT_DIR>" --output json` and ensure the project is open in Studio Desktop. See [environment-setup.md § Edge case: requiring Studio Desktop](environment-setup.md#edge-case-requiring-studio-desktop).
|
|
20
24
|
|
|
@@ -26,7 +30,7 @@ Before invoking any of the above, run `uip rpa studio start --project-dir "<PROJ
|
|
|
26
30
|
|
|
27
31
|
```bash
|
|
28
32
|
uip rpa run --file-path <relative-path> [--input-arguments key=value]... [--log-level <level>] [--skip-build] [--output json]
|
|
29
|
-
uip rpa debug start --file-path <relative-path> [--input-arguments key=value]... [--log-level <level>] [--skip-build] [--output json]
|
|
33
|
+
uip rpa debug start --file-path <relative-path> [--input-arguments key=value]... [--breakpoints item]... [--log-level <level>] [--skip-build] [--output json]
|
|
30
34
|
```
|
|
31
35
|
|
|
32
36
|
`debug test-activity` and `debug start-from-here` operate on the currently focused activity (no `--file-path`):
|
|
@@ -36,13 +40,15 @@ uip rpa debug test-activity [--input-arguments key=value]... [--input-variab
|
|
|
36
40
|
uip rpa debug start-from-here [--input-arguments key=value]... [--input-variables key=value]... [--log-level <level>] [--output json]
|
|
37
41
|
```
|
|
38
42
|
|
|
39
|
-
|
|
43
|
+
The mid-session verbs (`break`, `continue`, `resume`, `continue-retry`, `continue-ignore`, `step-into`, `step-over`, `step-out`, `state`) operate on the active debug session and take only the optional `--wait-timeout-seconds`. `debug set-breakpoints` takes `--breakpoints`. `debug toggle-breakpoint` and `debug restart-from-top` take no parameters.
|
|
40
44
|
|
|
41
45
|
| Parameter | Description |
|
|
42
46
|
|-----------|-------------|
|
|
43
47
|
| `--file-path` | Workflow file to run (relative to project root). Applies to `run` and `debug start` only |
|
|
44
48
|
| `--input-arguments` | Project-level input arguments as repeatable `key=value` pairs (`=` string, `:=` raw JSON; see [cli-reference.md § Passing structured inputs](cli-reference.md#passing-structured-inputs)). Only for `run`, `debug start`, `debug test-activity`, and `debug start-from-here` (see [Input Variables vs Input Arguments](#input-variables-vs-input-arguments)) |
|
|
45
49
|
| `--input-variables` | Workflow-level variable values as repeatable `key=value` pairs (values are VB/C# expressions — always `=`). Only for `debug test-activity` and `debug start-from-here` (see [Input Variables vs Input Arguments](#input-variables-vs-input-arguments)) |
|
|
50
|
+
| `--breakpoints` | Activity breakpoints for XAML debugging (headless backend). One array item per flag occurrence, comma-separated `key=value` inside an item: `--breakpoints 'workflowFile=Main.xaml,activityIdRef=Assign_1'`. Keys: `workflowFile` (required; workflow path relative to the project root), `activityIdRef` (the target activity's `sap2010:WorkflowViewState.IdRef` attribute value from the XAML — the stable way to address an activity you can read straight from the file), optional `condition` (VB/C# expression; breaks only when it evaluates to True), `hitCount:=N` (break only on exactly the Nth hit), `enabled` (defaults to true). Whole payload from a file: `--breakpoints-file breakpoints.json`. Used by `debug start` (initial set) and `debug set-breakpoints` (replaces the running session's whole set) |
|
|
51
|
+
| `--wait-timeout-seconds` | Maximum seconds a mid-session verb waits for the next stable state before returning `DebugState: "Running"` instead of hanging. Default 120 (0 for `debug state`, making it an instant probe). Headless backend only |
|
|
46
52
|
| `--log-level` | Minimum log level: `Verbose`, `Trace` (default), `Information`, `Warning`, `Error`, `Critical` |
|
|
47
53
|
| `--skip-build` | Skip the pre-run build step (use only when you've just built) |
|
|
48
54
|
| `--output` | Output format: `json` (recommended), `table`, `yaml`, `plain` |
|
|
@@ -53,23 +59,61 @@ All other `debug` verbs (`break`, `continue`, `resume`, `continue-retry`, `conti
|
|
|
53
59
|
| Verb | When to Use | What It Does |
|
|
54
60
|
|------|-------------|--------------|
|
|
55
61
|
| `run` | Run without debugging | Executes the workflow to completion. The default authoring loop verb |
|
|
56
|
-
| `debug start` | Begin a debug session | Starts execution in debug mode
|
|
62
|
+
| `debug start` | Begin a debug session | Starts execution in debug mode and **returns at the first stable state**: `Paused` at a breakpoint (pass `--breakpoints` to set them), `Suspended` on an unhandled exception, or `Completed` if nothing interrupts the run. The response's `DebugState` / `DebugDetails` say where execution stands; the session stays alive for the mid-session verbs |
|
|
57
63
|
| `debug test-activity` | Test one activity in isolation | Isolates the currently focused activity and executes it in a temporary test workflow. **Requires `focus-activity` first → Studio Desktop required** (see [Studio Desktop vs headless](#studio-desktop-vs-headless)). Use `--input-variables` to set variable values and `--input-arguments` to set argument values |
|
|
58
64
|
| `debug start-from-here` | Debug from a specific activity | Starts a debugging session from the currently focused activity, skipping all preceding activities. **Requires `focus-activity` first → Studio Desktop required** (see [Studio Desktop vs headless](#studio-desktop-vs-headless)). Use `--input-variables` to set variable values and `--input-arguments` to set argument values |
|
|
59
|
-
| `debug toggle-breakpoint` | Set/remove breakpoints | Toggles a breakpoint on the currently focused activity (XAML) or line (.cs). Use `uip rpa focus-activity` to focus beforehand
|
|
60
|
-
| `debug step-over` | Execute one activity and pause | Executes the current activity, then pauses at the next sibling activity. Does not enter child scopes (e.g., stays at the For Each level, doesn't step into its body) |
|
|
61
|
-
| `debug step-into` | Drill into child activities | Executes and pauses at the first child activity inside the current scope. Use to enter loops, sequences, Try-Catch blocks, etc. |
|
|
62
|
-
| `debug step-out` | Exit the current scope | Continues execution until the current scope completes, then pauses at the parent level. Use to leave a loop body or nested sequence |
|
|
63
|
-
| `debug continue` | Run to next breakpoint | Resumes execution
|
|
64
|
-
| `debug break` | Pause execution | Pauses a running debug session at the
|
|
65
|
+
| `debug toggle-breakpoint` | Set/remove breakpoints interactively (Studio Desktop only) | Toggles a breakpoint on the currently focused activity (XAML) or line (.cs). Use `uip rpa focus-activity` to focus beforehand. For XAML, cycles through 3 states: **enabled → disabled → no breakpoint**. For .cs, cycles through 2 states: **breakpoint → no breakpoint**. **Not available headless** (rejected as an unknown command) — use `--breakpoints` on `debug start` or `debug set-breakpoints` instead |
|
|
66
|
+
| `debug step-over` | Execute one activity and pause | Executes the current activity, then pauses at the next sibling activity. Does not enter child scopes (e.g., stays at the For Each level, doesn't step into its body). Returns the new paused state with locals |
|
|
67
|
+
| `debug step-into` | Drill into child activities | Executes and pauses at the first child activity inside the current scope. Use to enter loops, sequences, Try-Catch blocks, etc. Returns the new paused state with locals |
|
|
68
|
+
| `debug step-out` | Exit the current scope | Continues execution until the current scope completes, then pauses at the parent level. Use to leave a loop body or nested sequence. Returns the new paused state with locals |
|
|
69
|
+
| `debug continue` | Run to next breakpoint | Resumes execution and returns at the next stable state — the next breakpoint (`Paused`), an exception (`Suspended`), or the end of the run (`Completed`) |
|
|
70
|
+
| `debug break` | Pause execution | Pauses a running debug session at the next executed activity and returns the paused state with locals |
|
|
71
|
+
| `debug state` | Inspect without side effects | Reports the session's current `DebugState` (`Running`, `Paused`, `Suspended`, `Completed`, or `None` when no session is active) plus the last captured details. Instant by default; pass `--wait-timeout-seconds` to long-poll a running session for its next stable state |
|
|
72
|
+
| `debug set-breakpoints` | Change breakpoints mid-session | Replaces the active session's **whole** breakpoint set with the `--breakpoints` payload. For a new session, pass `--breakpoints` on `debug start` instead |
|
|
65
73
|
| `debug resume` | Resume from suspended state | Resumes execution when the workflow is in a suspended (not just paused) state |
|
|
66
74
|
| `debug continue-retry` | Retry after exception | Resumes execution and **retries the current activity** that caused the exception. Use when you've fixed the underlying issue (e.g., network timeout) and want to try again |
|
|
67
|
-
| `debug continue-ignore` | Skip past exception | Resumes execution and **ignores the exception** on the current activity. Use when the error is non-critical and you want to proceed |
|
|
75
|
+
| `debug continue-ignore` | Skip past exception | Resumes execution and **ignores the exception** on the current activity, pausing at the next activity. Use when the error is non-critical and you want to proceed |
|
|
68
76
|
| `execution cancel` | End the session | Cancels the currently active execution — works for both `run` and `debug start` |
|
|
69
77
|
| `debug restart-from-top` | Start over | Restarts execution from the beginning of the workflow without ending the debug session. Breakpoints are preserved |
|
|
70
78
|
|
|
71
79
|
---
|
|
72
80
|
|
|
81
|
+
## The stable-state debug loop (headless)
|
|
82
|
+
|
|
83
|
+
On the headless backend, debugging is a synchronous request/response loop: **every command returns when execution reaches the next stable state**, and the response tells you exactly where things stand. No command hangs waiting for a human — if nothing stable is reached within `--wait-timeout-seconds`, the response says `Running` and how to proceed.
|
|
84
|
+
|
|
85
|
+
`DebugState` values in the response:
|
|
86
|
+
|
|
87
|
+
| `DebugState` | Meaning | What to do next |
|
|
88
|
+
|---|---|---|
|
|
89
|
+
| `Paused` | Stopped at a breakpoint or after a step/break. `DebugDetails` carries the current activity (name, id, workflow file) and a snapshot of in-scope variables, arguments, and properties | Inspect `DebugDetails`, then `step-over` / `step-into` / `step-out` / `continue`, or `execution cancel` |
|
|
90
|
+
| `Suspended` | Stopped on an unhandled exception; the session is still alive. `DebugDetails` carries the exception type, message, faulting activity, and locals | `continue` to propagate the exception, `continue-retry` to re-run the faulted activity, `continue-ignore` to skip it, or `execution cancel` |
|
|
91
|
+
| `Completed` | The run finished. The response is the normal run result (`Output`, `HasErrors`, `ErrorMessage`) | Read the run result; the session is gone |
|
|
92
|
+
| `Running` | The wait timed out before a stable state was reached — execution is still going | Poll with `debug state`, send `debug break` to pause at the next activity, or `execution cancel` |
|
|
93
|
+
| `None` | No debug session is active | Start one with `debug start` |
|
|
94
|
+
|
|
95
|
+
The canonical loop:
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# Start with breakpoints on the activities you care about — returns Paused at the first hit
|
|
99
|
+
uip rpa debug start --file-path Main.xaml \
|
|
100
|
+
--breakpoints 'workflowFile=Main.xaml,activityIdRef=Assign_1' --output json
|
|
101
|
+
|
|
102
|
+
# Inspect DebugDetails (activity + locals), then advance — each call returns the next state
|
|
103
|
+
uip rpa debug step-over --output json
|
|
104
|
+
uip rpa debug continue --output json
|
|
105
|
+
|
|
106
|
+
# If a response says Suspended, decide on the exception:
|
|
107
|
+
uip rpa debug continue-ignore --output json # or continue-retry / continue / execution cancel
|
|
108
|
+
|
|
109
|
+
# Not sure what's happening? Probe without side effects:
|
|
110
|
+
uip rpa debug state --output json
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Breakpoints are addressed by `activityIdRef` — the `sap2010:WorkflowViewState.IdRef` attribute you can read directly from the XAML you authored — so no `focus-activity` (and no Studio Desktop) is needed. Conditional breakpoints (`condition`) and hit counts (`hitCount:=N`) are evaluated by the runtime.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
73
117
|
## Input Variables vs Input Arguments
|
|
74
118
|
|
|
75
119
|
These serve different purposes and apply to different scopes:
|
|
@@ -134,14 +178,14 @@ For `debug test-activity` and `debug start-from-here`, both `--input-arguments`
|
|
|
134
178
|
|
|
135
179
|
## Output Format
|
|
136
180
|
|
|
137
|
-
`run` and `debug start` return a JSON envelope with `Data.runResult` as a JSON-encoded string. Parse `runResult` separately
|
|
181
|
+
`run` and `debug start` return a JSON envelope with `Data.runResult` as a JSON-encoded string. Parse `runResult` separately:
|
|
138
182
|
|
|
139
183
|
```json
|
|
140
184
|
{
|
|
141
185
|
"Result": "Success",
|
|
142
186
|
"Code": "ToolResult",
|
|
143
187
|
"Data": {
|
|
144
|
-
"runResult": "{\"
|
|
188
|
+
"runResult": "{\"output\":\"...\",\"hasErrors\":false,\"errorMessage\":null,\"debugState\":\"Completed\",\"debugDetails\":null}"
|
|
145
189
|
}
|
|
146
190
|
}
|
|
147
191
|
```
|
|
@@ -150,26 +194,35 @@ Inside `runResult`:
|
|
|
150
194
|
|
|
151
195
|
| Field | Type | Meaning |
|
|
152
196
|
|-------|------|---------|
|
|
153
|
-
| `Output` | `string` | Workflow's serialized output arguments JSON
|
|
154
|
-
| `HasErrors` | `bool` | `true` iff execution
|
|
155
|
-
| `ErrorMessage` | `string?` | Formatted error chain when `HasErrors: true
|
|
197
|
+
| `Output` | `string` | Workflow's serialized output arguments JSON, populated when the run completes. **Carries the workflow's data, not a verdict.** |
|
|
198
|
+
| `HasErrors` | `bool` | `true` iff execution finished without `Succeeded` (compile failure, validation failure, unhandled exception that ended the run, cancellation, timeout). `false` otherwise — including while `Suspended` on an exception, because the session is still alive and the outcome undecided. |
|
|
199
|
+
| `ErrorMessage` | `string?` | Formatted error chain when `HasErrors: true`. On debug responses it may instead carry **guidance** (e.g. which commands apply in a `Suspended` state) with `HasErrors: false`. `null` otherwise. |
|
|
200
|
+
| `DebugState` | `string?` | Debug sessions only (`null` on plain `run`): `Paused`, `Suspended`, `Running`, `Completed`, or `None`. See [The stable-state debug loop](#the-stable-state-debug-loop-headless). |
|
|
201
|
+
| `DebugDetails` | `string?` | Debug sessions only: JSON snapshot for the state — current activity + locals when `Paused`; exception type/message/activity + locals when `Suspended`; `null` otherwise. |
|
|
156
202
|
| `Profiling` | `object?` | Present only when `--profiling` was passed on a start command and collection succeeded. Single field `OutputDirectory` — absolute path to the run's `*.uistat` and screenshot folder (verifies UI automation correctness and workflow performance). `null` / omitted otherwise. See [Profiling Workflow Performance](#profiling-workflow-performance). |
|
|
157
203
|
|
|
158
204
|
Workflow log output (`Log Message` activity, system traces) is **streamed in real time** during execution on a separate channel. It is NOT embedded in `runResult`.
|
|
159
205
|
|
|
160
|
-
>
|
|
206
|
+
> **For completed runs, `Result` (outer) — equivalently `HasErrors` (inner) — is the only success/failure signal.** `Result: "Success"` already accounts for compile failures, validation failures, and unhandled runtime exceptions. **Do NOT use streamed log entries' `Level` as a failure signal** — workflow `Log Message` activities emit at any level, and successful runs commonly include `Error` / `Warning` entries from the workflow's own logging. Treating log levels as a verdict flips green runs to "failed". In an active debug session, check `DebugState` first: `Suspended` means an exception is waiting for your decision even though `HasErrors` is still `false`.
|
|
161
207
|
|
|
162
208
|
Examples:
|
|
163
209
|
|
|
164
210
|
```jsonc
|
|
165
|
-
// Successful run — workflow logged a warning, but
|
|
166
|
-
{ "
|
|
211
|
+
// Successful completed run — workflow logged a warning, but hasErrors is false
|
|
212
|
+
{ "output": "{\"resultCode\":\"OK\"}", "hasErrors": false, "errorMessage": null, "debugState": "Completed", "debugDetails": null }
|
|
213
|
+
|
|
214
|
+
// Failed completed run — compile or runtime failure ended the session
|
|
215
|
+
{ "output": "", "hasErrors": true, "errorMessage": "Source: HttpRequest_1\nMessage: ...", "debugState": "Completed", "debugDetails": null }
|
|
167
216
|
|
|
168
|
-
//
|
|
169
|
-
{ "
|
|
217
|
+
// Paused at a breakpoint — current activity + locals in debugDetails
|
|
218
|
+
{ "output": "", "hasErrors": false, "errorMessage": null, "debugState": "Paused",
|
|
219
|
+
"debugDetails": "{\"Activity\":\"Assign x\",\"ActivityId\":\"1.5\",\"WorkflowFile\":\"...\\Main.xaml\",\"Locals\":{...}}" }
|
|
170
220
|
|
|
171
|
-
//
|
|
172
|
-
{ "
|
|
221
|
+
// Suspended on an exception — session alive, hasErrors still false, errorMessage carries guidance
|
|
222
|
+
{ "output": "", "hasErrors": false,
|
|
223
|
+
"errorMessage": "Execution suspended on an unhandled exception; the session is still alive. Send Continue..., ContinueRetry..., ContinueIgnore..., or Stop...",
|
|
224
|
+
"debugState": "Suspended",
|
|
225
|
+
"debugDetails": "{\"ExceptionType\":\"System.InvalidOperationException\",\"Message\":\"...\",\"Activity\":\"Throw\",\"Locals\":{...}}" }
|
|
173
226
|
```
|
|
174
227
|
|
|
175
228
|
---
|
|
@@ -190,34 +243,40 @@ Examples:
|
|
|
190
243
|
|
|
191
244
|
### 1. Quick Breakpoint Debug Session
|
|
192
245
|
|
|
193
|
-
The most common pattern:
|
|
194
|
-
|
|
195
|
-
> **Studio Desktop required** for activity-targeted breakpoints (the `focus-activity` step). Skip step 1 to set a workflow-level breakpoint instead — that path runs headless.
|
|
246
|
+
The most common pattern: start debugging with breakpoints on the activities you suspect, inspect the state each pause returns, then step or continue. Runs fully headless — breakpoints are addressed by the activity's `IdRef` straight from the XAML, no focusing step.
|
|
196
247
|
|
|
197
248
|
```bash
|
|
198
|
-
# 1.
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
# 3. Start debugging — execution pauses at the breakpoint
|
|
205
|
-
uip rpa debug start --file-path "GetStockPrices.xaml" --output json
|
|
249
|
+
# 1. Start debugging with a breakpoint — returns Paused at the breakpoint,
|
|
250
|
+
# with the current activity and locals in DebugDetails
|
|
251
|
+
uip rpa debug start --file-path "GetStockPrices.xaml" \
|
|
252
|
+
--breakpoints 'workflowFile=GetStockPrices.xaml,activityIdRef=Assign_1' \
|
|
253
|
+
--output json
|
|
206
254
|
|
|
207
|
-
#
|
|
208
|
-
#
|
|
209
|
-
# Then step through or continue:
|
|
255
|
+
# 2. Read DebugDetails: current activity + variables/arguments/properties snapshot.
|
|
256
|
+
# Then step through — each call returns the next paused state with fresh locals:
|
|
210
257
|
uip rpa debug step-over --output json
|
|
211
258
|
|
|
212
|
-
#
|
|
259
|
+
# 3. Or run to the next breakpoint / completion:
|
|
260
|
+
uip rpa debug continue --output json
|
|
261
|
+
|
|
262
|
+
# 4. When done, cancel the session (skip if the last response was already Completed)
|
|
213
263
|
uip rpa execution cancel --output json
|
|
214
264
|
```
|
|
215
265
|
|
|
266
|
+
Conditional breakpoints and hit counts work the same way:
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
--breakpoints 'workflowFile=Main.xaml,activityIdRef=Assign_1,condition=count > 3'
|
|
270
|
+
--breakpoints 'workflowFile=Main.xaml,activityIdRef=Click_2,hitCount:=3'
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
> On Studio Desktop, the interactive alternative is `focus-activity` + `debug toggle-breakpoint` (see [Studio Desktop vs headless](#studio-desktop-vs-headless)).
|
|
274
|
+
|
|
216
275
|
### 2. Test a Single Activity in Isolation
|
|
217
276
|
|
|
218
277
|
Use `debug test-activity` to run just the currently focused activity without executing the entire workflow. Useful for verifying an activity works with specific inputs.
|
|
219
278
|
|
|
220
|
-
> **Studio Desktop required** — `focus-activity` and `debug test-activity` both rely on it. On a headless-only setup, fall back to
|
|
279
|
+
> **Studio Desktop required** — `focus-activity` and `debug test-activity` both rely on it (headless rejects `debug test-activity`, and `focus-activity` silently no-ops). On a headless-only setup, fall back to `debug start --breakpoints 'workflowFile=<file>,activityIdRef=<IdRef>'` — pause right at the activity, inspect its inputs in `DebugDetails`, then step over it and check the result.
|
|
221
280
|
|
|
222
281
|
```bash
|
|
223
282
|
# 1. Focus the activity to test (Studio Desktop required)
|
|
@@ -240,7 +299,7 @@ uip rpa debug test-activity \
|
|
|
240
299
|
|
|
241
300
|
Use `debug start-from-here` to skip straight to the activity you care about, avoiding stepping through earlier activities.
|
|
242
301
|
|
|
243
|
-
> **Studio Desktop required** — `focus-activity` and `debug start-from-here` both rely on it. On a headless-only setup, use
|
|
302
|
+
> **Studio Desktop required** — `focus-activity` and `debug start-from-here` both rely on it (headless rejects `debug start-from-here`, and `focus-activity` silently no-ops). On a headless-only setup, use `debug start --breakpoints 'workflowFile=<file>,activityIdRef=<IdRef>'` — the run starts from the top, but pauses at the activity you care about with locals in hand.
|
|
244
303
|
|
|
245
304
|
```bash
|
|
246
305
|
# 1. Focus the activity to start from (Studio Desktop required)
|
|
@@ -262,27 +321,28 @@ uip rpa execution cancel --output json
|
|
|
262
321
|
|
|
263
322
|
### 4. Exception Investigation
|
|
264
323
|
|
|
265
|
-
When
|
|
324
|
+
When execution hits an unhandled exception in a debug session, the command that was running returns `DebugState: "Suspended"` — the session is alive and waiting for your decision. `DebugDetails` carries the exception type, message, faulting activity, and a locals snapshot.
|
|
266
325
|
|
|
267
326
|
```bash
|
|
268
|
-
# Start debugging
|
|
327
|
+
# Start debugging — if an exception fires, the response comes back Suspended
|
|
269
328
|
uip rpa debug start --file-path "MyWorkflow.xaml" --output json
|
|
270
|
-
uip rpa debug continue --output json
|
|
271
329
|
|
|
272
|
-
#
|
|
273
|
-
#
|
|
274
|
-
# -
|
|
275
|
-
# -
|
|
276
|
-
# leading up to the failure
|
|
330
|
+
# Inspect the Suspended response:
|
|
331
|
+
# - debugDetails → exception type + message + faulting activity + locals at the fault
|
|
332
|
+
# - hasErrors stays false — the outcome is not decided yet
|
|
333
|
+
# - errorMessage carries the guidance on which commands apply
|
|
277
334
|
|
|
278
335
|
# Then choose how to proceed:
|
|
279
336
|
# Option A: Retry the failed activity (e.g., transient network error)
|
|
280
337
|
uip rpa debug continue-retry --output json
|
|
281
338
|
|
|
282
|
-
# Option B: Ignore the exception and continue past it
|
|
339
|
+
# Option B: Ignore the exception and continue past it (pauses at the next activity)
|
|
283
340
|
uip rpa debug continue-ignore --output json
|
|
284
341
|
|
|
285
|
-
# Option C:
|
|
342
|
+
# Option C: Propagate the exception (the run fails; response is Completed with hasErrors: true)
|
|
343
|
+
uip rpa debug continue --output json
|
|
344
|
+
|
|
345
|
+
# Option D: Cancel and fix the root cause
|
|
286
346
|
uip rpa execution cancel --output json
|
|
287
347
|
```
|
|
288
348
|
|
|
@@ -418,11 +478,12 @@ A practical example — a workflow makes an HTTP request and tries to deserializ
|
|
|
418
478
|
|
|
419
479
|
- **Always use `--output json`** for debug verbs when you need to parse the output programmatically. The structured output makes it easy to inspect variables and identify exceptions.
|
|
420
480
|
- **Set breakpoints strategically** — place them just before the activity you suspect is failing, not at the very start. This avoids stepping through dozens of unrelated activities.
|
|
421
|
-
- **
|
|
481
|
+
- **Prefer `--breakpoints` on `debug start`** — it targets specific activities by their XAML `IdRef` with no focusing step and runs headless. Use `focus-activity` + `debug toggle-breakpoint` only for interactive sessions on Studio Desktop.
|
|
482
|
+
- **Never let a debug response go unread** — every command returns `DebugState`; branch on it (`Paused` → inspect and step, `Suspended` → decide on the exception, `Running` → poll `debug state` or `break`, `Completed` → read the run result).
|
|
422
483
|
- **Use `debug test-activity` for quick feedback** — it runs a single activity in isolation, which is faster than debugging the entire workflow. Studio Desktop required (depends on `focus-activity`). Pre-set variables with `--input-variables` so the activity has the data it needs.
|
|
423
484
|
- **Use `debug start-from-here` to skip setup** — when the bug is deep in the workflow, skip straight to the relevant activity instead of stepping through the entire flow. Studio Desktop required (depends on `focus-activity`). Pre-set variables with `--input-variables` to simulate the state the activity would have received from preceding activities.
|
|
424
485
|
- **Prefer `debug step-over` for quick inspection** — it moves one activity at a time without descending into scopes. Use `debug step-into` only when you need to examine what happens inside a loop iteration or nested sequence.
|
|
425
|
-
- **Check variables after each step** —
|
|
486
|
+
- **Check variables after each step** — every `Paused`/`Suspended` response carries a locals snapshot (in-scope variables, arguments, current activity properties) in `DebugDetails`; streamed log entries remain useful for values the workflow logged along the way.
|
|
426
487
|
- **Use `debug continue-retry` for transient errors** — if the exception is a network timeout or rate limit, retrying may succeed without any code changes.
|
|
427
488
|
- **Use `debug continue-ignore` cautiously** — it skips the exception, which may leave variables in an unexpected state for downstream activities.
|
|
428
489
|
- **Cancel the session when done** — always issue `execution cancel` to cleanly end the run or debug session.
|
|
@@ -171,7 +171,7 @@ Pass `--target-framework` and `--expression-language` here too (Rule 2a) — a t
|
|
|
171
171
|
2. **Read the scaffolded files** — the command generates starter files. Read them before making changes so you build on valid defaults
|
|
172
172
|
3. Proceed with the skill workflow using the new project root
|
|
173
173
|
|
|
174
|
-
> **Batch the post-`init` prerequisites.** Step 2 here,
|
|
174
|
+
> **Batch the post-`init` prerequisites.** Step 2 here, `packages install` for known-needed packages, and the first `activities find` all depend only on the project existing — emit them as parallel tool calls in one message, not one per turn. They share the warmed Studio host. See SKILL.md § Call Batching.
|
|
175
175
|
|
|
176
176
|
## Edge case: requiring Studio Desktop
|
|
177
177
|
|
|
@@ -180,7 +180,7 @@ Two `uip rpa` commands need a running Studio Desktop instance — they have UI s
|
|
|
180
180
|
| Command | Why it needs Studio |
|
|
181
181
|
|---------|---------------------|
|
|
182
182
|
| `uip rpa files diff` | Opens an interactive diff window in Studio's UI; finishes when the user closes the window. |
|
|
183
|
-
| `uip rpa focus-activity` | Selects/highlights an activity in Studio's active workflow designer. |
|
|
183
|
+
| `uip rpa focus-activity` | Selects/highlights an activity in Studio's active workflow designer. ⚠️ Against headless it **silently succeeds without doing anything** (there is no designer) — a `success: true` from a headless session does NOT mean anything was focused. |
|
|
184
184
|
|
|
185
185
|
When (and only when) you need to run one of these, ensure Studio Desktop is up:
|
|
186
186
|
|
|
@@ -33,7 +33,7 @@ When the source is a Test Manager test case, a PDD, or any written list of "Clic
|
|
|
33
33
|
2. **Group by screen state.** Sort steps into screen batches — every step before an action that advances the UI (submit, navigate, dialog confirm) belongs to the current screen; the next batch starts after the advance.
|
|
34
34
|
3. **Build the checklist** — three columns per row: `manual step → element name → screen`. Lock the count before opening the app. If the user later adds requirements, capture deltas, do not re-inventory the whole thing.
|
|
35
35
|
4. **Capture screen by screen.** Pre-flight Window Baseline (above) → run `uia-configure-target` for the current screen's batch → register each element in the Object Repository before advancing → use the UIA interact CLI to advance → repeat. The "Complete-then-advance" rule from [uia-configure-target-workflows.md § Multi-Step UI Flows](uia-configure-target-workflows.md) is mandatory; never advance with elements still un-registered.
|
|
36
|
-
5. **Then code.** With every checklist row registered in the Object Repository, write the `.cs` / `.xaml` workflow that calls them in step order. Authoring-phase prerequisites (
|
|
36
|
+
5. **Then code.** With every checklist row registered in the Object Repository, write the `.cs` / `.xaml` workflow that calls them in step order. Authoring-phase prerequisites (project context discovery) run NOW, not earlier.
|
|
37
37
|
|
|
38
38
|
> Coverage check: after capture, every checklist row must have a matching `Descriptors.<App>.<Screen>.<Element>` path (coded) or Object Repository reference (XAML). Rows without a match indicate a missed capture or an obsolete manual step — reconcile before writing code.
|
|
39
39
|
|
|
@@ -274,7 +274,7 @@ Install the UI Library as a package dependency; its descriptors appear under **U
|
|
|
274
274
|
|
|
275
275
|
## Running UI Automation Workflows
|
|
276
276
|
|
|
277
|
-
**Always use `uip rpa debug start`** (not `uip rpa run`) when running workflows with UI automation. A debug session pauses on error instead of tearing down the application, leaving the UI state available for inspection.
|
|
277
|
+
**Always use `uip rpa debug start`** (not `uip rpa run`) when running workflows with UI automation. A debug session pauses on error instead of tearing down the application, leaving the UI state available for inspection. The command returns as soon as that happens — `DebugState: "Suspended"` with the exception and locals in `DebugDetails` — so act on the response instead of waiting for the run to end (see [debugging.md § The stable-state debug loop](debugging.md#the-stable-state-debug-loop-headless)).
|
|
278
278
|
|
|
279
279
|
**Every debug run** must follow this procedure to prevent stale windows from accumulating or being reused in a dirty state:
|
|
280
280
|
|
|
@@ -293,6 +293,16 @@ Install the UI Library as a package dependency; its descriptors appear under **U
|
|
|
293
293
|
|
|
294
294
|
Skipping steps 4-5 causes the next run's open-if-not-open behavior to reuse a stale window in whatever state it was left in, or -- if the selector doesn't match -- to spawn a duplicate instance.
|
|
295
295
|
|
|
296
|
+
### Advanced Debugging — Profiling
|
|
297
|
+
|
|
298
|
+
For advanced debugging, add `--profiling` to collect insightful per-activity execution data, timings, and before- and after-execution screenshots:
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
uip rpa debug start --file-path "<FILE>" --project-dir "<PROJECT_DIR>" --output json --profiling
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
Use the before-execution screenshot to confirm the application/element started in the correct state, and the after-execution one to validate the expected outcome. Each screenshot's filename is recorded in the run's `.uistat` file; the image sits in the `Screenshots` folder in the same directory as that `.uistat` file. See [debugging.md § Profiling Workflow Performance](debugging.md#profiling-workflow-performance) for details.
|
|
305
|
+
|
|
296
306
|
### Runtime Selector Failure Recovery
|
|
297
307
|
|
|
298
308
|
"UI element not found", "UI element is invalid", element not on screen -- these surface at runtime, not during static validation. They occur when a selector was captured against one app state but the DOM changed by the time the activity executes.
|
|
@@ -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.10.0`
|
|
5
|
+
**Source feed:** the official UiPath NuGet feed — the same feed Studio resolves by default.
|
|
6
6
|
|
|
7
|
-
> **
|
|
7
|
+
> **Stable release.** `<MIN_VERSION>` is a stable GA build — it ships the `uia-configure-target` skill content and resolves from the official feed without any prerelease flag. Querying with `--include-prerelease` is still fine (it surfaces newer preview builds), but it is not needed to reach `<MIN_VERSION>`.
|
|
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>` 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.4.x` → `26.10.x`) | Ask before installing the newer build. |
|
|
23
|
+
| Patch / build upgrade within the `26.10.x` band | Ask before installing the newer 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` resolves `<MIN_VERSION>` directly via the `version` field — no prerelease flag is needed, since it is a stable release. Omit `,version=<MIN_VERSION>` to resolve the latest compatible build (which will be at or above `<MIN_VERSION>`).
|
|
@@ -2,23 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
Fix-one-thing discipline, the validation iteration loop, smoke test procedure, and RPA-specific fix procedures.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## On demand: List Analyzer Rules
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
`validate` and `build` already enforce the project's enabled Workflow Analyzer rules — violations come back with the rule ID, severity, and recommendation, so the normal authoring loop needs **no** rule pre-fetch. Do NOT run `analyzer-rules list` as an authoring prerequisite: the unscoped call enumerates every rule across every package and can take a minute or more, and most of its output never affects the code you write.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
uip rpa analyzer-rules list --project-dir "<PROJECT_DIR>" --output json
|
|
11
|
-
```
|
|
9
|
+
Run it **only on demand**:
|
|
12
10
|
|
|
13
|
-
|
|
11
|
+
1. The **user asks** about the project's best-practice / analyzer rules ("what rules does this project enforce?", "list the analyzer rules", "why is UI-REL-001 firing?").
|
|
12
|
+
2. **Repeated violations of the same rule family** across `validate`/`build` iterations — reading the full rule set (scoped, see below) lets you author against it instead of fixing violations one by one.
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
```bash
|
|
15
|
+
uip rpa analyzer-rules list --project-dir "<PROJECT_DIR>" --scope "<Activity|Workflow|Coded Workflow|Project>" --output json
|
|
16
|
+
```
|
|
18
17
|
|
|
19
|
-
|
|
20
|
-
1. Pure read-only / Q&A tasks that do not produce or modify workflow files.
|
|
21
|
-
2. Edits that only touch non-workflow files (`project.json`, docs, plain `.cs` source files without workflow attributes).
|
|
18
|
+
Prefer a `--scope` matching what you're authoring — scoped calls return in seconds; unscoped can take a minute+. Apply `error` and `warning` rules; `info` rules are advisory. If you do consult the rules and then add or update a NuGet package, the package-shipped (`MA-*`) rules may have changed with the dependency set.
|
|
22
19
|
|
|
23
20
|
Rule prefixes and full schema: [cli-reference.md § analyzer-rules list](cli-reference.md).
|
|
24
21
|
|
|
@@ -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. (Known bug: the rewrite isn't always applied automatically - that's 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 the reference-field rewrite bug noted above).
|
|
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
|
|