@uipath/cli 1.203.0-preview.212 → 1.204.0-preview.211
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/README.md +143 -112
- package/dist/{cli-jfycw3yn.js → cli-9smahap0.js} +4 -4
- package/dist/{index-7pvwjzsq.js → index-kyn5nn3d.js} +575 -74
- package/dist/{index-hgvsratt.js → index-mttdq2yn.js} +4 -2
- package/dist/{index-cynfqxa4.js → index-ncaxwtze.js} +507 -149
- package/dist/{index-sr556k8h.js → index-w9vfbymc.js} +159 -13
- package/dist/{index-vmn69waj.js → index-zwnedwxc.js} +21 -6
- package/dist/index.js +5 -5
- package/dist/{server-4qqkbfx9.js → server-hym3q910.js} +3 -3
- package/dist/{telemetry-drain-zkrm8xja.js → telemetry-drain-4sk6ezgk.js} +1 -1
- package/dist/{updateService-5r4ryk06.js → updateService-qj5yjwrd.js} +2 -2
- package/package.json +2 -2
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
logger,
|
|
12
12
|
processContext,
|
|
13
13
|
wasInteractiveFlagPassed
|
|
14
|
-
} from "./index-
|
|
14
|
+
} from "./index-kyn5nn3d.js";
|
|
15
15
|
import {
|
|
16
16
|
exports_external
|
|
17
17
|
} from "./index-hrt7fpkk.js";
|
|
@@ -551,7 +551,7 @@ var package_default = {
|
|
|
551
551
|
name: "@uipath/cli",
|
|
552
552
|
author: "UiPath",
|
|
553
553
|
license: "SEE LICENSE IN LICENSE.txt",
|
|
554
|
-
version: "1.
|
|
554
|
+
version: "1.204.0-preview.211",
|
|
555
555
|
description: "Cross platform CLI for UiPath",
|
|
556
556
|
repository: {
|
|
557
557
|
type: "git",
|
|
@@ -932,6 +932,10 @@ async function getGlobalNpmUipathDir() {
|
|
|
932
932
|
cachedLookup = resolveGlobalNpmUipathDir();
|
|
933
933
|
return cachedLookup;
|
|
934
934
|
}
|
|
935
|
+
async function refreshGlobalNpmUipathDir() {
|
|
936
|
+
cachedLookup = resolveGlobalNpmUipathDir();
|
|
937
|
+
return cachedLookup;
|
|
938
|
+
}
|
|
935
939
|
async function resolveGlobalNpmUipathDir() {
|
|
936
940
|
const root = await runNpmRootGlobal();
|
|
937
941
|
if (!root) {
|
|
@@ -984,6 +988,98 @@ async function runNpmRootGlobal() {
|
|
|
984
988
|
});
|
|
985
989
|
}
|
|
986
990
|
|
|
991
|
+
// src/utils/toolsDirsEnv.ts
|
|
992
|
+
var TOOLS_DIRS_ENV_VAR = "UIPATH_CLI_TOOLS_DIRS";
|
|
993
|
+
var UNSAFE_PATH_CHARS = /["%\p{Cc}]/u;
|
|
994
|
+
function hasUnsafePathChars(value) {
|
|
995
|
+
return UNSAFE_PATH_CHARS.test(value);
|
|
996
|
+
}
|
|
997
|
+
var cachedDeclaration = null;
|
|
998
|
+
async function getEnvToolsDirsDeclaration() {
|
|
999
|
+
if (cachedDeclaration)
|
|
1000
|
+
return cachedDeclaration;
|
|
1001
|
+
cachedDeclaration = resolveDeclaration();
|
|
1002
|
+
return cachedDeclaration;
|
|
1003
|
+
}
|
|
1004
|
+
async function resolveDeclaration() {
|
|
1005
|
+
const fs = getFileSystem();
|
|
1006
|
+
const raw = fs.env.getenv(TOOLS_DIRS_ENV_VAR);
|
|
1007
|
+
if (raw === undefined || raw.trim() === "")
|
|
1008
|
+
return null;
|
|
1009
|
+
const delimiter = process.platform === "win32" ? ";" : ":";
|
|
1010
|
+
const dirs = [];
|
|
1011
|
+
const seen = new Set;
|
|
1012
|
+
let installTarget = null;
|
|
1013
|
+
let declared = false;
|
|
1014
|
+
for (const entry of raw.split(delimiter)) {
|
|
1015
|
+
const candidate = entry.trim();
|
|
1016
|
+
if (candidate === "")
|
|
1017
|
+
continue;
|
|
1018
|
+
if (hasUnsafePathChars(candidate)) {
|
|
1019
|
+
logger.warn(`${TOOLS_DIRS_ENV_VAR} entry rejected — unsupported characters in path: ${JSON.stringify(candidate)}`);
|
|
1020
|
+
continue;
|
|
1021
|
+
}
|
|
1022
|
+
if (!fs.path.isAbsolute(candidate)) {
|
|
1023
|
+
logger.warn(`${TOOLS_DIRS_ENV_VAR} entry rejected — path is not absolute: ${JSON.stringify(candidate)}`);
|
|
1024
|
+
continue;
|
|
1025
|
+
}
|
|
1026
|
+
const resolved = fs.path.resolve(candidate);
|
|
1027
|
+
const key = process.platform === "win32" ? resolved.toLowerCase() : resolved;
|
|
1028
|
+
if (seen.has(key))
|
|
1029
|
+
continue;
|
|
1030
|
+
seen.add(key);
|
|
1031
|
+
const isFirst = !declared;
|
|
1032
|
+
declared = true;
|
|
1033
|
+
const [error, stats] = await catchError(fs.stat(resolved));
|
|
1034
|
+
if (error) {
|
|
1035
|
+
logger.debug(`${TOOLS_DIRS_ENV_VAR} entry skipped — cannot stat ${resolved}: ${String(error)}`);
|
|
1036
|
+
continue;
|
|
1037
|
+
}
|
|
1038
|
+
if (stats && !stats.isDirectory()) {
|
|
1039
|
+
logger.warn(`${TOOLS_DIRS_ENV_VAR} entry skipped — not a directory: ${resolved}`);
|
|
1040
|
+
continue;
|
|
1041
|
+
}
|
|
1042
|
+
if (stats) {
|
|
1043
|
+
const [readError] = await catchError(fs.readdir(resolved));
|
|
1044
|
+
if (readError) {
|
|
1045
|
+
logger.warn(`${TOOLS_DIRS_ENV_VAR} entry skipped — directory is not readable: ${resolved}`);
|
|
1046
|
+
continue;
|
|
1047
|
+
}
|
|
1048
|
+
}
|
|
1049
|
+
if (isFirst) {
|
|
1050
|
+
installTarget = resolved;
|
|
1051
|
+
dirs.push(resolved);
|
|
1052
|
+
continue;
|
|
1053
|
+
}
|
|
1054
|
+
if (!stats) {
|
|
1055
|
+
logger.debug(`${TOOLS_DIRS_ENV_VAR} entry skipped — directory does not exist: ${resolved}`);
|
|
1056
|
+
continue;
|
|
1057
|
+
}
|
|
1058
|
+
dirs.push(resolved);
|
|
1059
|
+
}
|
|
1060
|
+
if (!declared)
|
|
1061
|
+
return null;
|
|
1062
|
+
logger.debug(`${TOOLS_DIRS_ENV_VAR} declared tool directories: [${dirs.join(", ")}] (install target: ${installTarget ?? "none"})`);
|
|
1063
|
+
return { installTarget, dirs };
|
|
1064
|
+
}
|
|
1065
|
+
function resolveNpmPrefixForToolsDir(toolsDir, platform = process.platform) {
|
|
1066
|
+
const fs = getFileSystem();
|
|
1067
|
+
const { basename, dirname } = fs.path;
|
|
1068
|
+
const is = (path, name) => platform === "win32" ? basename(path).toLowerCase() === name : basename(path) === name;
|
|
1069
|
+
if (!is(toolsDir, "@uipath"))
|
|
1070
|
+
return null;
|
|
1071
|
+
const nodeModules = dirname(toolsDir);
|
|
1072
|
+
if (!is(nodeModules, "node_modules"))
|
|
1073
|
+
return null;
|
|
1074
|
+
const parent = dirname(nodeModules);
|
|
1075
|
+
if (platform === "win32")
|
|
1076
|
+
return parent;
|
|
1077
|
+
return is(parent, "lib") ? dirname(parent) : null;
|
|
1078
|
+
}
|
|
1079
|
+
function npmGlobalRootParent(prefix, platform = process.platform) {
|
|
1080
|
+
return platform === "win32" ? prefix : getFileSystem().path.join(prefix, "lib");
|
|
1081
|
+
}
|
|
1082
|
+
|
|
987
1083
|
// src/services/bundleDistribution.ts
|
|
988
1084
|
var BUNDLE_PACKAGE_NAME = "uipath-cli-bundle";
|
|
989
1085
|
var DISABLE_AUTOINSTALL_ENV = "UIPATH_CLI_DISABLE_AUTOINSTALL";
|
|
@@ -1097,6 +1193,7 @@ var TOOLS_WHITELIST = new Map([
|
|
|
1097
1193
|
["@uipath/test-manager-tool", "tm"],
|
|
1098
1194
|
["@uipath/api-workflow-tool", "api-workflow"],
|
|
1099
1195
|
["@uipath/maestro-tool", "maestro"],
|
|
1196
|
+
["@uipath/rules-tool", "rules"],
|
|
1100
1197
|
["@uipath/docsai-tool", "docsai"],
|
|
1101
1198
|
["@uipath/vertical-solutions-tool", "vss"],
|
|
1102
1199
|
["@uipath/rpa-legacy-tool", "rpa-legacy"],
|
|
@@ -1481,7 +1578,7 @@ async function spawnPackageManager(executable, args, cwd, label, extraEnv) {
|
|
|
1481
1578
|
}
|
|
1482
1579
|
const { spawn } = await loadChildProcess();
|
|
1483
1580
|
const isWindows = process.platform === "win32";
|
|
1484
|
-
const envOpt = extraEnv ? { env:
|
|
1581
|
+
const envOpt = extraEnv ? { env: mergeEnvCaseInsensitive(process.env, extraEnv) } : {};
|
|
1485
1582
|
return new Promise((resolve, reject) => {
|
|
1486
1583
|
let proc;
|
|
1487
1584
|
if (isWindows) {
|
|
@@ -1526,6 +1623,35 @@ async function spawnPackageManager(executable, args, cwd, label, extraEnv) {
|
|
|
1526
1623
|
});
|
|
1527
1624
|
});
|
|
1528
1625
|
}
|
|
1626
|
+
function mergeEnvCaseInsensitive(base, overrides) {
|
|
1627
|
+
const overridden = new Set(Object.keys(overrides).map((k) => k.toLowerCase()));
|
|
1628
|
+
const merged = {};
|
|
1629
|
+
for (const [key, value] of Object.entries(base)) {
|
|
1630
|
+
if (!overridden.has(key.toLowerCase()))
|
|
1631
|
+
merged[key] = value;
|
|
1632
|
+
}
|
|
1633
|
+
return { ...merged, ...overrides };
|
|
1634
|
+
}
|
|
1635
|
+
function prefixEnv(prefix) {
|
|
1636
|
+
if (prefix === undefined || prefix.trim() === "")
|
|
1637
|
+
return {};
|
|
1638
|
+
if (!/^(?:\/|[A-Za-z]:[\\/]|\\\\)/.test(prefix)) {
|
|
1639
|
+
throw new Error(`npm prefix must be an absolute path: ${prefix}`);
|
|
1640
|
+
}
|
|
1641
|
+
if (hasUnsafePathChars(prefix)) {
|
|
1642
|
+
throw new Error(`npm prefix contains unsupported characters: ${JSON.stringify(prefix)}`);
|
|
1643
|
+
}
|
|
1644
|
+
return { npm_config_prefix: prefix };
|
|
1645
|
+
}
|
|
1646
|
+
async function bunCwdFor(args, cwd, extraEnv) {
|
|
1647
|
+
const prefix = extraEnv?.npm_config_prefix;
|
|
1648
|
+
if (!prefix || !args.includes("-g"))
|
|
1649
|
+
return cwd;
|
|
1650
|
+
const root = npmGlobalRootParent(prefix);
|
|
1651
|
+
if (root !== cwd)
|
|
1652
|
+
await getFileSystem().mkdir(root);
|
|
1653
|
+
return root;
|
|
1654
|
+
}
|
|
1529
1655
|
async function runPackageManager(args, cwd, extraEnv) {
|
|
1530
1656
|
for (const arg of args) {
|
|
1531
1657
|
if (arg !== "-g" && !arg.startsWith("--")) {
|
|
@@ -1534,9 +1660,10 @@ async function runPackageManager(args, cwd, extraEnv) {
|
|
|
1534
1660
|
}
|
|
1535
1661
|
const useBun = await isDevMode();
|
|
1536
1662
|
const pm = useBun ? "bun" : "npm";
|
|
1537
|
-
|
|
1663
|
+
const runCwd = useBun ? await bunCwdFor(args, cwd, extraEnv) : cwd;
|
|
1664
|
+
logger.debug(`Running package manager: ${pm} ${args.join(" ")}${runCwd ? ` (cwd: ${runCwd})` : ""}`);
|
|
1538
1665
|
const pmArgs = useBun ? args.filter((a) => a !== "-g").map((a) => a === "uninstall" ? "remove" : a) : args;
|
|
1539
|
-
await spawnPackageManager(pm, pmArgs,
|
|
1666
|
+
await spawnPackageManager(pm, pmArgs, runCwd, `${pm} ${pmArgs[0]}`, extraEnv);
|
|
1540
1667
|
}
|
|
1541
1668
|
async function runPackageManagerWithBun(args, cwd, extraEnv) {
|
|
1542
1669
|
for (const arg of args) {
|
|
@@ -1545,8 +1672,16 @@ async function runPackageManagerWithBun(args, cwd, extraEnv) {
|
|
|
1545
1672
|
}
|
|
1546
1673
|
}
|
|
1547
1674
|
const pmArgs = args.filter((a) => a !== "-g").map((a) => a === "uninstall" ? "remove" : a);
|
|
1548
|
-
|
|
1549
|
-
|
|
1675
|
+
const bunCwd = await bunCwdFor(args, cwd, extraEnv);
|
|
1676
|
+
logger.debug(`Running package manager: bun ${pmArgs.join(" ")}${bunCwd ? ` (cwd: ${bunCwd})` : ""}`);
|
|
1677
|
+
await spawnPackageManager("bun", pmArgs, bunCwd, `bun ${pmArgs[0]}`, extraEnv);
|
|
1678
|
+
}
|
|
1679
|
+
|
|
1680
|
+
class HostOwnedToolError extends InstallRefusedError {
|
|
1681
|
+
constructor(packageName, dir) {
|
|
1682
|
+
super(`Refusing to uninstall '${packageName}': it ships with the host application at ${dir}, which the CLI does not manage.`, "Only tools installed with 'uip tools install' can be uninstalled here.");
|
|
1683
|
+
this.name = "HostOwnedToolError";
|
|
1684
|
+
}
|
|
1550
1685
|
}
|
|
1551
1686
|
|
|
1552
1687
|
class NodeToolService {
|
|
@@ -1714,7 +1849,10 @@ ${errors.map((e) => ` - ${e}`).join(`
|
|
|
1714
1849
|
validatePackageSpec(packageName);
|
|
1715
1850
|
await refuseIfBundledDistribution(destination, "install", packageName);
|
|
1716
1851
|
const baseArgs = options?.global ? ["install", "-g", packageName] : ["install", packageName];
|
|
1717
|
-
const extraEnv = {
|
|
1852
|
+
const extraEnv = {
|
|
1853
|
+
...archPinEnv(),
|
|
1854
|
+
...options?.global ? prefixEnv(options.prefix) : {}
|
|
1855
|
+
};
|
|
1718
1856
|
await warnIfTranslatedNodeAsync();
|
|
1719
1857
|
for (let attempt = 0;attempt <= NPM_MAX_RETRIES; attempt++) {
|
|
1720
1858
|
const [err] = await catchError(runPackageManager(baseArgs, destination, extraEnv));
|
|
@@ -1748,7 +1886,8 @@ ${errors.map((e) => ` - ${e}`).join(`
|
|
|
1748
1886
|
let containerDir;
|
|
1749
1887
|
let relativeName;
|
|
1750
1888
|
if (options?.global) {
|
|
1751
|
-
const
|
|
1889
|
+
const declaration = options.prefix ? await getEnvToolsDirsDeclaration() : null;
|
|
1890
|
+
const globalUipathDir = declaration ? declaration.installTarget : await getGlobalNpmUipathDir();
|
|
1752
1891
|
if (!globalUipathDir) {
|
|
1753
1892
|
throw new Error(`Cannot locate '${packageName}': npm root -g unavailable`);
|
|
1754
1893
|
}
|
|
@@ -1763,6 +1902,12 @@ ${errors.map((e) => ` - ${e}`).join(`
|
|
|
1763
1902
|
throw new Error(`Refusing to uninstall '${packageName}': resolved path escapes ${containerDir}`);
|
|
1764
1903
|
}
|
|
1765
1904
|
if (!await fs.exists(packageDir)) {
|
|
1905
|
+
const declaration = options?.prefix ? await getEnvToolsDirsDeclaration() : null;
|
|
1906
|
+
for (const dir of declaration?.dirs.slice(1) ?? []) {
|
|
1907
|
+
if (await fs.exists(fs.path.join(dir, relativeName))) {
|
|
1908
|
+
throw new HostOwnedToolError(packageName, dir);
|
|
1909
|
+
}
|
|
1910
|
+
}
|
|
1766
1911
|
throw new Error(`Package '${packageName}' is not installed at ${packageDir}`);
|
|
1767
1912
|
}
|
|
1768
1913
|
const [statError, stat] = await catchError(fs.stat(packageDir));
|
|
@@ -1772,7 +1917,7 @@ ${errors.map((e) => ` - ${e}`).join(`
|
|
|
1772
1917
|
return;
|
|
1773
1918
|
}
|
|
1774
1919
|
if (options?.global) {
|
|
1775
|
-
await runPackageManager(["uninstall", "-g", packageName], destination);
|
|
1920
|
+
await runPackageManager(["uninstall", "-g", packageName], destination, options.prefix ? prefixEnv(options.prefix) : undefined);
|
|
1776
1921
|
} else {
|
|
1777
1922
|
await runPackageManager(["uninstall", packageName], destination);
|
|
1778
1923
|
}
|
|
@@ -9474,7 +9619,8 @@ async function runToolsUpdate(opts, state) {
|
|
|
9474
9619
|
});
|
|
9475
9620
|
const packageName = `${fullName}@${targetVersion}`;
|
|
9476
9621
|
await toolService.install(packageName, location.path, {
|
|
9477
|
-
global: location.global
|
|
9622
|
+
global: location.global,
|
|
9623
|
+
prefix: location.prefix
|
|
9478
9624
|
});
|
|
9479
9625
|
})());
|
|
9480
9626
|
if (updateError) {
|
|
@@ -9719,6 +9865,6 @@ function getManualCommandForInstallError(error, fallback) {
|
|
|
9719
9865
|
return error instanceof CliSelfUpdateError ? error.manualCommand : fallback;
|
|
9720
9866
|
}
|
|
9721
9867
|
|
|
9722
|
-
export { package_default, VALID_CHANNELS, HIDDEN_CHANNELS, PUBLIC_CHANNELS, withConfigLock, SECRET_FIELD_PATHS, migrateVersionConfig, versionMigrationNotice, resolveConfigFilePathAsync, loadConfigAsync, resolveUpdateChannel, resolveRuntimeChannel, isPreviewVersion, isValidVersionPin, majorOf, resolvePinnedVersion, isExactPin, versionLinePrefix, formatVersionPin, dist_default5 as dist_default, dist_default6 as dist_default1, dist_default7 as dist_default2, getGlobalNpmUipathDir, DISABLE_AUTOINSTALL_ENV, DISABLE_TOOL_LINE_CHECK_ENV, InstallRefusedError, isBundledDistribution, isAutoInstallDisabled, isToolLineCheckDisabled, TOOLS_WHITELIST, COMMAND_ALIASES, ALIASES_BY_COMMAND, WHITELIST_BY_COMMAND, WHITELIST_BY_SHORT_NAME, isValidSemver, compareSemver, resolveToolPackageName, parsePackageSpec, describeCandidateFailure, getEffectiveRegistry, isDevMode, truncateVersionsForDisplay, toolService, SkillSourceError, SkillsRegistryAuthError, resolveSkillSource, getContentStoreForRead, getAvailableSkills, readManifest, removeFromManifest, readExtraFiles, AGENT_DEFS, getSkillsDir, getSkillsDestinationHint, hasDistinctGlobalPath, skillOwnerOf, uninstallExtraFolders, uninstallSkill, rejectIfGlobalOnly, getSkillsSourceFailureDetails, buildSkillCatalog, removeSkillCatalog, searchSkillCatalog, ALL_AGENTS, AGENT_DISPLAY_NAMES, promptAgentSelection, SkillsError, resolveSkillsTargetVersion, resolveRootDir, resolveSkillsContext, runAgentInstalls, runSkillsUpdate, getInstalledTools, toolFailureRemediation, collapsePinnedLineErrors, todayLocal, readState, recordToolUpdateDate, mergeState, TOOLS_UPDATE_PHASES, runToolsUpdate, runUpdate };
|
|
9868
|
+
export { package_default, VALID_CHANNELS, HIDDEN_CHANNELS, PUBLIC_CHANNELS, withConfigLock, SECRET_FIELD_PATHS, migrateVersionConfig, versionMigrationNotice, resolveConfigFilePathAsync, loadConfigAsync, resolveUpdateChannel, resolveRuntimeChannel, isPreviewVersion, isValidVersionPin, majorOf, resolvePinnedVersion, isExactPin, versionLinePrefix, formatVersionPin, dist_default5 as dist_default, dist_default6 as dist_default1, dist_default7 as dist_default2, getGlobalNpmUipathDir, refreshGlobalNpmUipathDir, TOOLS_DIRS_ENV_VAR, getEnvToolsDirsDeclaration, resolveNpmPrefixForToolsDir, DISABLE_AUTOINSTALL_ENV, DISABLE_TOOL_LINE_CHECK_ENV, InstallRefusedError, isBundledDistribution, isAutoInstallDisabled, isToolLineCheckDisabled, TOOLS_WHITELIST, COMMAND_ALIASES, ALIASES_BY_COMMAND, WHITELIST_BY_COMMAND, WHITELIST_BY_SHORT_NAME, isValidSemver, compareSemver, resolveToolPackageName, parsePackageSpec, describeCandidateFailure, getEffectiveRegistry, isDevMode, HostOwnedToolError, truncateVersionsForDisplay, toolService, SkillSourceError, SkillsRegistryAuthError, resolveSkillSource, getContentStoreForRead, getAvailableSkills, readManifest, removeFromManifest, readExtraFiles, AGENT_DEFS, getSkillsDir, getSkillsDestinationHint, hasDistinctGlobalPath, skillOwnerOf, uninstallExtraFolders, uninstallSkill, rejectIfGlobalOnly, getSkillsSourceFailureDetails, buildSkillCatalog, removeSkillCatalog, searchSkillCatalog, ALL_AGENTS, AGENT_DISPLAY_NAMES, promptAgentSelection, SkillsError, resolveSkillsTargetVersion, resolveRootDir, resolveSkillsContext, runAgentInstalls, runSkillsUpdate, getInstalledTools, toolFailureRemediation, collapsePinnedLineErrors, todayLocal, readState, recordToolUpdateDate, mergeState, TOOLS_UPDATE_PHASES, runToolsUpdate, runUpdate };
|
|
9723
9869
|
|
|
9724
|
-
//# debugId=
|
|
9870
|
+
//# debugId=C8769781D8A671CC64756E2164756E21
|
|
@@ -732,6 +732,11 @@ var pickName = (claims) => {
|
|
|
732
732
|
const username = asString(claims?.preferred_username);
|
|
733
733
|
return asString(claims?.name) ?? (looksLikeEmail(username) ? undefined : username);
|
|
734
734
|
};
|
|
735
|
+
var pickScopes = (claims) => {
|
|
736
|
+
const raw = claims?.scope;
|
|
737
|
+
const scopes = Array.isArray(raw) ? raw.filter((entry) => asString(entry) !== undefined) : typeof raw === "string" ? raw.split(/\s+/).filter(Boolean) : [];
|
|
738
|
+
return scopes.length > 0 ? scopes : undefined;
|
|
739
|
+
};
|
|
735
740
|
var resolveSessionIdentity = (accessToken, authFlow) => {
|
|
736
741
|
const claims = accessToken ? decodeClaims(accessToken) : undefined;
|
|
737
742
|
const email = pickEmail(claims);
|
|
@@ -757,6 +762,7 @@ var resolveSessionIdentity = (accessToken, authFlow) => {
|
|
|
757
762
|
identity.clientId = clientId;
|
|
758
763
|
return identity;
|
|
759
764
|
};
|
|
765
|
+
var readTokenScopes = (accessToken) => accessToken ? pickScopes(decodeClaims(accessToken)) : undefined;
|
|
760
766
|
|
|
761
767
|
// ../auth/src/envAuth.ts
|
|
762
768
|
var ENV_AUTH_ENABLE_VAR = "UIPATH_CLI_ENABLE_ENV_AUTH";
|
|
@@ -829,6 +835,7 @@ var readAuthFromEnv = () => {
|
|
|
829
835
|
const expiration = getTokenExpiration(accessToken);
|
|
830
836
|
const loginStatus = expiration && expiration <= new Date ? "Expired" : "Logged in";
|
|
831
837
|
const identity = resolveSessionIdentity(accessToken);
|
|
838
|
+
const scopes = readTokenScopes(accessToken);
|
|
832
839
|
return {
|
|
833
840
|
loginStatus,
|
|
834
841
|
accessToken,
|
|
@@ -839,7 +846,8 @@ var readAuthFromEnv = () => {
|
|
|
839
846
|
tenantId,
|
|
840
847
|
expiration,
|
|
841
848
|
source: "env-vars" /* EnvironmentVariables */,
|
|
842
|
-
...identity ? { identity } : {}
|
|
849
|
+
...identity ? { identity } : {},
|
|
850
|
+
...scopes ? { scopes } : {}
|
|
843
851
|
};
|
|
844
852
|
};
|
|
845
853
|
|
|
@@ -1487,10 +1495,15 @@ async function buildFileStatus(tokens, credentials, globalHint) {
|
|
|
1487
1495
|
}
|
|
1488
1496
|
function identityFields(accessToken, credentials) {
|
|
1489
1497
|
const identity = resolveSessionIdentity(accessToken, parseAuthFlow(credentials[AUTH_FLOW_ENV_VAR]));
|
|
1490
|
-
|
|
1498
|
+
const scopes = readTokenScopes(accessToken);
|
|
1499
|
+
return {
|
|
1500
|
+
...identity ? { identity } : {},
|
|
1501
|
+
...scopes ? { scopes } : {}
|
|
1502
|
+
};
|
|
1491
1503
|
}
|
|
1492
1504
|
function buildRobotStatus(robotCreds) {
|
|
1493
1505
|
const identity = resolveSessionIdentity(robotCreds.accessToken);
|
|
1506
|
+
const scopes = readTokenScopes(robotCreds.accessToken);
|
|
1494
1507
|
return {
|
|
1495
1508
|
loginStatus: "Logged in",
|
|
1496
1509
|
accessToken: robotCreds.accessToken,
|
|
@@ -1502,7 +1515,8 @@ function buildRobotStatus(robotCreds) {
|
|
|
1502
1515
|
issuer: robotCreds.issuer,
|
|
1503
1516
|
expiration: getTokenExpiration(robotCreds.accessToken),
|
|
1504
1517
|
source: "robot" /* Robot */,
|
|
1505
|
-
...identity ? { identity } : {}
|
|
1518
|
+
...identity ? { identity } : {},
|
|
1519
|
+
...scopes ? { scopes } : {}
|
|
1506
1520
|
};
|
|
1507
1521
|
}
|
|
1508
1522
|
var isFileNotFoundError = (error) => {
|
|
@@ -1769,7 +1783,8 @@ var getAuthContext = async (options = {}) => {
|
|
|
1769
1783
|
organizationId: status.organizationId,
|
|
1770
1784
|
organizationName: status.organizationName,
|
|
1771
1785
|
tenantId: status.tenantId,
|
|
1772
|
-
tenantName
|
|
1786
|
+
tenantName,
|
|
1787
|
+
identity: status.identity
|
|
1773
1788
|
};
|
|
1774
1789
|
};
|
|
1775
1790
|
var getAuthEnv = async (options = {}) => {
|
|
@@ -2437,6 +2452,6 @@ var authenticate = async ({
|
|
|
2437
2452
|
});
|
|
2438
2453
|
};
|
|
2439
2454
|
|
|
2440
|
-
export { setAuthFileConfig, InvalidBaseUrlError, DEFAULT_AUTH_PROFILE, AuthProfileValidationError, normalizeAuthProfileName, setActiveAuthProfile, clearActiveAuthProfile, getActiveAuthProfile, runWithAuthProfile, resolveAuthProfileFilePath, getActiveAuthProfileFilePath, getAuthProfilesRootPath, resolveAuthProfileDirPath, listAuthProfileNamesAsync, authProfileExistsAsync, deleteAuthProfileAsync, parseJWT, parseAuthFlow, resolveSessionIdentity, ENV_AUTH_ENABLE_VAR, ENFORCE_ROBOT_AUTH_VAR, ENV_AUTH_VARS, EnvAuthConfigError, isEnvAuthEnabled, isRobotAuthEnforced, readAuthFromEnv, refreshTokenFingerprint, loadRefreshBreaker, saveRefreshBreaker, clearRefreshBreaker, registerRobotClientLoader, TokenRefreshOAuthError, isTokenRefreshOAuthFailure, refreshAccessToken, AUTH_FLOW_ENV_VAR, DEFAULT_AUTH_FILENAME, DEFAULT_ENV_FILENAME, resolveEnvFileLocationAsync, resolveEnvFilePathAsync, loadEnvFileAsync, saveEnvFileAsync, CredentialSource, getLoginStatusAsync, getLoginStatusWithDeps, getAuthContext, getAuthEnv, describeAuthProfilesAsync, ClientCredentialsAuthenticationError, clientCredentialsLogin, JWT_BEARER_ASSERTION_TYPE, FederatedCredentialsAuthenticationError, federatedCredentialsLogin, fetchTenantsAndOrganizations, TENANT_SELECTION_REQUIRED_CODE, INVALID_TENANT_CODE, TenantSelectionError, TenantSelectionRequiredError, InvalidTenantError, isTenantSelectionError, selectTenantWithDeps, interactiveLoginWithDeps, interactiveLogin, logoutWithDeps, logout, authenticate };
|
|
2455
|
+
export { setAuthFileConfig, InvalidBaseUrlError, DEFAULT_AUTH_PROFILE, AuthProfileValidationError, normalizeAuthProfileName, setActiveAuthProfile, clearActiveAuthProfile, getActiveAuthProfile, runWithAuthProfile, resolveAuthProfileFilePath, getActiveAuthProfileFilePath, getAuthProfilesRootPath, resolveAuthProfileDirPath, listAuthProfileNamesAsync, authProfileExistsAsync, deleteAuthProfileAsync, parseJWT, parseAuthFlow, resolveSessionIdentity, readTokenScopes, ENV_AUTH_ENABLE_VAR, ENFORCE_ROBOT_AUTH_VAR, ENV_AUTH_VARS, EnvAuthConfigError, isEnvAuthEnabled, isRobotAuthEnforced, readAuthFromEnv, refreshTokenFingerprint, loadRefreshBreaker, saveRefreshBreaker, clearRefreshBreaker, registerRobotClientLoader, TokenRefreshOAuthError, isTokenRefreshOAuthFailure, refreshAccessToken, AUTH_FLOW_ENV_VAR, DEFAULT_AUTH_FILENAME, DEFAULT_ENV_FILENAME, resolveEnvFileLocationAsync, resolveEnvFilePathAsync, loadEnvFileAsync, saveEnvFileAsync, CredentialSource, getLoginStatusAsync, getLoginStatusWithDeps, getAuthContext, getAuthEnv, describeAuthProfilesAsync, ClientCredentialsAuthenticationError, clientCredentialsLogin, JWT_BEARER_ASSERTION_TYPE, FederatedCredentialsAuthenticationError, federatedCredentialsLogin, fetchTenantsAndOrganizations, TENANT_SELECTION_REQUIRED_CODE, INVALID_TENANT_CODE, TenantSelectionError, TenantSelectionRequiredError, InvalidTenantError, isTenantSelectionError, selectTenantWithDeps, interactiveLoginWithDeps, interactiveLogin, logoutWithDeps, logout, authenticate };
|
|
2441
2456
|
|
|
2442
|
-
//# debugId=
|
|
2457
|
+
//# debugId=C2A7396F2D34604964756E2164756E21
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
runNode
|
|
4
|
-
} from "./index-
|
|
4
|
+
} from "./index-ncaxwtze.js";
|
|
5
5
|
import {
|
|
6
6
|
registerRobotClientLoader
|
|
7
|
-
} from "./index-
|
|
8
|
-
import"./index-
|
|
7
|
+
} from "./index-zwnedwxc.js";
|
|
8
|
+
import"./index-w9vfbymc.js";
|
|
9
9
|
import {
|
|
10
10
|
TELEMETRY_DRAIN_ARGV,
|
|
11
11
|
configureLogger,
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
setProcessContextPollSignal,
|
|
19
19
|
setProxyAuthHttpsAgent,
|
|
20
20
|
setTelemetrySidecarEntry
|
|
21
|
-
} from "./index-
|
|
21
|
+
} from "./index-kyn5nn3d.js";
|
|
22
22
|
import"./index-g8ck9tv6.js";
|
|
23
23
|
import"./index-hrt7fpkk.js";
|
|
24
24
|
import"./index-d3w0wn6k.js";
|
|
@@ -192,7 +192,7 @@ var isMain = __require.main == __require.module ?? process.argv[1] === currentFi
|
|
|
192
192
|
if (isMain) {
|
|
193
193
|
setTelemetrySidecarEntry(currentFile);
|
|
194
194
|
if (process.argv[2] === TELEMETRY_DRAIN_ARGV) {
|
|
195
|
-
const { drainPendingTelemetry } = await import("./telemetry-drain-
|
|
195
|
+
const { drainPendingTelemetry } = await import("./telemetry-drain-4sk6ezgk.js");
|
|
196
196
|
await drainPendingTelemetry();
|
|
197
197
|
process.exit(0);
|
|
198
198
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runWithAuthProfile
|
|
3
|
-
} from "./index-
|
|
3
|
+
} from "./index-zwnedwxc.js";
|
|
4
4
|
import {
|
|
5
5
|
OUTPUT_FORMATS,
|
|
6
6
|
catchError,
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
logger,
|
|
10
10
|
runWithSink,
|
|
11
11
|
setGlobalSink
|
|
12
|
-
} from "./index-
|
|
12
|
+
} from "./index-kyn5nn3d.js";
|
|
13
13
|
import"./index-g8ck9tv6.js";
|
|
14
14
|
import {
|
|
15
15
|
exports_external
|
|
@@ -84,7 +84,7 @@ async function executeCommand(command) {
|
|
|
84
84
|
const previousSink = getOutputSink();
|
|
85
85
|
setGlobalSink(sink);
|
|
86
86
|
const [error] = await catchError(async () => {
|
|
87
|
-
const { run } = await import("./cli-
|
|
87
|
+
const { run } = await import("./cli-9smahap0.js");
|
|
88
88
|
await runWithAuthProfile(undefined, () => runWithSink(sink, () => run(context)));
|
|
89
89
|
});
|
|
90
90
|
if (error) {
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@uipath/cli",
|
|
3
3
|
"author": "UiPath",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.204.0-preview.211",
|
|
6
6
|
"description": "Cross platform CLI for UiPath",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
@@ -36,5 +36,5 @@
|
|
|
36
36
|
"kerberos": "7.0.0",
|
|
37
37
|
"node-expose-sspi": "0.1.60"
|
|
38
38
|
},
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "275e01f1f6098d4c3bc9673f5225f33372822534"
|
|
40
40
|
}
|