@uipath/skills 1.200.0 → 1.201.0-preview.433
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/.cursor-plugin/plugin.json +32 -0
- package/CODEOWNERS +25 -4
- package/README.md +1 -0
- package/assets/skill-status.json +8 -0
- package/assets/uip-catalog-snapshot.json +113 -41
- package/assets/uipath-icon.png +0 -0
- package/commands/install-permissions.md +1 -0
- package/package.json +3 -2
- package/skills/uipath-admin/SKILL.md +1 -1
- package/skills/uipath-admin/references/authorization/permission-catalog.md +61 -1
- package/skills/uipath-admin/references/authorization/role-management.md +3 -1
- package/skills/uipath-admin/references/diagnose/references/failure-modes.md +29 -4
- package/skills/uipath-admin/references/diagnose/references/troubleshooting-guide.md +13 -0
- package/skills/uipath-agents/SKILL.md +1 -0
- package/skills/uipath-agents/references/coded/capabilities/context-grounding.md +3 -3
- package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails-recommend.md +6 -1
- package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails.md +89 -1
- package/skills/uipath-agents/references/coded/embedding-in-flows.md +17 -1
- package/skills/uipath-agents/references/coded/frameworks/llamaindex-integration.md +64 -2
- package/skills/uipath-agents/references/coded/lifecycle/deployment.md +3 -0
- package/skills/uipath-agents/references/coded/lifecycle/environment-variables.md +90 -0
- package/skills/uipath-agents/references/coded/lifecycle/file-sync.md +3 -1
- package/skills/uipath-agents/references/coded/quickstart.md +10 -6
- package/skills/uipath-agents/references/lowcode/capabilities/guardrails/guardrails-recommend.md +20 -5
- package/skills/uipath-agents/references/lowcode/capabilities/guardrails/guardrails.md +13 -0
- package/skills/uipath-agents/references/lowcode/capabilities/inline-in-flow/inline-in-flow.md +1 -3
- package/skills/uipath-api-workflow/references/operating-published-workflows.md +17 -6
- package/skills/uipath-automationhub/SKILL.md +58 -0
- package/skills/uipath-automationhub/references/api-endpoints.md +140 -0
- package/skills/uipath-automationhub/references/get-process.md +69 -0
- package/skills/uipath-automationhub/references/publish-process.md +171 -0
- package/skills/uipath-coded-apps/SKILL.md +24 -11
- package/skills/uipath-coded-apps/references/commands-reference.md +29 -29
- package/skills/uipath-coded-apps/references/create-action-app.md +4 -0
- package/skills/uipath-coded-apps/references/create-web-app.md +10 -0
- package/skills/uipath-coded-apps/references/debug.md +16 -0
- package/skills/uipath-coded-apps/references/oauth-client-setup.md +3 -1
- package/skills/uipath-coded-apps/references/oauth-scopes.md +39 -4
- package/skills/uipath-coded-apps/references/pack-publish-deploy.md +37 -21
- package/skills/uipath-coded-apps/references/sdk/conversational-agent.md +2 -0
- package/skills/uipath-coded-apps/references/sdk/data-fabric.md +2 -0
- package/skills/uipath-coded-apps/references/sdk/orchestrator.md +2 -0
- package/skills/uipath-coded-apps/references/widgets/conversational-agent-chat.md +90 -0
- package/skills/uipath-coded-apps/references/widgets/datatable.md +97 -0
- package/skills/uipath-coded-apps/references/widgets/external-auth.md +97 -0
- package/skills/uipath-coded-apps/references/widgets/multi-file-upload.md +98 -0
- package/skills/uipath-coded-apps/references/widgets/pdf-viewer.md +122 -0
- package/skills/uipath-coded-apps/references/widgets/validation-station.md +1 -1
- package/skills/uipath-functions/SKILL.md +11 -0
- package/skills/uipath-insights/SKILL.md +52 -247
- package/skills/uipath-insights/references/filter-discovery-guide.md +106 -0
- package/skills/uipath-insights/references/investigation-playbook-guide.md +24 -16
- package/skills/uipath-insights/references/jobs-commands-guide.md +196 -53
- package/skills/uipath-ixp/SKILL.md +10 -4
- package/skills/uipath-ixp/references/cli-reference.md +59 -5
- package/skills/uipath-ixp/references/label-documents-guide.md +12 -5
- package/skills/uipath-maestro-bpmn/SKILL.md +27 -9
- package/skills/uipath-maestro-bpmn/references/diagnose/references/failure-modes.md +6 -3
- package/skills/uipath-maestro-bpmn/references/operate/CAPABILITY.md +1 -1
- package/skills/uipath-maestro-bpmn/references/operate/references/ship.md +9 -3
- package/skills/uipath-maestro-bpmn/references/registry-workflow.md +1 -1
- package/skills/uipath-maestro-bpmn/references/shared/local-metadata-regeneration-guide.md +18 -11
- package/skills/uipath-maestro-bpmn/references/structural-bpmn.md +13 -7
- package/skills/uipath-maestro-case/SKILL.md +138 -170
- package/skills/uipath-maestro-case/references/bindings-and-expressions.md +14 -1
- package/skills/uipath-maestro-case/references/bindings-v2-sync.md +25 -1
- package/skills/uipath-maestro-case/references/brownfield.md +7 -3
- package/skills/uipath-maestro-case/references/case-commands.md +63 -8
- package/skills/uipath-maestro-case/references/case-editing-operations.md +11 -8
- package/skills/uipath-maestro-case/references/case-schema.md +5 -3
- package/skills/uipath-maestro-case/references/case-spec-input-details.md +4 -0
- package/skills/uipath-maestro-case/references/connector-integration.md +3 -1
- package/skills/uipath-maestro-case/references/connector-trigger-impl.md +236 -0
- package/skills/uipath-maestro-case/references/connector-trigger-planning.md +300 -0
- package/skills/uipath-maestro-case/references/entry-points-sync.md +2 -0
- package/skills/uipath-maestro-case/references/evals/evals.json +33 -40
- package/skills/uipath-maestro-case/references/implementation.md +58 -13
- package/skills/uipath-maestro-case/references/phased-execution.md +87 -20
- package/skills/uipath-maestro-case/references/placeholder-tasks.md +3 -1
- package/skills/uipath-maestro-case/references/planning.md +26 -16
- package/skills/uipath-maestro-case/references/plugins/case/impl-json.md +2 -5
- package/skills/uipath-maestro-case/references/plugins/case/planning.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/conditions/case-exit-conditions/impl-json.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/conditions/case-exit-conditions/planning.md +5 -3
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-entry-conditions/impl-json.md +4 -2
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-entry-conditions/planning.md +6 -4
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-exit-conditions/impl-json.md +6 -4
- package/skills/uipath-maestro-case/references/plugins/conditions/stage-exit-conditions/planning.md +6 -4
- package/skills/uipath-maestro-case/references/plugins/conditions/task-entry-conditions/impl-json.md +42 -3
- package/skills/uipath-maestro-case/references/plugins/conditions/task-entry-conditions/planning.md +6 -4
- package/skills/uipath-maestro-case/references/plugins/logging/impl-json.md +50 -32
- package/skills/uipath-maestro-case/references/plugins/sla/impl-json.md +2 -4
- package/skills/uipath-maestro-case/references/plugins/sla/planning.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/stages/impl-json.md +1 -4
- package/skills/uipath-maestro-case/references/plugins/stages/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/action/impl-json.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/action/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/agent/impl-json.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/agent/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/impl-json.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/planning.md +5 -3
- package/skills/uipath-maestro-case/references/plugins/tasks/case-management/impl-json.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/case-management/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/impl-json.md +43 -13
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/planning.md +4 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-trigger/impl-json.md +10 -7
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-trigger/planning.md +5 -3
- package/skills/uipath-maestro-case/references/plugins/tasks/create-inline-common.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/tasks/process/impl-json.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/process/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/rpa/impl-json.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/rpa/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/wait-for-timer/impl-json.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/tasks/wait-for-timer/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/triggers/event/impl-json.md +9 -6
- package/skills/uipath-maestro-case/references/plugins/triggers/event/planning.md +5 -3
- package/skills/uipath-maestro-case/references/plugins/triggers/manual/impl-json.md +1 -4
- package/skills/uipath-maestro-case/references/plugins/triggers/manual/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/triggers/timer/impl-json.md +1 -4
- package/skills/uipath-maestro-case/references/plugins/triggers/timer/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/variables/bindings/impl-json.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/variables/global-vars/impl-json.md +40 -2
- package/skills/uipath-maestro-case/references/plugins/variables/global-vars/planning.md +12 -2
- package/skills/uipath-maestro-case/references/plugins/variables/io-binding/impl-json.md +8 -6
- package/skills/uipath-maestro-case/references/plugins/variables/io-binding/planning.md +17 -3
- package/skills/uipath-maestro-case/references/registry-discovery.md +9 -5
- package/skills/uipath-maestro-case/references/sla-response-shapes.md +3 -1
- package/skills/uipath-maestro-case/references/troubleshooting-guide.md +2 -0
- package/skills/uipath-maestro-case/scripts/audit_plan.py +231 -0
- package/skills/uipath-maestro-flow/references/author/CAPABILITY.md +8 -4
- package/skills/uipath-maestro-flow/references/author/references/editing-operations-cli.md +5 -3
- package/skills/uipath-maestro-flow/references/author/references/editing-operations-json.md +14 -4
- package/skills/uipath-maestro-flow/references/author/references/editing-operations.md +3 -3
- package/skills/uipath-maestro-flow/references/author/references/greenfield.md +12 -3
- package/skills/uipath-maestro-flow/references/author/references/planning-arch.md +17 -13
- package/skills/uipath-maestro-flow/references/author/references/planning-impl.md +1 -1
- package/skills/uipath-maestro-flow/references/author/references/plugins/agent/impl.md +49 -4
- package/skills/uipath-maestro-flow/references/author/references/plugins/connector/impl.md +59 -17
- package/skills/uipath-maestro-flow/references/author/references/plugins/connector-trigger/impl.md +3 -3
- package/skills/uipath-maestro-flow/references/author/references/plugins/http/impl-connector.md +3 -1
- package/skills/uipath-maestro-flow/references/author/references/plugins/http/impl-manual.md +3 -1
- package/skills/uipath-maestro-flow/references/author/references/plugins/http/impl.md +5 -2
- package/skills/uipath-maestro-flow/references/author/references/plugins/inline-agent/impl.md +31 -16
- package/skills/uipath-maestro-flow/references/author/references/plugins/ixp/impl.md +13 -4
- package/skills/uipath-maestro-flow/references/author/references/plugins/loop/impl.md +185 -25
- package/skills/uipath-maestro-flow/references/author/references/plugins/loop/planning.md +18 -10
- package/skills/uipath-maestro-flow/references/author/references/plugins/rpa/impl.md +9 -3
- package/skills/uipath-maestro-flow/references/author/references/plugins/terminate/impl.md +6 -3
- package/skills/uipath-maestro-flow/references/diagnose/references/failure-modes.md +68 -0
- package/skills/uipath-maestro-flow/references/shared/cli-commands.md +2 -1
- package/skills/uipath-maestro-flow/references/shared/file-format.md +36 -9
- package/skills/uipath-maestro-flow/references/shared/node-output-wiring.md +1 -1
- package/skills/uipath-maestro-flow/references/shared/ux-narration-and-todos.md +1 -1
- package/skills/uipath-maestro-flow/references/shared/variables-and-expressions.md +77 -20
- package/skills/uipath-planner/SKILL.md +30 -12
- package/skills/{uipath-maestro-case/assets/templates/sdd-template-examples.md → uipath-planner/assets/templates/case-sdd-examples.md} +18 -32
- package/skills/uipath-planner/assets/templates/case-sdd-template.md +289 -309
- package/skills/uipath-planner/references/case-design-lane-guide.md +288 -0
- package/skills/uipath-planner/references/multi-skill-patterns-guide.md +1 -1
- package/skills/uipath-planner/references/package-selection-guide.md +2 -2
- package/skills/uipath-planner/references/pdd-driven-lane-guide.md +5 -1
- package/skills/uipath-planner/references/product-selection-guide.md +2 -2
- package/skills/uipath-planner/references/sdd-generation-guide.md +16 -15
- package/skills/uipath-planner/scripts/audit_sdd.py +437 -0
- package/skills/uipath-platform/SKILL.md +7 -2
- package/skills/uipath-platform/references/data-fabric/choice-sets.md +1 -1
- package/skills/uipath-platform/references/data-fabric/data-fabric.md +1 -1
- package/skills/uipath-platform/references/data-fabric/entity-schema.md +37 -21
- package/skills/uipath-platform/references/data-fabric/file-attachments.md +1 -1
- package/skills/uipath-platform/references/guardrails/byo-configurations.md +205 -0
- package/skills/uipath-platform/references/traces/feedback.md +4 -2
- package/skills/uipath-platform/references/uip-commands.md +2 -2
- package/skills/uipath-review/SKILL.md +55 -52
- package/skills/uipath-review/references/agents/agent-grading-rubric.md +62 -40
- package/skills/uipath-review/references/agents/agents-coded-rules.md +7 -1
- package/skills/uipath-review/references/agents/agents-lowcode-rules.md +21 -2
- package/skills/uipath-review/references/agents/guardrails/coded-guardrails-review.md +78 -13
- package/skills/uipath-review/references/agents/guardrails/guardrails-review.md +11 -4
- package/skills/uipath-review/references/architecture-assessment-guide.md +1 -1
- package/skills/uipath-review/references/review-workflow-guide.md +19 -10
- package/skills/uipath-review/references/rule-catalog-workflow.md +6 -6
- package/skills/uipath-review/references/rule-format.md +1 -1
- package/skills/uipath-rpa/SKILL.md +1 -1
- package/skills/uipath-solution/SKILL.md +4 -4
- package/skills/uipath-solution/references/solution-overview.md +7 -2
- package/skills/uipath-tasks/SKILL.md +27 -1
- package/skills/uipath-tasks/references/task-catalogs.md +79 -0
- package/skills/uipath-tasks/references/task-data.md +45 -0
- package/skills/uipath-tasks/references/task-metadata.md +69 -0
- package/skills/uipath-test/SKILL.md +3 -3
- package/skills/uipath-test/references/test-result-report-guide.md +16 -1
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/ambiguous-selector.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/scope-container-wrong-page.md +1 -1
- package/skills/uipath-troubleshoot/references/activity-packages/ui-automation/playbooks/verify-execution-failure.md +2 -2
- package/skills/uipath-troubleshoot/references/products/agents/playbooks/guardrail-violation.md +12 -0
- package/version-manifest.json +2 -2
- package/skills/uipath-maestro-case/assets/templates/sdd-template.md +0 -667
- package/skills/uipath-maestro-case/references/connector-trigger-common.md +0 -511
- package/skills/uipath-maestro-case/references/phase-0-interview.md +0 -279
- package/skills/uipath-maestro-case/references/sdd-generation-rules.md +0 -1026
- package/skills/uipath-review/references/agents/agent-common-issues.md +0 -401
- package/skills/uipath-review/references/agents/agent-review-checklist.md +0 -379
- /package/skills/{uipath-maestro-case → uipath-planner}/assets/templates/sdd-viewer.html +0 -0
|
@@ -23,10 +23,10 @@ uip codedapp push [project-id] [options]
|
|
|
23
23
|
| `[project-id]` | WebApp Project ID | From `UIPATH_PROJECT_ID` env var |
|
|
24
24
|
| `--build-dir <dir>` | Build output directory | `dist` |
|
|
25
25
|
| `--ignore-resources` | Skip importing referenced resources | `false` |
|
|
26
|
-
| `--base-url <url>` | UiPath base URL | From
|
|
27
|
-
| `--org-id <id>` | Organization ID | From
|
|
28
|
-
| `--tenant-id <id>` | Tenant ID | From
|
|
29
|
-
| `--access-token <token>` | Access token | From
|
|
26
|
+
| `--base-url <url>` | UiPath base URL | From `uip login` session |
|
|
27
|
+
| `--org-id <id>` | Organization ID | From `uip login` session |
|
|
28
|
+
| `--tenant-id <id>` | Tenant ID | From `uip login` session |
|
|
29
|
+
| `--access-token <token>` | Access token | From `uip login` session |
|
|
30
30
|
|
|
31
31
|
**Examples:**
|
|
32
32
|
|
|
@@ -71,10 +71,10 @@ uip codedapp pull [project-id] [options]
|
|
|
71
71
|
| `[project-id]` | WebApp Project ID | From `UIPATH_PROJECT_ID` env var |
|
|
72
72
|
| `--overwrite` | Allow overwriting existing local files without prompting | `false` |
|
|
73
73
|
| `--target-dir <dir>` | Local directory to write pulled files | Current directory |
|
|
74
|
-
| `--base-url <url>` | UiPath base URL | From
|
|
75
|
-
| `--org-id <id>` | Organization ID | From
|
|
76
|
-
| `--tenant-id <id>` | Tenant ID | From
|
|
77
|
-
| `--access-token <token>` | Access token | From
|
|
74
|
+
| `--base-url <url>` | UiPath base URL | From `uip login` session |
|
|
75
|
+
| `--org-id <id>` | Organization ID | From `uip login` session |
|
|
76
|
+
| `--tenant-id <id>` | Tenant ID | From `uip login` session |
|
|
77
|
+
| `--access-token <token>` | Access token | From `uip login` session |
|
|
78
78
|
|
|
79
79
|
**Examples:**
|
|
80
80
|
|
|
@@ -115,11 +115,10 @@ uip codedapp pack <dist> [options]
|
|
|
115
115
|
| `--main-file <file>` | Main entry file | `index.html` |
|
|
116
116
|
| `--content-type <type>` | Content type: `webapp`, `library`, `process` | `webapp` |
|
|
117
117
|
| `--dry-run` | Preview packaging without creating the file | `false` |
|
|
118
|
-
| `--
|
|
119
|
-
| `--
|
|
120
|
-
| `--
|
|
121
|
-
| `--
|
|
122
|
-
| `--access-token <token>` | Access token | From `.env` |
|
|
118
|
+
| `--base-url <url>` | UiPath base URL | From `uip login` session |
|
|
119
|
+
| `--org-id <id>` | Organization ID | From `uip login` session |
|
|
120
|
+
| `--tenant-id <id>` | Tenant ID | From `uip login` session |
|
|
121
|
+
| `--access-token <token>` | Access token | From `uip login` session |
|
|
123
122
|
|
|
124
123
|
**Examples:**
|
|
125
124
|
|
|
@@ -168,14 +167,14 @@ uip codedapp publish [options]
|
|
|
168
167
|
| Option | Description | Default |
|
|
169
168
|
|--------|-------------|---------|
|
|
170
169
|
| `-n, --name <name>` | Package name (non-interactive selection) | Auto-select or prompted |
|
|
171
|
-
| `-v, --version <version>` | Package version (requires `--name`) |
|
|
170
|
+
| `-v, --version <version>` | Package version (requires `--name`). Selects the **first** matching `.nupkg` in unsorted `readdir` order — NOT the highest version. Always pass when multiple versions of the same name sit in `.uipath/`. | First name match |
|
|
172
171
|
| `-t, --type <type>` | App type: `Web` or `Action` | `Web` |
|
|
173
172
|
| `--uipath-dir <dir>` | Directory containing `.nupkg` files | `./.uipath` |
|
|
174
|
-
| `--base-url <url>` | UiPath base URL | From
|
|
175
|
-
| `--org-id <id>` | Organization ID | From
|
|
176
|
-
| `--tenant-id <id>` | Tenant ID | From
|
|
177
|
-
| `--tenant-name <name>` | Tenant name (required for registration) | From
|
|
178
|
-
| `--access-token <token>` | Access token | From
|
|
173
|
+
| `--base-url <url>` | UiPath base URL | From `uip login` session |
|
|
174
|
+
| `--org-id <id>` | Organization ID | From `uip login` session |
|
|
175
|
+
| `--tenant-id <id>` | Tenant ID | From `uip login` session |
|
|
176
|
+
| `--tenant-name <name>` | Tenant name (required for registration) | From `uip login` session |
|
|
177
|
+
| `--access-token <token>` | Access token | From `uip login` session |
|
|
179
178
|
|
|
180
179
|
**Examples:**
|
|
181
180
|
|
|
@@ -232,12 +231,13 @@ uip codedapp deploy [options]
|
|
|
232
231
|
|--------|-------------|---------|
|
|
233
232
|
| `-n, --name <name>` | App name | From `.uipath/app.config.json` or prompted |
|
|
234
233
|
| `-v, --version <version>` | Target a specific **published** version (different semantic from `pack`/`publish` `-v`, which is the package version) | Latest |
|
|
235
|
-
| `--
|
|
236
|
-
| `--
|
|
237
|
-
| `--org-
|
|
238
|
-
| `--
|
|
234
|
+
| `--path-name <slug>` | URL slug (routing name). First deploy sets it (defaults to sanitized app name); on upgrade, **omit to keep the URL** — re-passing a taken or previously-used slug fails with `routing name must be unique` | Sanitized app name |
|
|
235
|
+
| `--base-url <url>` | UiPath base URL | From `uip login` session |
|
|
236
|
+
| `--org-id <id>` | Organization ID | From `uip login` session |
|
|
237
|
+
| `--org-name <name>` | Organization name (used for app URL) | From `uip login` session |
|
|
238
|
+
| `--tenant-id <id>` | Tenant ID | From `uip login` session |
|
|
239
239
|
| `--folder-key <key>` | UiPath folder key | From `UIPATH_FOLDER_KEY` env var |
|
|
240
|
-
| `--access-token <token>` | Access token | From
|
|
240
|
+
| `--access-token <token>` | Access token | From `uip login` session |
|
|
241
241
|
|
|
242
242
|
**Examples:**
|
|
243
243
|
|
|
@@ -274,11 +274,11 @@ uip codedapp deploy -n my-webapp --folder-key my-folder-key
|
|
|
274
274
|
|
|
275
275
|
## Common Options
|
|
276
276
|
|
|
277
|
-
|
|
277
|
+
Cloud commands resolve base URL, org, tenant, and access token from your `uip login` session automatically (any login type) — you don't pass them. Pass the corresponding flag only to override a session value.
|
|
278
278
|
|
|
279
279
|
| Option | Description |
|
|
280
280
|
|--------|-------------|
|
|
281
|
-
| `--base-url <url>` | UiPath base URL |
|
|
282
|
-
| `--org-id <id>` | Organization ID |
|
|
283
|
-
| `--tenant-id <id>` | Tenant ID |
|
|
284
|
-
| `--access-token <token>` | Access token |
|
|
281
|
+
| `--base-url <url>` | UiPath base URL (from `uip login` session) |
|
|
282
|
+
| `--org-id <id>` | Organization ID (from `uip login` session) |
|
|
283
|
+
| `--tenant-id <id>` | Tenant ID (from `uip login` session) |
|
|
284
|
+
| `--access-token <token>` | Access token (from `uip login` session) |
|
|
@@ -13,6 +13,8 @@ The data contract is defined in `action-schema.json`.
|
|
|
13
13
|
|
|
14
14
|
> **Document Understanding validation app?** If the user wants a human-review form for DU extraction results (correct fields, edit tables, approve a document), embed the **Validation Station widget** instead of generating a custom form. Follow [widgets/validation-station.md](widgets/validation-station.md) — it replaces the `src/components/Form.tsx` produced by Q4 below.
|
|
15
15
|
|
|
16
|
+
> **Reviewer needs to see a PDF beside the form** (display-only — not DU validation)? Embed the **PDF Viewer widget** in the document pane instead of hand-rolling pdf.js — see [widgets/pdf-viewer.md](widgets/pdf-viewer.md).
|
|
17
|
+
|
|
16
18
|
---
|
|
17
19
|
|
|
18
20
|
## Pre-flight: Collect Required Information
|
|
@@ -402,6 +404,8 @@ Edit `Form.css` only for **structural** Q5 changes the tokens can't express —
|
|
|
402
404
|
|
|
403
405
|
The document source was already settled in **Q3-doc** (direct file input → Attachments, file path (string) input → Buckets, Data Fabric attachment → Entities + Attachments). If it was not — e.g. the user only said "load a PDF from a storage bucket" — go back and ask Q3-doc first; that phrasing does not pick a path. Fetching the bytes for any of those is straightforward — get the file from the service, build a blob URL (`URL.createObjectURL(blob)`), and pass it to the viewer below as `fileUrl`. The part agents get wrong is the **rendering** inside Action Center's sandboxed iframe — that is what the example below exists to get right.
|
|
404
406
|
|
|
407
|
+
> **Prefer the PDF Viewer widget when installable.** `@uipath/ui-widgets-pdf-viewer` replaces this hand-rolled DocumentTab — packaged pdf.js worker (no CDN fetch to be blocked by CSP), bucket/Data Fabric/URL/blob sources without manual byte-fetching, toolbar, password prompts. Follow [widgets/pdf-viewer.md](widgets/pdf-viewer.md), which starts with the required publish-status check. Use the DocumentTab pattern below only when the widget is not yet published/installable.
|
|
408
|
+
|
|
405
409
|
#### Anti-pattern warning — ALWAYS enforce
|
|
406
410
|
|
|
407
411
|
> **If the user's code or plan uses `<embed>`, `<object>`, `<iframe src="...">`, or any browser-native PDF embedding tag to display PDFs, stop and warn them:**
|
|
@@ -227,6 +227,16 @@ Method signatures come from the installed types (`node_modules/@uipath/uipath-ty
|
|
|
227
227
|
|
|
228
228
|
If the user wants a **Document Understanding validation UI** (review/correct extraction results), embed the Validation Station widget — see [widgets/validation-station.md](widgets/validation-station.md). Required scope: `OR.Buckets` (plus `OR.Tasks` if the widget completes an Action Center task on save). Add to the `scope` field in `uipath.json` during Step 4.
|
|
229
229
|
|
|
230
|
+
More prebuilt `@uipath/ui-widgets-*` components — prefer these over hand-rolled UI, and add each widget's scopes to `uipath.json` during Step 4 ([oauth-scopes.md](oauth-scopes.md) § Widgets):
|
|
231
|
+
|
|
232
|
+
| Widget | Use for | Guide |
|
|
233
|
+
|--------|---------|-------|
|
|
234
|
+
| Conversational Agent chat | Chat UI over a conversational agent (streaming, attachments, history) | [widgets/conversational-agent-chat.md](widgets/conversational-agent-chat.md) |
|
|
235
|
+
| DataTable | CRUD grid over a Data Fabric entity | [widgets/datatable.md](widgets/datatable.md) |
|
|
236
|
+
| Multi-file upload | Upload files to a storage bucket | [widgets/multi-file-upload.md](widgets/multi-file-upload.md) |
|
|
237
|
+
| PDF viewer | Display PDFs from buckets, entity attachments, or URLs | [widgets/pdf-viewer.md](widgets/pdf-viewer.md) |
|
|
238
|
+
| External auth | Sign-in buttons for external IdPs (Google/SAML) — NOT UiPath login | [widgets/external-auth.md](widgets/external-auth.md) |
|
|
239
|
+
|
|
230
240
|
When implementing specific SDK services, read the corresponding reference:
|
|
231
241
|
|
|
232
242
|
| Service | Reference |
|
|
@@ -497,6 +497,22 @@ Check the browser console for the error. Common causes: missing `@uipath/coded-a
|
|
|
497
497
|
|
|
498
498
|
After fixing, rebuild (`npm run build`) and re-deploy (`uip codedapp deploy`). If 404 persists, check that `deploy` returned a valid `appUrl` in `.uipath/app.config.json`.
|
|
499
499
|
|
|
500
|
+
### `publish` / `deploy` Fails Under a Client-Credentials Login
|
|
501
|
+
|
|
502
|
+
These are **CLI session** scope failures — distinct from the app's own runtime scopes in `uipath.json` (see [`invalid_scope` Error in Auth URL](#invalid_scope-error-in-auth-url) for that). The session scope comes from `--scope` on `uip login`; the fix is always to re-login requesting `OR.Default` (Orchestrator) **and** `Apps.Read Apps.Write` (Apps service) together:
|
|
503
|
+
|
|
504
|
+
```bash
|
|
505
|
+
uip login --client-id <id> --client-secret <secret> \
|
|
506
|
+
--organization <org> --tenant <tenant> \
|
|
507
|
+
--scope "OR.Default Apps.Read Apps.Write"
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
| Symptom | Cause |
|
|
511
|
+
|---------|-------|
|
|
512
|
+
| Package upload succeeds, then `publish`'s "Registering coded app" step fails with `401` | Session scope is missing `Apps.Read Apps.Write` — registration hits the Apps service, not Orchestrator |
|
|
513
|
+
| `uip or folders list` returns zero rows with `Result: Success`, and `deploy` then rejects a correct `--folder-key` as *"not found among folders accessible to your account"* | Session scope is missing `OR.Default`. Granular Orchestrator scopes (`OR.Folders`/`OR.Execution`/`OR.Administration`) authenticate and publish, but do not cover the folder lookup `deploy` validates against — so the misleading error is about the token, not the GUID |
|
|
514
|
+
| `uip login` itself fails with `invalid_scope` | A requested name is not granted on the External Application. Matching is exact, not hierarchical — requesting `OR.Folders` against an `OR.Folders.Read` grant is rejected. `OR.Default` is auto-granted, so the app itself needs only `Apps.Read` + `Apps.Write` |
|
|
515
|
+
|
|
500
516
|
---
|
|
501
517
|
|
|
502
518
|
## External Application Setup
|
|
@@ -24,6 +24,8 @@ Needed inputs: app name, redirect URI(s), required OAuth scopes (from [oauth-sco
|
|
|
24
24
|
|
|
25
25
|
The CLI takes **flat, comma-separated scope names** (e.g. `OR.Assets,OR.Tasks.Read`) — no portal resource-label grouping. Identity resolves each scope to its resource. Coded web apps use the browser PKCE (authorization_code) flow, so they need **`--user-scope`** (delegated), and a non-confidential client:
|
|
26
26
|
|
|
27
|
+
> **Delimiter trap — `uipath.json` vs CLI.** The `scope` field in `uipath.json` is **space**-separated; `--user-scope`/`--app-scope` are **comma**-separated. Never paste the `uipath.json` string into the CLI: a space-separated list is sent as ONE scope name and fails with `HTTP 400: ... Not all scopes=<your whole list> are present in database` — even though every individual name is valid. Convert spaces → commas first.
|
|
28
|
+
|
|
27
29
|
- `--non-confidential` — public client, no secret (required for browser PKCE).
|
|
28
30
|
- Non-confidential apps support `--user-scope` only. Do NOT pass `--app-scope` with `--non-confidential` — the CLI rejects it.
|
|
29
31
|
- `--redirect-uri` is required for non-confidential / `--user-scope` apps.
|
|
@@ -90,7 +92,7 @@ Fall back to the [Manual portal steps](#manual-portal-fallback) only when:
|
|
|
90
92
|
- the signed-in identity lacks external-app admin permission (`403`) — hand the manual steps to an org admin, OR
|
|
91
93
|
- the CLI genuinely lacks the verb (`uip admin external-apps --help` shows nothing — very old CLI; prefer upgrading).
|
|
92
94
|
|
|
93
|
-
A missing scope name (`scope not found`) is NOT a fallback trigger — fix the name via `uip admin scopes list` and retry.
|
|
95
|
+
A missing scope name (`scope not found` / `Not all scopes=<list> are present in database`) is NOT a fallback trigger. If the rejected `scopes=` string contains **spaces**, the delimiter is the bug — comma-separate and retry (see [Scope model](#scope-model--cli-vs-portal)). Otherwise fix the name via `uip admin scopes list` and retry.
|
|
94
96
|
|
|
95
97
|
## Manual portal fallback
|
|
96
98
|
|
|
@@ -56,7 +56,42 @@ Scopes required by `@uipath/ui-widgets-*` React components. The widget's own run
|
|
|
56
56
|
|
|
57
57
|
See [widgets/validation-station.md](widgets/validation-station.md) for the full integration guide.
|
|
58
58
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
59
|
+
### Conversational Agent Chat (`@uipath/ui-widgets-conversational-agent-chat`)
|
|
60
|
+
|
|
61
|
+
| Required Scope | Why |
|
|
62
|
+
|----------------|-----|
|
|
63
|
+
| `OR.Execution OR.Folders OR.Jobs ConversationalAgents` | Agent resolution, conversation create/list, WebSocket session, attachment upload — the Conversational Agent bundle above. |
|
|
64
|
+
| `Traces.Api` | The widget's feedback flow (`createFeedback` on thumbs up/down). Omitting it breaks feedback silently. |
|
|
65
|
+
|
|
66
|
+
See [widgets/conversational-agent-chat.md](widgets/conversational-agent-chat.md) for the full integration guide.
|
|
67
|
+
|
|
68
|
+
### DataTable (`@uipath/ui-widgets-datatable`)
|
|
69
|
+
|
|
70
|
+
| Required Scope | Why |
|
|
71
|
+
|----------------|-----|
|
|
72
|
+
| `DataFabric.Schema.Read` | Widget reads the entity schema to build columns. |
|
|
73
|
+
| `DataFabric.Data.Read` | Record listing, choice-set/foreign-key resolution, file download. |
|
|
74
|
+
| `DataFabric.Data.Write` | Commit/insert/delete flows and file upload/remove — the grid ships with editing enabled. Omit only if every column is set `editable: false`. |
|
|
75
|
+
|
|
76
|
+
See [widgets/datatable.md](widgets/datatable.md) for the full integration guide.
|
|
77
|
+
|
|
78
|
+
### Multi-File Upload (`@uipath/ui-widgets-multi-file-upload`)
|
|
79
|
+
|
|
80
|
+
| Required Scope | Why |
|
|
81
|
+
|----------------|-----|
|
|
82
|
+
| `OR.Buckets` | Widget uploads files to a storage bucket — a write; read-only `OR.Buckets.Read` is insufficient. |
|
|
83
|
+
|
|
84
|
+
See [widgets/multi-file-upload.md](widgets/multi-file-upload.md) for the full integration guide.
|
|
85
|
+
|
|
86
|
+
### PDF Viewer (`@uipath/ui-widgets-pdf-viewer`)
|
|
87
|
+
|
|
88
|
+
| Required Scope | Why |
|
|
89
|
+
|----------------|-----|
|
|
90
|
+
| `OR.Buckets.Read` (or `OR.Buckets`) | Bucket sources — the widget resolves a read URI and fetches the document. |
|
|
91
|
+
| `DataFabric.Data.Read` | Entity sources — the widget downloads the record's file attachment. |
|
|
92
|
+
|
|
93
|
+
Only the scope for the source shape(s) the app actually uses; `url`/`data` sources need no scopes. See [widgets/pdf-viewer.md](widgets/pdf-viewer.md) for the full integration guide.
|
|
94
|
+
|
|
95
|
+
### External Auth (`@uipath/ui-widgets-external-auth`)
|
|
96
|
+
|
|
97
|
+
No UiPath scopes — the widget makes no UiPath API calls (it starts logins at external IdPs). See [widgets/external-auth.md](widgets/external-auth.md).
|
|
@@ -45,7 +45,6 @@ uip codedapp pack dist -n my-webapp --version 1.0.0 -a "My Team" --description "
|
|
|
45
45
|
| `--main-file <file>` | Main entry file | `index.html` |
|
|
46
46
|
| `--content-type <type>` | `webapp`, `library`, or `process` | `webapp` |
|
|
47
47
|
| `--dry-run` | Preview without creating | `false` |
|
|
48
|
-
| `--reuse-client` | Reuse clientId from `uipath.json` | `false` |
|
|
49
48
|
|
|
50
49
|
### Content Types
|
|
51
50
|
|
|
@@ -69,9 +68,7 @@ The `.nupkg` includes auto-generated UiPath metadata files:
|
|
|
69
68
|
|
|
70
69
|
### OAuth Client ID
|
|
71
70
|
|
|
72
|
-
|
|
73
|
-
- First pack: creates a new non-confidential client ID
|
|
74
|
-
- Subsequent packs: use `--reuse-client` to keep the existing client ID from `uipath.json`
|
|
71
|
+
`pack` **copies `uipath.json` verbatim** into the package — it does **not** create, mint, or modify the OAuth client ID. The `clientId` is set once at **scaffold time** (from the External Application) and carried through unchanged by every pack. `uipath.json` is the single source of truth — ensure its `clientId` is correct before packing.
|
|
75
72
|
|
|
76
73
|
### Dry Run
|
|
77
74
|
|
|
@@ -112,7 +109,7 @@ uip codedapp publish -n my-webapp --version 1.0.0
|
|
|
112
109
|
| Option | Description | Default |
|
|
113
110
|
|--------|-------------|---------|
|
|
114
111
|
| `-n, --name <name>` | Package name (skip interactive selection) | Auto or prompted |
|
|
115
|
-
| `-v, --version <version>` | Package version (requires `--name`) |
|
|
112
|
+
| `-v, --version <version>` | Package version (requires `--name`). Selects the **first** matching `.nupkg` in unsorted `readdir` order — NOT the highest version. Always pass when multiple versions of the same name sit in `.uipath/`, else publish may pick an old already-published version → `already exists`. | First name match |
|
|
116
113
|
| `-t, --type <type>` | App type: `Web` or `Action` | `Web` |
|
|
117
114
|
| `--uipath-dir <dir>` | Directory containing `.nupkg` files | `./.uipath` |
|
|
118
115
|
|
|
@@ -128,11 +125,13 @@ uip codedapp publish -n my-webapp --version 1.0.0
|
|
|
128
125
|
### What Happens Internally
|
|
129
126
|
|
|
130
127
|
1. Selects the `.nupkg` file (auto-select, by name, or interactive)
|
|
131
|
-
2. Uploads the package to Orchestrator via the OData API — needs
|
|
128
|
+
2. Uploads the package to Orchestrator via the OData API — needs `OR.Default`
|
|
132
129
|
3. Registers the coded app with the UiPath Apps service — needs `Apps.Read Apps.Write`
|
|
133
130
|
4. Creates `.uipath/app.config.json` with registration metadata
|
|
134
131
|
|
|
135
|
-
> **Steps 2 and 3 hit different services with different scope requirements.** The `uip login` session `--scope` must cover **both
|
|
132
|
+
> **Steps 2 and 3 hit different services with different scope requirements.** The `uip login` session `--scope` must cover **both services** — Orchestrator for step 2, the Apps service for step 3. Interactive `uip login` grants a broad default that includes both; client-credentials logins must request `OR.Default Apps.Read Apps.Write` explicitly, and granular Orchestrator scopes are not a substitute for `OR.Default`. These are the *CLI session* scopes — separate from the runtime OAuth scopes in `uipath.json`. For the failure signatures when either scope set is missing, see [debug.md](debug.md#publish--deploy-fails-under-a-client-credentials-login).
|
|
133
|
+
|
|
134
|
+
> **`pack`/`publish`/`deploy` read org, tenant, base URL, and token from your `uip login` session** — you don't pass `--org-id`, `--tenant-id`, `--base-url`, or set a `.env` for them. Any `uip login` populates the session (interactive or client-credential). This is the *CLI session* config — distinct from `orgName`/`tenantName`/`baseUrl` in `uipath.json`, which configure the deployed app's **runtime SDK** calls, not the CLI.
|
|
136
135
|
|
|
137
136
|
### App Config File
|
|
138
137
|
|
|
@@ -187,8 +186,9 @@ uip codedapp deploy -n my-webapp
|
|
|
187
186
|
|--------|-------------|---------|
|
|
188
187
|
| `-n, --name <name>` | App name | From `app.config.json` or prompted |
|
|
189
188
|
| `-v, --version <version>` | Target a **specific published version** (different semantic from `pack`/`publish`'s `-v`). **Prefer omitting it** — let it default to Latest. Passing a version that the catalog hasn't finished indexing yields a misleading `"...has not been published yet"` error. | Latest |
|
|
189
|
+
| `--path-name <slug>` | URL slug (routing name). **First deploy sets it**; on **upgrade** it's optional — omit to keep the current URL. See "Routing Name on Upgrade" below. | Sanitized app name |
|
|
190
190
|
| `--folder-key <key>` | UiPath folder **key** (GUID, not the name). **Always pass explicitly** — see below. | From `UIPATH_FOLDER_KEY` env var, else interactive (avoid) |
|
|
191
|
-
| `--org-name <name>` | Organization name (for app URL) | From
|
|
191
|
+
| `--org-name <name>` | Organization name (for app URL) | From `uip login` session |
|
|
192
192
|
|
|
193
193
|
### Fresh Deploy vs. Upgrade
|
|
194
194
|
|
|
@@ -202,6 +202,20 @@ The command resolves the app name from:
|
|
|
202
202
|
2. `.uipath/app.config.json` (created by `publish`)
|
|
203
203
|
3. Interactive prompt (fallback)
|
|
204
204
|
|
|
205
|
+
Deploy picks fresh-vs-upgrade purely on whether the app is **already deployed** (matched by display title) — **not** on the version. `-v` only selects which published version an upgrade targets.
|
|
206
|
+
|
|
207
|
+
### Routing Name (`--path-name`) on Upgrade
|
|
208
|
+
|
|
209
|
+
`--path-name` sets the app's **URL slug** (routing name). How it's treated depends on the fresh-vs-upgrade path above:
|
|
210
|
+
|
|
211
|
+
- **First deploy:** creates the slug. Omitted → defaults to the sanitized app name. If the slug is already taken → `routing name must be unique`.
|
|
212
|
+
- **Upgrade, `--path-name` omitted:** routing name unchanged; app keeps its current URL. **Default and safest — use this for a normal upgrade.**
|
|
213
|
+
- **Upgrade, current slug re-passed:** no-op, accepted.
|
|
214
|
+
- **Upgrade, new unused slug:** routing name is **rewritten** — the app's URL **changes**.
|
|
215
|
+
- **Upgrade, slug taken by another app (or one this app previously used and moved off):** ❌ `routing name must be unique`. Vacated slugs were **not** reusable in testing — treat prior routing names as reserved.
|
|
216
|
+
|
|
217
|
+
> **On upgrade, omit `--path-name` unless you deliberately want to change the URL.** Re-passing a slug the app no longer owns fails with `routing name must be unique`.
|
|
218
|
+
|
|
205
219
|
### Folder Key
|
|
206
220
|
|
|
207
221
|
The `deploy` command requires a folder **key** (GUID), not a folder name. Users typically know the folder name only — resolve the key via `uip or folders list` before calling `deploy`.
|
|
@@ -215,7 +229,7 @@ Resolution order:
|
|
|
215
229
|
|
|
216
230
|
#### Resolving folder name → folder key
|
|
217
231
|
|
|
218
|
-
When the user provides a folder **name** (e.g., `"Shared"`), resolve it
|
|
232
|
+
When the user provides a folder **name** (e.g., `"Shared"`), resolve it with the **server-side `--name` filter** — do **not** fetch the full list and match client-side. The plain list is **paginated at 50 per page**, so a folder beyond the first page is silently missed. `--name` (contains match), `--path` (prefix), and `--type` all **require `--all`**.
|
|
219
233
|
|
|
220
234
|
> **Prerequisite:** `uip or ...` commands require the Orchestrator tool. Run `uip tools list` first; if `orchestrator-tool` is missing, install it once: `uip tools install @uipath/orchestrator-tool`.
|
|
221
235
|
|
|
@@ -223,10 +237,10 @@ When the user provides a folder **name** (e.g., `"Shared"`), resolve it to a key
|
|
|
223
237
|
# 0. Ensure the Orchestrator tool is installed (idempotent — skip if already present)
|
|
224
238
|
uip tools list --output json | grep -q '"orchestrator-tool"' || uip tools install @uipath/orchestrator-tool
|
|
225
239
|
|
|
226
|
-
# 1.
|
|
227
|
-
uip or folders list --output json > /tmp/folders.json
|
|
240
|
+
# 1. Filter by name server-side (--name is a CONTAINS match, and requires --all)
|
|
241
|
+
uip or folders list --all --name "Shared" --output json > /tmp/folders.json
|
|
228
242
|
|
|
229
|
-
# 2.
|
|
243
|
+
# 2. Pick the EXACT-name match — --name may return several; never blindly take .Data[0]
|
|
230
244
|
FOLDER_KEY=$(python3 -c "
|
|
231
245
|
import json
|
|
232
246
|
with open('/tmp/folders.json') as f:
|
|
@@ -239,11 +253,12 @@ print(match['Key'] if match else '')
|
|
|
239
253
|
uip codedapp deploy -n my-webapp --folder-key "$FOLDER_KEY"
|
|
240
254
|
```
|
|
241
255
|
|
|
242
|
-
If the name is ambiguous (multiple matches) or not found, surface an error
|
|
256
|
+
If the exact name is ambiguous (multiple exact matches) or not found, surface an error — do NOT fall through to interactive selection.
|
|
243
257
|
|
|
244
|
-
`
|
|
258
|
+
- `--all` covers **Standard + Solution** folders. A **personal workspace** is *not* in `--all` — resolve it from the default `uip or folders list --output json` where `Type == "Personal"` (or `uip or folders list --all --type personal`).
|
|
259
|
+
- For a nested folder, use `--path "<prefix>"` (also requires `--all`).
|
|
245
260
|
|
|
246
|
-
Each folder JSON object includes: `Key` (GUID — pass this to `--folder-key`), `Name`, `Path`, `
|
|
261
|
+
Each folder JSON object includes: `Key` (GUID — pass this to `--folder-key`), `Name`, `Path`, `Type` (`Personal` / `Solution` / `Standard`), `ParentKey`.
|
|
247
262
|
|
|
248
263
|
#### Storing the resolved key
|
|
249
264
|
|
|
@@ -311,10 +326,10 @@ uip codedapp deploy
|
|
|
311
326
|
|
|
312
327
|
```bash
|
|
313
328
|
# Non-interactive flow with explicit options — every flag passed, no prompts.
|
|
314
|
-
# --scope MUST
|
|
315
|
-
#
|
|
329
|
+
# --scope MUST name OR.Default (Orchestrator) AND Apps.Read Apps.Write
|
|
330
|
+
# (Apps-service registration in publish) — neither set covers the other.
|
|
316
331
|
uip login --client-id $CLIENT_ID --client-secret $CLIENT_SECRET \
|
|
317
|
-
--scope "OR.
|
|
332
|
+
--scope "OR.Default Apps.Read Apps.Write"
|
|
318
333
|
npm run build
|
|
319
334
|
uip codedapp pack dist -n my-webapp --version $VERSION
|
|
320
335
|
uip codedapp publish -n my-webapp --version $VERSION
|
|
@@ -341,9 +356,10 @@ uip codedapp deploy -n my-webapp --folder-key "$FOLDER_KEY"
|
|
|
341
356
|
| Problem | Cause | Solution |
|
|
342
357
|
|---------|-------|----------|
|
|
343
358
|
| `No packages found` | Missing `.nupkg` | Run `uip codedapp pack` first |
|
|
344
|
-
| `
|
|
345
|
-
| `App not found` on deploy | App not published | Run `uip codedapp publish` first |
|
|
359
|
+
| `Published app with package name '<name>' and version '<version>' already exists` (HTTP 400 on publish) | That name+version is already published — the upload step succeeds (`Package already exists … proceeding`), then **registration** rejects the duplicate | Bump `--version` and re-publish |
|
|
360
|
+
| `App not found` on deploy | App genuinely not published | Run `uip codedapp publish` first |
|
|
361
|
+
| `has not been published yet` / `still being indexed` right after a successful publish | Catalog **indexing lag** — not a missing package | CLI auto-retries ~15s (1/2/4/8s backoff). If it still fails, **wait a few seconds and rerun `deploy`**. If you passed `-v <version>`, drop it — deploy defaults to Latest. |
|
|
346
362
|
| `Folder key required` / deploy hangs on prompt | Missing folder key | Resolve via `uip or folders list --output json`, then run `uip codedapp deploy --folder-key <key> ...` (or `UIPATH_FOLDER_KEY=<key>` env-var prefix). |
|
|
347
363
|
| `Missing tenant name` on publish | `UIPATH_TENANT_NAME` not set | Set in `.env` or pass `--tenant-name` |
|
|
348
364
|
| `dist/ not found` | App not built | Run `npm run build` |
|
|
349
|
-
| Pack shows wrong clientId | Stale `uipath.json` |
|
|
365
|
+
| Pack shows wrong clientId | Stale `uipath.json` | `pack` copies `uipath.json` verbatim — fix `clientId` there. |
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Signatures/params/examples for services, event-helper classes, options, enums: `dist/conversational-agent/index.d.ts`. Per-method scopes: shipped `docs/oauth-scopes.md`. This file covers only what neither can express.
|
|
4
4
|
|
|
5
|
+
> **Building a chat UI with a conversational agent?** The `@uipath/ui-widgets-conversational-agent-chat` widget ships the complete chat experience (streaming, attachments, history, feedback) — embed it instead of hand-wiring: [../widgets/conversational-agent-chat.md](../widgets/conversational-agent-chat.md). Use this file when the widget's UI cannot express the requirement.
|
|
6
|
+
|
|
5
7
|
> **Scope fork warning:** scopes differ per METHOD GROUP inside this one service (agent reads vs conversation create/update vs sessions vs feedback vs user settings each need a different scope set). Never assume service-uniform scopes — check the shipped per-method table; task-level bundles: [../oauth-scopes.md](../oauth-scopes.md).
|
|
6
8
|
|
|
7
9
|
## Session Lifecycle (WebSocket)
|
|
@@ -4,6 +4,8 @@ Signatures/params/examples: `dist/entities/index.d.ts` (trigger-event behavior d
|
|
|
4
4
|
|
|
5
5
|
> **Scope pairing warning:** schema introspection (`entities.getAll()` / `getById()`) and record I/O sit in different scope pairs — `DataFabric.Schema.Read` vs `DataFabric.Data.Read` / `DataFabric.Data.Write`. This file mandates schema introspection before writes and filters, so an app with only Data scopes 403s on the introspection step. Check the shipped table per method.
|
|
6
6
|
|
|
7
|
+
> **Building a CRUD grid over one entity?** Embed the DataTable widget instead of hand-wiring ag-Grid + record I/O — [../widgets/datatable.md](../widgets/datatable.md). The traps below still apply to any direct SDK calls the host app makes around it.
|
|
8
|
+
|
|
7
9
|
## Anti-shapes & gotchas (read first)
|
|
8
10
|
|
|
9
11
|
Data Fabric does NOT behave like a typical RDBMS. These server behaviors are invisible to both the types and the JSDoc. Before writing analytics, filters, or update logic, call `entities.getById(id)` and inspect `fields[].name` + `fieldDataType.name`. Pick your data strategy from what's actually there — do NOT assume.
|
|
@@ -66,6 +66,8 @@ export const fetchDetailByKey: MetricDetailByKeyFn = async (sdk, agentName) => {
|
|
|
66
66
|
|
|
67
67
|
`getFiles` (folder-aware `BucketFile` items, regex filtering) vs `getFileMetaData` (flat `BlobItem` list by `prefix`): prefer **`getFiles`** for directory-style browsing. Neither method's JSDoc mentions the other. Note `JobGetResponse.process` is populated only via `expand` (its JSDoc, unlike `machine`/`robot`, does not say so).
|
|
68
68
|
|
|
69
|
+
Bucket UI shortcuts: uploading files → Multi-File Upload widget ([../widgets/multi-file-upload.md](../widgets/multi-file-upload.md)); displaying a bucket PDF → PDF Viewer widget ([../widgets/pdf-viewer.md](../widgets/pdf-viewer.md)).
|
|
70
|
+
|
|
69
71
|
## Attachments Service
|
|
70
72
|
|
|
71
73
|
Cross-artifact role the types don't show: Coded Action Apps resolve a `type: "file"` input — the file reference handed in by the automation (Maestro / Agent / RPA) — into bytes via `Attachments.getById()` → `blobFileAccess` (signed URL + headers). `Jobs.getOutput()` uses the same service internally for file-type outputs (see scope pairing warning above). When `blobFileAccess.requiresAuth` is `true`, pass `blobFileAccess.headers` on the download request.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# Conversational Agent Chat Widget
|
|
2
|
+
|
|
3
|
+
React chat interface for UiPath **Conversational Agents**: streaming responses, file attachments, tool-call visualization, conversation history, and thumbs-up/down feedback — all prebuilt.
|
|
4
|
+
|
|
5
|
+
Package: [`@uipath/ui-widgets-conversational-agent-chat`](https://www.npmjs.com/package/@uipath/ui-widgets-conversational-agent-chat). Full prop/API surface lives in the package README — this file covers only the integration steps that are easy to get wrong inside a Coded App.
|
|
6
|
+
|
|
7
|
+
## When to Use
|
|
8
|
+
|
|
9
|
+
- User asks to **chat with / talk to / embed a chat for** a conversational agent inside a coded app.
|
|
10
|
+
- Replaces a hand-rolled chat UI over the SDK's session/exchange events. Do **not** rebuild streaming, attachments, history, or feedback from scratch — the widget already wires all of it. Hand-roll with [../sdk/conversational-agent.md](../sdk/conversational-agent.md) only when the widget's UI genuinely cannot fit (e.g., fully custom message rendering).
|
|
11
|
+
|
|
12
|
+
**Two exports.** `ConversationalAgentChat` — chat with a known agent (`agentId`). `ConversationalAgentPickerChat` — lists all agents the SDK session can access, user picks one, chat opens; use when `agentId`/`folderId` are not known up front.
|
|
13
|
+
|
|
14
|
+
## Critical Rules
|
|
15
|
+
|
|
16
|
+
1. **Peer versions are hard requirements.** `react >= 19.2.0`, `react-dom >= 19.2.0`, `@uipath/uipath-typescript >= 1.5.5` — note the SDK floor is **higher** than other widgets. Verify `package.json` before installing.
|
|
17
|
+
2. **Import the stylesheet once** or the chat renders unstyled: `import '@uipath/ui-widgets-conversational-agent-chat/ConversationalAgentChat.css'`.
|
|
18
|
+
3. **Body needs `light` or `dark` class** for theming.
|
|
19
|
+
4. **Reuse the app's initialized `UiPath` instance** (`useAuth()` in web apps). Do not construct a second SDK for the widget.
|
|
20
|
+
5. **Required scopes:** `OR.Execution OR.Folders OR.Jobs ConversationalAgents Traces.Api` — the Conversational Agent bundle in [../oauth-scopes.md](../oauth-scopes.md). `Traces.Api` covers the feedback (thumbs up/down) flow; omitting it breaks feedback silently.
|
|
21
|
+
6. **`agentId` is the numeric agent release id, not the agent name.** Pass `folderId` whenever known — when omitted, the widget lists all agents to resolve it (extra calls, slower first paint).
|
|
22
|
+
7. **Give the widget a bounded-height container.** It fills its parent; an auto-height parent collapses the chat. Wrap in a fixed-height or flex-sized element (e.g. `height: '80vh'` or a `flex: 1` pane).
|
|
23
|
+
8. **No special `vite.config.ts` setup.** Unlike Validation Station, no asset-copy plugins or `optimizeDeps.exclude` needed. PDF attachment previews run pdf.js on the main thread inside the widget — no worker config.
|
|
24
|
+
|
|
25
|
+
## Install
|
|
26
|
+
|
|
27
|
+
From inside the scaffolded app directory:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm install @uipath/ui-widgets-conversational-agent-chat --@uipath:registry=https://registry.npmjs.org
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Registry flag forces the public npm registry (skill default — users may have `@uipath` scoped to GitHub Packages).
|
|
34
|
+
|
|
35
|
+
## Key Props
|
|
36
|
+
|
|
37
|
+
Full tables in the package README. Inside a coded app you usually only touch:
|
|
38
|
+
|
|
39
|
+
### `ConversationalAgentChat`
|
|
40
|
+
|
|
41
|
+
| Prop | Required | Notes |
|
|
42
|
+
|------|----------|-------|
|
|
43
|
+
| `sdk` | Yes | Initialized `UiPath` instance from `useAuth()`. |
|
|
44
|
+
| `agentId` | No* | Numeric agent release id. *Required unless `existingConversationId` is provided. |
|
|
45
|
+
| `folderId` | No | Folder the agent lives in. Pass when known — avoids a resolve-by-listing round trip. |
|
|
46
|
+
| `existingConversationId` | No | Open an existing conversation instead of creating one on first message. |
|
|
47
|
+
| `inputSchema` | No | Overrides the schema derived from the resolved agent (e.g., in-progress draft agents). |
|
|
48
|
+
| `isDebugMode` | No | Debug flow: opens an empty conversation up front; submits update it instead of creating new ones. |
|
|
49
|
+
| `externalUserId` | No | Sent as `x-uipath-external-user-id`. Only for app-scoped external-app tokens; omit for standard user tokens. |
|
|
50
|
+
|
|
51
|
+
### `ConversationalAgentPickerChat`
|
|
52
|
+
|
|
53
|
+
| Prop | Required | Notes |
|
|
54
|
+
|------|----------|-------|
|
|
55
|
+
| `sdk` | Yes | Changing it refetches the agent list and resets the UI. |
|
|
56
|
+
| `theme` / `locale` / `readOnly` / `overrideLabels` | No | Passthrough to the inner chat. |
|
|
57
|
+
| `onAgentSelected` | No | `(agent) => void` — telemetry/routing hook when the user picks an agent. |
|
|
58
|
+
|
|
59
|
+
Picker behavior: lists agents via `new ConversationalAgent(sdk).getAll()`, one row per agent; clicking opens the chat with that agent's `id`/`folderId`; "Back" returns to the list without refetching. To switch tenants, rebuild the `UiPath` instance and pass the new one as `sdk`.
|
|
60
|
+
|
|
61
|
+
## Integration: Web App
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
import { ConversationalAgentChat } from '@uipath/ui-widgets-conversational-agent-chat';
|
|
65
|
+
import '@uipath/ui-widgets-conversational-agent-chat/ConversationalAgentChat.css';
|
|
66
|
+
import { useAuth } from '../hooks/useAuth';
|
|
67
|
+
|
|
68
|
+
function AgentChatPage({ agentId, folderId }: { agentId: number; folderId: number }) {
|
|
69
|
+
const { sdk } = useAuth();
|
|
70
|
+
|
|
71
|
+
return (
|
|
72
|
+
<div style={{ height: '80vh' }}>
|
|
73
|
+
<ConversationalAgentChat sdk={sdk} agentId={agentId} folderId={folderId} />
|
|
74
|
+
</div>
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export default AgentChatPage;
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Agent id unknown at build time? Either render `ConversationalAgentPickerChat` (user picks), or resolve programmatically with the SDK (`new ConversationalAgent(sdk).getAll()` → match on name → pass `id` + `folderId`; import from `@uipath/uipath-typescript/conversational-agent`).
|
|
82
|
+
|
|
83
|
+
## Anti-patterns
|
|
84
|
+
|
|
85
|
+
- **Do not hand-roll the chat UI with `startSession()`/`onExchangeStart` when this widget fits.** [../sdk/conversational-agent.md](../sdk/conversational-agent.md) is for custom UIs the widget cannot express.
|
|
86
|
+
- **Do not construct a second `UiPath` SDK** for the widget. Reuse the app's authenticated instance.
|
|
87
|
+
- **Do not pass the agent name as `agentId`** — it is the numeric release id.
|
|
88
|
+
- **Do not skip the CSS import** — the widget renders but looks broken (unstyled Apollo components).
|
|
89
|
+
- **Do not set `externalUserId` for normal user-token sessions** — it is only for app-scoped external application auth.
|
|
90
|
+
- **Do not drop `Traces.Api` from the scope** because "the app doesn't use traces" — the widget's feedback buttons need it.
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# DataTable Widget
|
|
2
|
+
|
|
3
|
+
React datatable (ag-Grid) over a single **Data Fabric entity**: CRUD, inline editing with diff review, master-detail grouping by foreign key, choice sets, file fields, filtering/sorting/pagination — all prebuilt.
|
|
4
|
+
|
|
5
|
+
Package: [`@uipath/ui-widgets-datatable`](https://www.npmjs.com/package/@uipath/ui-widgets-datatable). Full prop/API surface lives in the package README — this file covers only the integration steps that are easy to get wrong inside a Coded App.
|
|
6
|
+
|
|
7
|
+
## When to Use
|
|
8
|
+
|
|
9
|
+
- User asks to **browse, edit, or manage records** of a Data Fabric entity in a grid/table.
|
|
10
|
+
- Replaces a hand-rolled ag-Grid/table + entity CRUD plumbing. Do **not** rebuild this UI from scratch — the widget already handles schema-driven columns, per-field-type editors, diff/commit, choice-set and foreign-key resolution, and file upload/download.
|
|
11
|
+
- For custom read-only tables over *non-entity* data (Jobs, Tasks, etc.), use the standard table patterns in [../patterns.md](../patterns.md) instead — this widget only renders Data Fabric entities.
|
|
12
|
+
|
|
13
|
+
## Critical Rules
|
|
14
|
+
|
|
15
|
+
1. **Peer versions are hard requirements.** `react >= 19.2.0`, `react-dom >= 19.2.0`, `@uipath/uipath-typescript >= 1.4.1`.
|
|
16
|
+
2. **Import the stylesheet once** or the grid renders unstyled: `import '@uipath/ui-widgets-datatable/DataTable.css'`.
|
|
17
|
+
3. **Body needs `light` or `dark` class** for theming.
|
|
18
|
+
4. **`entityId` is the entity UUID, not the display name.** Resolve it via `new Entities(sdk).getAll()` at runtime or `uip df entities list --output json` at build time. Passing the friendly name fails. See [../sdk/data-fabric.md](../sdk/data-fabric.md).
|
|
19
|
+
5. **Required scopes:** `DataFabric.Schema.Read DataFabric.Data.Read` to display; add `DataFabric.Data.Write` because the grid ships with editing enabled (commit/insert/delete/file upload 403 without it). See [../oauth-scopes.md](../oauth-scopes.md).
|
|
20
|
+
6. **There is no global read-only prop.** To present a read-only grid, disable editing per column via `columnConfig` (`editable: false`) — otherwise users can edit cells and the commit fails or writes data you didn't intend.
|
|
21
|
+
7. **`columnConfig` keys are column display names**, not entity field names (e.g. `"Edition Name"`, not `editionName`).
|
|
22
|
+
8. **The widget already paginates** (ag-Grid, `pageSize` default 50) — this satisfies the skill's table-pagination rule. Do not wrap it in your own pagination or fetch records yourself; there is no prop to inject rows — the widget fetches from the entity itself.
|
|
23
|
+
9. **Reuse the app's initialized `UiPath` instance** (`useAuth()`); do not construct a second SDK.
|
|
24
|
+
10. **No special `vite.config.ts` setup** — no asset plugins or `optimizeDeps` changes needed.
|
|
25
|
+
|
|
26
|
+
## Install
|
|
27
|
+
|
|
28
|
+
From inside the scaffolded app directory:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
npm install @uipath/ui-widgets-datatable --@uipath:registry=https://registry.npmjs.org
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Registry flag forces the public npm registry (skill default — users may have `@uipath` scoped to GitHub Packages).
|
|
35
|
+
|
|
36
|
+
## Key Props
|
|
37
|
+
|
|
38
|
+
| Prop | Required | Notes |
|
|
39
|
+
|------|----------|-------|
|
|
40
|
+
| `sdk` | Yes | Initialized `UiPath` instance from `useAuth()`. |
|
|
41
|
+
| `entityId` | Yes | Data Fabric entity **UUID**. |
|
|
42
|
+
| `pageSize` | No | Rows per page (default 50). |
|
|
43
|
+
| `showIdColumn` | No | Show the record Id column. |
|
|
44
|
+
| `columnConfig` | No | `Record<displayName, ColDef>` — ag-Grid column overrides (width, `editable: false`, cell styles, class rules). |
|
|
45
|
+
| `rowClassRules` | No | ag-Grid conditional row classes, e.g. `{ 'row-alert': p => p.data.status === 'Failed' }`. |
|
|
46
|
+
| `customPaddingForExpandedRow` | No | Pixel padding for expanded rows in group-by mode. |
|
|
47
|
+
|
|
48
|
+
## Built-in Flows (what the toolbar does)
|
|
49
|
+
|
|
50
|
+
Know these so you don't duplicate them in the host app:
|
|
51
|
+
|
|
52
|
+
- **Read** — loads schema + records on mount (`expansionLevel: 2`, choice sets pre-fetched); **Refresh** reloads.
|
|
53
|
+
- **Update** — cell edits are tracked, **Show Diff (N)** opens original-vs-edited review with per-field revert, **Commit Changes** calls `updateRecords`.
|
|
54
|
+
- **Create** — **Add Row** pins an empty row on top; **Insert Records** persists, **Discard** drops them.
|
|
55
|
+
- **Delete** — checkbox selection → **Delete Records** → confirm dialog.
|
|
56
|
+
- **Group by** — pick a foreign-key column; rows nest under master records. Inline editing and row selection are **disabled in group-by mode**.
|
|
57
|
+
- **Field types** — text/multiline/number/date/boolean/single- and multi-choice sets/foreign keys handled automatically; DateTime renders read-only; File fields get upload/open/download/remove controls.
|
|
58
|
+
|
|
59
|
+
## Integration: Web App
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
import { DataTable } from '@uipath/ui-widgets-datatable';
|
|
63
|
+
import '@uipath/ui-widgets-datatable/DataTable.css';
|
|
64
|
+
import { useAuth } from '../hooks/useAuth';
|
|
65
|
+
|
|
66
|
+
function RecordsPage({ entityId }: { entityId: string }) {
|
|
67
|
+
const { sdk } = useAuth();
|
|
68
|
+
|
|
69
|
+
return (
|
|
70
|
+
<DataTable
|
|
71
|
+
sdk={sdk}
|
|
72
|
+
entityId={entityId}
|
|
73
|
+
pageSize={50}
|
|
74
|
+
columnConfig={{ 'Created At': { editable: false } }}
|
|
75
|
+
/>
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export default RecordsPage;
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Entity UUID unknown up front? List entities and let the user pick:
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
import { Entities } from '@uipath/uipath-typescript/entities';
|
|
86
|
+
|
|
87
|
+
const entities = await new Entities(sdk).getAll(); // [{ id, name, displayName }, ...]
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Anti-patterns
|
|
91
|
+
|
|
92
|
+
- **Do not rebuild an entity CRUD grid by hand** (ag-Grid + `getAllRecords` + custom editors) when this widget fits.
|
|
93
|
+
- **Do not pass the entity display name as `entityId`** — UUID only.
|
|
94
|
+
- **Do not fetch records yourself and expect to feed them in** — there is no `rows`/`data` prop; the widget owns fetching.
|
|
95
|
+
- **Do not ship with `DataFabric.Data.Read` only while editing is enabled** — edits fail at commit with 403; either add `DataFabric.Data.Write` or set columns `editable: false`.
|
|
96
|
+
- **Do not key `columnConfig` by field name** — keys are display names.
|
|
97
|
+
- **Do not seed or migrate data through the widget** — for bulk writes use the SDK/CLI directly; see [../sdk/data-fabric.md](../sdk/data-fabric.md) for choice-value translation traps.
|