@uipath/skills 1.197.2 → 1.198.0-preview.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/CODEOWNERS +18 -11
- package/README.md +1 -0
- package/assets/skill-status.json +8 -0
- package/hooks/hooks.json +44 -8
- package/hooks/send-telemetry.ps1 +392 -0
- package/hooks/send-telemetry.sh +118 -86
- package/hooks/set-session-env.ps1 +72 -0
- package/hooks/set-session-env.sh +64 -0
- package/hooks/suggest-permissions.ps1 +45 -0
- package/hooks/suggest-permissions.sh +4 -0
- package/package.json +1 -1
- package/skills/uipath-admin/references/audit-commands.md +2 -2
- package/skills/uipath-admin/references/audit-workflow-guide.md +4 -4
- package/skills/uipath-agents/references/coded/capabilities/batch-transform/planning.md +1 -1
- package/skills/uipath-agents/references/coded/capabilities/deeprag/planning.md +1 -1
- package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails-recommend.md +5 -2
- package/skills/uipath-agents/references/coded/capabilities/guardrails/guardrails.md +8 -4
- package/skills/uipath-agents/references/coded/embedding-in-flows.md +1 -1
- package/skills/uipath-agents/references/coded/flow-integration.md +2 -2
- package/skills/uipath-agents/references/coded/lifecycle/build.md +0 -1
- package/skills/uipath-agents/references/coded/lifecycle/setup.md +0 -1
- package/skills/uipath-agents/references/coded/quickstart.md +1 -1
- package/skills/uipath-agents/references/lowcode/agent-definition.md +24 -5
- package/skills/uipath-agents/references/lowcode/capabilities/built-in-tools/batch-transform/planning.md +1 -1
- package/skills/uipath-agents/references/lowcode/capabilities/built-in-tools/deeprag/planning.md +1 -1
- package/skills/uipath-agents/references/lowcode/capabilities/context/attachments.md +1 -0
- package/skills/uipath-agents/references/lowcode/capabilities/guardrails/guardrails-recommend.md +1 -0
- package/skills/uipath-api-workflow/references/cli-reference.md +1 -1
- package/skills/uipath-api-workflow/references/connector-activity-discovery.md +1 -1
- package/skills/uipath-api-workflow/references/troubleshooting.md +1 -1
- package/skills/uipath-automation-discovery/SKILL.md +26 -1
- package/skills/uipath-automation-discovery/assets/templates/estimation-worksheet-template.md +80 -0
- package/skills/uipath-automation-discovery/references/estimation-guide.md +104 -0
- package/skills/uipath-connector-builder/SKILL.md +6 -4
- package/skills/uipath-connector-builder/references/auth.md +137 -13
- package/skills/uipath-connector-builder/references/configuration.md +29 -7
- package/skills/uipath-connector-builder/references/debugging.md +1 -1
- package/skills/uipath-connector-builder/references/standard-resources.md +162 -13
- package/skills/uipath-governance/references/cli-cheatsheet.md +3 -3
- package/skills/uipath-governance/references/diagnose/references/failure-modes.md +5 -5
- package/skills/uipath-insights/SKILL.md +277 -0
- package/skills/uipath-insights/references/investigation-playbook-guide.md +145 -0
- package/skills/uipath-insights/references/jobs-commands-guide.md +144 -0
- package/skills/uipath-ixp/SKILL.md +4 -1
- package/skills/uipath-ixp/references/cli-reference.md +18 -3
- package/skills/uipath-maestro-bpmn/references/cli-conventions.md +2 -0
- package/skills/uipath-maestro-bpmn/validator/README.md +12 -2
- package/skills/uipath-maestro-case/SKILL.md +27 -13
- package/skills/uipath-maestro-case/assets/templates/sdd-template-examples.md +37 -4
- package/skills/uipath-maestro-case/assets/templates/sdd-template.md +20 -9
- package/skills/uipath-maestro-case/assets/templates/sdd-viewer.html +8 -7
- package/skills/uipath-maestro-case/references/bindings-v2-sync.md +5 -1
- package/skills/uipath-maestro-case/references/brownfield.md +86 -0
- package/skills/uipath-maestro-case/references/case-commands.md +8 -0
- package/skills/uipath-maestro-case/references/case-editing-operations.md +230 -21
- package/skills/uipath-maestro-case/references/case-schema.md +29 -11
- package/skills/uipath-maestro-case/references/connector-integration.md +1 -1
- package/skills/uipath-maestro-case/references/connector-trigger-common.md +1 -1
- package/skills/uipath-maestro-case/references/entry-points-sync.md +204 -0
- package/skills/uipath-maestro-case/references/implementation.md +19 -9
- package/skills/uipath-maestro-case/references/phase-0-interview.md +10 -8
- package/skills/uipath-maestro-case/references/phased-execution.md +11 -4
- package/skills/uipath-maestro-case/references/placeholder-tasks.md +24 -2
- package/skills/uipath-maestro-case/references/planning.md +9 -3
- package/skills/uipath-maestro-case/references/plugins/case/planning.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/sla/impl-json.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/sla/planning.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/stages/impl-json.md +11 -10
- package/skills/uipath-maestro-case/references/plugins/stages/planning.md +13 -14
- package/skills/uipath-maestro-case/references/plugins/tasks/agent/impl-json.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/tasks/agent/planning.md +91 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/impl-json.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/tasks/api-workflow/planning.md +87 -2
- package/skills/uipath-maestro-case/references/plugins/tasks/connector-activity/planning.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/triggers/event/impl-json.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/triggers/manual/impl-json.md +3 -1
- package/skills/uipath-maestro-case/references/plugins/triggers/timer/impl-json.md +2 -1
- package/skills/uipath-maestro-case/references/plugins/variables/bindings/impl-json.md +2 -0
- package/skills/uipath-maestro-case/references/plugins/variables/global-vars/impl-json.md +20 -10
- package/skills/uipath-maestro-case/references/plugins/variables/global-vars/planning.md +9 -8
- package/skills/uipath-maestro-case/references/plugins/variables/io-binding/impl-json.md +1 -1
- package/skills/uipath-maestro-case/references/plugins/variables/io-binding/planning.md +1 -1
- package/skills/uipath-maestro-case/references/registry-discovery.md +87 -10
- package/skills/uipath-maestro-case/references/sdd-generation-rules.md +34 -26
- package/skills/uipath-maestro-flow/SKILL.md +4 -1
- package/skills/uipath-maestro-flow/references/author/CAPABILITY.md +1 -2
- package/skills/uipath-maestro-flow/references/author/references/editing-operations-json.md +3 -3
- package/skills/uipath-maestro-flow/references/author/references/greenfield.md +4 -2
- package/skills/uipath-maestro-flow/references/author/references/planning-arch.md +0 -1
- package/skills/uipath-maestro-flow/references/author/references/planning-impl.md +0 -1
- package/skills/uipath-maestro-flow/references/author/references/plugins/connector/impl.md +1 -0
- package/skills/uipath-maestro-flow/references/author/references/plugins/connector-trigger/impl.md +7 -7
- package/skills/uipath-maestro-flow/references/author/references/plugins/ixp/impl.md +14 -14
- package/skills/uipath-maestro-flow/references/author/references/plugins/script/impl.md +10 -6
- package/skills/uipath-maestro-flow/references/shared/cli-conventions.md +7 -0
- package/skills/uipath-maestro-flow/references/shared/file-format.md +1 -1
- package/skills/uipath-mcp-servers/references/is-activity-workflow.md +3 -3
- package/skills/uipath-planner/SKILL.md +1 -1
- package/skills/uipath-platform/SKILL.md +4 -14
- package/skills/uipath-platform/references/data-fabric/data-fabric.md +1 -1
- package/skills/uipath-platform/references/integration-service/agent-workflow.md +4 -4
- package/skills/uipath-platform/references/integration-service/reference-resolution.md +1 -1
- package/skills/uipath-platform/references/integration-service/resources.md +5 -5
- package/skills/uipath-platform/references/integration-service/triggers.md +10 -9
- package/skills/uipath-platform/references/orchestrator/setup-environment.md +2 -0
- package/skills/uipath-review/SKILL.md +8 -4
- package/skills/uipath-review/references/agents/agent-review-checklist.md +1 -22
- package/skills/uipath-review/references/agents/agents-coded-rules.md +24 -7
- package/skills/uipath-review/references/agents/agents-lowcode-rules.md +0 -1
- package/skills/uipath-review/references/agents/guardrails/coded-guardrails-review.md +231 -0
- package/skills/uipath-review/references/rule-catalog-workflow.md +4 -2
- package/skills/uipath-rpa/SKILL.md +2 -2
- package/skills/uipath-rpa/references/activity-docs/UiPath.DataService.Activities/guides/data-service-filter-builder-guide.md +1 -1
- package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/coded-api.md +1 -1
- package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/curl-import.md +3 -3
- package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/http-request-upgrade.md +3 -3
- package/skills/uipath-rpa/references/activity-docs/UiPath.Web.Activities/2.5/coded/service-discovery.md +2 -2
- package/skills/uipath-rpa/references/coded/coding-guidelines.md +1 -1
- package/skills/uipath-rpa/references/ui-automation-guide.md +7 -7
- package/skills/uipath-rpa/references/uia-configure-target-workflows.md +5 -5
- package/skills/uipath-rpa/references/uia-elements-interaction-guide.md +19 -10
- package/skills/uipath-rpa/references/uia-prerequisites.md +7 -7
- package/skills/uipath-rpa/references/validation-guide.md +2 -2
- package/skills/uipath-rpa/references/xaml/common-pitfalls.md +4 -0
- package/skills/uipath-rpa/references/xaml/csharp-activity-binding-guide.md +3 -1
- package/skills/uipath-rpa/references/xaml/csharp-expression-pitfalls.md +9 -4
- package/skills/uipath-rpa/references/xaml/workflow-guide.md +2 -2
- package/skills/uipath-rpa/references/xaml/xaml-basics-and-rules.md +1 -1
- package/skills/uipath-solution/SKILL.md +4 -4
- package/skills/uipath-solution/references/activate-and-manage.md +6 -1
- package/skills/uipath-solution/references/develop-solution.md +24 -5
- package/skills/uipath-solution/references/pack-and-deploy.md +5 -2
- package/skills/uipath-solution/references/scenarios/manual-edits.md +2 -2
- package/skills/uipath-solution/references/solution-overview.md +2 -2
- package/skills/uipath-troubleshoot/SKILL.md +3 -3
- package/skills/uipath-troubleshoot/references/products/agents/playbooks/context-grounding-index-not-found.md +0 -2
- package/skills/uipath-troubleshoot/references/products/maestro/playbooks/personal-automation-quota.md +1 -1
- package/version-manifest.json +3 -3
- package/hooks/ensure-uip.sh +0 -220
- package/skills/uipath-maestro-flow/references/author/references/plugins/connector/data-fabric/impl.md +0 -683
- package/skills/uipath-maestro-flow/references/author/references/plugins/connector/data-fabric/planning.md +0 -45
package/hooks/ensure-uip.sh
DELETED
|
@@ -1,220 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
# Ensures @uipath/cli and @uipath/rpa-tool are installed globally.
|
|
3
|
-
# Runs once per session via the SessionStart plugin hook.
|
|
4
|
-
# If npm is missing, attempts to install Node.js first.
|
|
5
|
-
# Supports Windows, macOS, and Linux.
|
|
6
|
-
|
|
7
|
-
set -e
|
|
8
|
-
|
|
9
|
-
# ── helpers ──────────────────────────────────────────────────────────
|
|
10
|
-
fail() {
|
|
11
|
-
echo "$1" >&2
|
|
12
|
-
echo "Please install Node.js from https://nodejs.org and restart your session." >&2
|
|
13
|
-
exit 2
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
is_windows() {
|
|
17
|
-
local os
|
|
18
|
-
os="$(uname -s 2>/dev/null || echo "Windows")"
|
|
19
|
-
case "$os" in
|
|
20
|
-
MINGW*|MSYS*|CYGWIN*|Windows*) return 0 ;;
|
|
21
|
-
*) return 1 ;;
|
|
22
|
-
esac
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
ensure_npm() {
|
|
26
|
-
command -v npm &> /dev/null && return
|
|
27
|
-
|
|
28
|
-
echo "npm not found, attempting to install Node.js..." >&2
|
|
29
|
-
|
|
30
|
-
local os
|
|
31
|
-
os="$(uname -s 2>/dev/null || echo "Windows")"
|
|
32
|
-
|
|
33
|
-
case "$os" in
|
|
34
|
-
MINGW*|MSYS*|CYGWIN*|Windows*)
|
|
35
|
-
if command -v winget &> /dev/null; then
|
|
36
|
-
winget install --id OpenJS.NodeJS.LTS \
|
|
37
|
-
--accept-source-agreements --accept-package-agreements 2>&1
|
|
38
|
-
elif command -v choco &> /dev/null; then choco install nodejs-lts -y 2>&1
|
|
39
|
-
elif command -v nvm &> /dev/null; then nvm install --lts 2>&1 && nvm use --lts 2>&1
|
|
40
|
-
else fail "No package manager found (winget, choco, or nvm)."; fi
|
|
41
|
-
export PATH="$PATH:/c/Program Files/nodejs:/c/ProgramData/nvm"
|
|
42
|
-
;;
|
|
43
|
-
Darwin*)
|
|
44
|
-
if command -v brew &> /dev/null; then brew install node 2>&1
|
|
45
|
-
elif command -v nvm &> /dev/null; then nvm install --lts 2>&1 && nvm use --lts 2>&1
|
|
46
|
-
else fail "No package manager found (brew or nvm)."; fi
|
|
47
|
-
;;
|
|
48
|
-
Linux*)
|
|
49
|
-
if command -v apt-get &> /dev/null; then sudo apt-get update -y && sudo apt-get install -y nodejs npm 2>&1
|
|
50
|
-
elif command -v dnf &> /dev/null; then sudo dnf install -y nodejs npm 2>&1
|
|
51
|
-
elif command -v yum &> /dev/null; then sudo yum install -y nodejs npm 2>&1
|
|
52
|
-
elif command -v pacman &> /dev/null; then sudo pacman -Sy --noconfirm nodejs npm 2>&1
|
|
53
|
-
elif command -v nvm &> /dev/null; then nvm install --lts 2>&1 && nvm use --lts 2>&1
|
|
54
|
-
else fail "No supported package manager found."; fi
|
|
55
|
-
;;
|
|
56
|
-
*) fail "Unsupported platform." ;;
|
|
57
|
-
esac
|
|
58
|
-
|
|
59
|
-
hash -r 2>/dev/null
|
|
60
|
-
|
|
61
|
-
if ! command -v npm &> /dev/null; then
|
|
62
|
-
echo "Node.js was installed but npm is not yet available in this session." >&2
|
|
63
|
-
echo "Please restart your terminal, then run: npm install -g @uipath/cli" >&2
|
|
64
|
-
exit 2
|
|
65
|
-
fi
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
# Force `@uipath` to public npm. Narrowly guards users who set a custom
|
|
69
|
-
# default `registry=...` in `~/.npmrc` (e.g., a corporate proxy/mirror)
|
|
70
|
-
# but no `@uipath:registry=...` scope override — without this flag,
|
|
71
|
-
# `outdated`, `view`, and `install` route through their default mirror,
|
|
72
|
-
# which may not host `@uipath` or may serve a different `latest`.
|
|
73
|
-
# `--registry=` does NOT bypass scope mappings; only the scope-specific
|
|
74
|
-
# override does. Apply to `outdated` / `view` (registry lookup) and
|
|
75
|
-
# `install`; `ls` reads disk and doesn't need it.
|
|
76
|
-
#
|
|
77
|
-
# Users WITH a non-public `@uipath:registry=...` scope mapping (UiPath
|
|
78
|
-
# devs on the GitHub Packages prerelease line, private mirrors aliasing
|
|
79
|
-
# the scope) are skipped earlier by `is_from_other_feed`, so this flag
|
|
80
|
-
# never clobbers a deliberate non-public install — it only protects the
|
|
81
|
-
# narrow "custom default registry, no scope mapping" path.
|
|
82
|
-
UIPATH_REGISTRY_FLAG="--@uipath:registry=https://registry.npmjs.org/"
|
|
83
|
-
|
|
84
|
-
# True if $1 is a POSIX symlink, a Windows directory symlink, OR a
|
|
85
|
-
# Windows directory junction. bash `[ -L ]` catches POSIX symlinks but
|
|
86
|
-
# NOT Windows junctions — and junctions are the default fallback
|
|
87
|
-
# `npm link` uses on Windows when run without developer mode or admin
|
|
88
|
-
# rights, so a pure `[ -L ]` check silently misses the most common
|
|
89
|
-
# Windows local-link layout.
|
|
90
|
-
#
|
|
91
|
-
# Windows: delegate to `fsutil reparsepoint query`. Purpose-built,
|
|
92
|
-
# ships with every Windows install since XP, exits 0 iff the path is
|
|
93
|
-
# a reparse point (covers symlinks AND junctions), locale-independent,
|
|
94
|
-
# and `query` doesn't require admin. Reachable from git-bash / MSYS /
|
|
95
|
-
# Cygwin via Windows PATH lookup, and from WSL via interop (`.exe`).
|
|
96
|
-
# POSIX (Linux/macOS): fall back to `[ -L ]` — junctions don't exist.
|
|
97
|
-
is_symlink_or_junction() {
|
|
98
|
-
local input="$1" posix_p win_p
|
|
99
|
-
# Compute both forms: POSIX (for bash `[ -e ]`) and Windows (for fsutil).
|
|
100
|
-
# The caller may hand us either form — npm on Windows returns `C:\...`
|
|
101
|
-
# even when invoked from WSL/Cygwin/MSYS bash, while `$HOME` is POSIX.
|
|
102
|
-
# IMPORTANT: wslpath and cygpath misbehave when given the form they
|
|
103
|
-
# output (`wslpath -u /home/foo` prepends /mnt/c/, `wslpath -w C:\foo`
|
|
104
|
-
# strips backslashes). Detect input form and convert in one direction
|
|
105
|
-
# only.
|
|
106
|
-
if [[ "$input" =~ ^[A-Za-z]: ]]; then
|
|
107
|
-
win_p="$input"
|
|
108
|
-
if command -v wslpath &>/dev/null; then
|
|
109
|
-
posix_p="$(wslpath -u "$input" 2>/dev/null || echo "$input")"
|
|
110
|
-
elif command -v cygpath &>/dev/null; then
|
|
111
|
-
posix_p="$(cygpath -u "$input" 2>/dev/null || echo "$input")"
|
|
112
|
-
else
|
|
113
|
-
posix_p="$input"
|
|
114
|
-
fi
|
|
115
|
-
else
|
|
116
|
-
posix_p="$input"
|
|
117
|
-
if command -v wslpath &>/dev/null; then
|
|
118
|
-
win_p="$(wslpath -w "$input" 2>/dev/null || echo "$input")"
|
|
119
|
-
elif command -v cygpath &>/dev/null; then
|
|
120
|
-
win_p="$(cygpath -w "$input" 2>/dev/null || echo "$input")"
|
|
121
|
-
else
|
|
122
|
-
win_p="$input"
|
|
123
|
-
fi
|
|
124
|
-
fi
|
|
125
|
-
[ -e "$posix_p" ] || return 1
|
|
126
|
-
# Windows: `fsutil reparsepoint query` is purpose-built — exits 0 iff
|
|
127
|
-
# the path is a reparse point (covers symlinks AND junctions), ships
|
|
128
|
-
# with every Windows install since XP, no admin needed for query, no
|
|
129
|
-
# locale-dependent output to parse. Prefer the `.exe` form so WSL
|
|
130
|
-
# interop resolves it without relying on PATHEXT.
|
|
131
|
-
# Windows: delegate to fsutil ONLY if the input was originally a
|
|
132
|
-
# Windows-form path. In WSL with Windows interop, fsutil.exe is on
|
|
133
|
-
# PATH even when npm is Linux-installed and the package directory is
|
|
134
|
-
# a genuine Linux symlink — querying it through a `\\wsl$\...` path
|
|
135
|
-
# is unreliable, so prefer the POSIX `[ -L ]` test for POSIX inputs.
|
|
136
|
-
if [[ "$input" =~ ^[A-Za-z]: ]]; then
|
|
137
|
-
if command -v fsutil.exe &>/dev/null; then
|
|
138
|
-
fsutil.exe reparsepoint query "$win_p" &>/dev/null
|
|
139
|
-
return $?
|
|
140
|
-
fi
|
|
141
|
-
if command -v fsutil &>/dev/null; then
|
|
142
|
-
fsutil reparsepoint query "$win_p" &>/dev/null
|
|
143
|
-
return $?
|
|
144
|
-
fi
|
|
145
|
-
fi
|
|
146
|
-
# POSIX (Linux/macOS, and WSL with POSIX-form input): `[ -L ]` covers
|
|
147
|
-
# symbolic links; junctions don't exist on these platforms.
|
|
148
|
-
[ -L "$posix_p" ]
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
# Detect a local-source install via `npm link` / `bun link` (see the CLI
|
|
152
|
-
# repo README, "Building from Source"). Linked installs point at a
|
|
153
|
-
# working tree that is, by definition, ahead of the published `latest`
|
|
154
|
-
# tag — upgrading would clobber the developer's local build with an
|
|
155
|
-
# older registry version. Windows-junction handling lives in
|
|
156
|
-
# `is_symlink_or_junction`.
|
|
157
|
-
is_linked_package() {
|
|
158
|
-
local pkg="$1"
|
|
159
|
-
local npm_root
|
|
160
|
-
npm_root="$(npm root -g 2>/dev/null)"
|
|
161
|
-
[ -n "$npm_root" ] && is_symlink_or_junction "$npm_root/$pkg" && return 0
|
|
162
|
-
is_symlink_or_junction "$HOME/.bun/install/global/node_modules/$pkg" && return 0
|
|
163
|
-
return 1
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
# Detect a scope mapped to a non-public feed (GitHub Packages, an internal
|
|
167
|
-
# Artifactory, etc.). Such builds typically carry prerelease versions ahead
|
|
168
|
-
# of the public `latest` tag — forcing an upgrade against the public
|
|
169
|
-
# registry would downgrade the developer's chosen feed. Signal is the
|
|
170
|
-
# merged npm config for `@<scope>:registry`: if the user's `.npmrc` (any
|
|
171
|
-
# level) maps the package's scope to something other than the public
|
|
172
|
-
# registry, leave the install alone. Reads merged config so project/user/
|
|
173
|
-
# global/env overrides are all honored. Unscoped packages → never skip.
|
|
174
|
-
is_from_other_feed() {
|
|
175
|
-
local pkg="$1" scope cfg
|
|
176
|
-
case "$pkg" in
|
|
177
|
-
@*/*) scope="${pkg%%/*}" ;;
|
|
178
|
-
*) return 1 ;;
|
|
179
|
-
esac
|
|
180
|
-
cfg="$(npm config get "$scope:registry" 2>/dev/null)"
|
|
181
|
-
if [ -z "$cfg" ] || [ "$cfg" = "undefined" ]; then
|
|
182
|
-
return 1
|
|
183
|
-
fi
|
|
184
|
-
case "${cfg%/}" in
|
|
185
|
-
https://registry.npmjs.org) return 1 ;;
|
|
186
|
-
*) return 0 ;;
|
|
187
|
-
esac
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
# npm install -g always re-downloads and re-installs, even if the same version
|
|
191
|
-
# is already present. This is slow for a synchronous session hook and also
|
|
192
|
-
# re-triggers package lifecycle scripts. Check first, install only when needed.
|
|
193
|
-
# Stay silent on the happy path: Claude Code surfaces ANY stderr from an
|
|
194
|
-
# exit-0 SessionStart hook as "Failed with non-blocking status code",
|
|
195
|
-
# which is misleading. Capture install output and only emit on failure.
|
|
196
|
-
ensure_npm_package() {
|
|
197
|
-
local pkg="$1"
|
|
198
|
-
|
|
199
|
-
if is_linked_package "$pkg" || is_from_other_feed "$pkg"; then
|
|
200
|
-
return
|
|
201
|
-
fi
|
|
202
|
-
|
|
203
|
-
if npm ls -g "$pkg" --depth=0 &>/dev/null \
|
|
204
|
-
&& [ -z "$(npm outdated -g "$pkg" $UIPATH_REGISTRY_FLAG 2>/dev/null)" ]; then
|
|
205
|
-
return
|
|
206
|
-
fi
|
|
207
|
-
|
|
208
|
-
local output
|
|
209
|
-
if ! output="$(npm install -g $UIPATH_REGISTRY_FLAG "$pkg" 2>&1)"; then
|
|
210
|
-
echo "Failed to install $pkg:" >&2
|
|
211
|
-
echo "$output" >&2
|
|
212
|
-
echo "Please run manually: npm install -g $UIPATH_REGISTRY_FLAG $pkg" >&2
|
|
213
|
-
exit 2
|
|
214
|
-
fi
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
# ── main ─────────────────────────────────────────────────────────────
|
|
218
|
-
ensure_npm
|
|
219
|
-
ensure_npm_package @uipath/cli
|
|
220
|
-
ensure_npm_package @uipath/rpa-tool
|