@uipath/solution-tool 1.201.0-preview.115 → 1.201.0-preview.122

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/dist/deploy.js CHANGED
@@ -4,9 +4,11 @@ import {
4
4
  listDeploymentsAsync,
5
5
  listPackagesAsync,
6
6
  uninstallDeploymentAsync
7
- } from "./packager-tool-n49qbf8m.js";
8
- import"./packager-tool-arbagkf2.js";
9
- import"./packager-tool-r9n45rjm.js";
7
+ } from "./packager-tool-es5j32bw.js";
8
+ import"./packager-tool-dmms4my7.js";
9
+ import"./packager-tool-bna6wzjx.js";
10
+ import"./packager-tool-fzwxq48d.js";
11
+ import"./packager-tool-bcpknnr8.js";
10
12
  import"./packager-tool-9qecd4wb.js";
11
13
  import"./packager-tool-7eva0peq.js";
12
14
  import"./packager-tool-5arsyj36.js";
@@ -20,4 +22,4 @@ export {
20
22
  activateDeploymentAsync
21
23
  };
22
24
 
23
- //# debugId=67EC957D7F60B35E64756E2164756E21
25
+ //# debugId=EAA9EAD5F016F5DF64756E2164756E21
package/dist/index.js CHANGED
@@ -2,18 +2,21 @@
2
2
  import {
3
3
  metadata,
4
4
  registerCommands
5
- } from "./packager-tool-9x8dbxbn.js";
6
- import"./packager-tool-n49qbf8m.js";
7
- import"./packager-tool-85x8cje1.js";
8
- import"./packager-tool-y35nbbkm.js";
5
+ } from "./packager-tool-mkd42q0r.js";
6
+ import"./packager-tool-yktm4v4r.js";
7
+ import"./packager-tool-es5j32bw.js";
8
+ import"./packager-tool-67ssxgph.js";
9
+ import"./packager-tool-aqff5ehb.js";
9
10
  import"./packager-tool-9vehmnke.js";
10
- import"./packager-tool-c84z58bt.js";
11
- import"./packager-tool-arbagkf2.js";
12
- import"./packager-tool-ngh4qwjv.js";
11
+ import"./packager-tool-knvz827a.js";
12
+ import"./packager-tool-dmms4my7.js";
13
+ import"./packager-tool-bna6wzjx.js";
14
+ import"./packager-tool-krd5v2r5.js";
13
15
  import"./packager-tool-vpr77gre.js";
16
+ import"./packager-tool-fzwxq48d.js";
14
17
  import {
15
18
  Command
16
- } from "./packager-tool-r9n45rjm.js";
19
+ } from "./packager-tool-bcpknnr8.js";
17
20
  import"./packager-tool-9qecd4wb.js";
18
21
  import"./packager-tool-7eva0peq.js";
19
22
  import"./packager-tool-5arsyj36.js";
@@ -26,4 +29,4 @@ program.name(metadata.commandPrefix).description(metadata.description).version(m
26
29
  await registerCommands(program);
27
30
  program.parse(process.argv);
28
31
 
29
- //# debugId=15F8C3D5A578296364756E2164756E21
32
+ //# debugId=61F6B7D4CF8C0EE964756E2164756E21
package/dist/init.d.ts CHANGED
@@ -2,16 +2,14 @@
2
2
  * Public `@uipath/solution-tool/init` entry: the programmatic init service for SDK
3
3
  * consumers, without the CLI side effects of `tool.ts`. Mirrors `@uipath/flow-tool/validation`.
4
4
  *
5
- * Also re-exports `addProjectArtifactsToSolutionAsync` so `*-tool init` paths
6
- * (flow, maestro, agent, case, codedapp) can generate the
5
+ * Also re-exports `addProjectArtifactsToSolutionAsync`, which generates the
7
6
  * `resources/solution_folder/process/<kind>/` artifact-resource entries that
8
- * `uip solution project add` produces. Without this step, init succeeds but
7
+ * `uip solution project add` produces. Without that step, init succeeds but
9
8
  * `solution pack` would later miss the artifact resources, forcing a
10
- * `solution project remove` + `add` recovery cycle.
11
- *
12
- * Runtime contract: the tools load this entry through `ensureToolModule`
13
- * (`@uipath/common`) instead of bundling it — renaming this entry or its
14
- * exports breaks them with no compile error.
9
+ * `solution project remove` + `add` recovery cycle. In-repo `*-tool init` paths
10
+ * (flow, maestro, agent, case, codedapp) import it straight from
11
+ * `@uipath/solution-sdk/resources`; the re-export is here for consumers that
12
+ * only have solution-tool.
15
13
  */
16
14
  export type { AddProjectArtifactsOptions, ProjectArtifactsResult, } from "@uipath/solution-sdk/resources";
17
15
  export { addProjectArtifactsToSolutionAsync } from "@uipath/solution-sdk/resources";
package/dist/init.js CHANGED
@@ -1,12 +1,13 @@
1
1
  import {
2
2
  SolutionInitError,
3
3
  solutionInitAsync
4
- } from "./packager-tool-85x8cje1.js";
4
+ } from "./packager-tool-67ssxgph.js";
5
5
  import {
6
6
  addProjectArtifactsToSolutionAsync
7
- } from "./packager-tool-ngh4qwjv.js";
7
+ } from "./packager-tool-krd5v2r5.js";
8
8
  import"./packager-tool-vpr77gre.js";
9
- import"./packager-tool-r9n45rjm.js";
9
+ import"./packager-tool-fzwxq48d.js";
10
+ import"./packager-tool-bcpknnr8.js";
10
11
  import"./packager-tool-9qecd4wb.js";
11
12
  import"./packager-tool-7eva0peq.js";
12
13
  import"./packager-tool-5arsyj36.js";
@@ -18,4 +19,4 @@ export {
18
19
  SolutionInitError
19
20
  };
20
21
 
21
- //# debugId=76F6B195244A7E5564756E2164756E21
22
+ //# debugId=6DBB85193F4F221A64756E2164756E21
@@ -0,0 +1,378 @@
1
+ import {
2
+ getStudioWebAuth,
3
+ useStudioWebAuth
4
+ } from "./packager-tool-yktm4v4r.js";
5
+ import {
6
+ getStudioWebSolutionProjects,
7
+ listStudioWebSolutions
8
+ } from "./packager-tool-bna6wzjx.js";
9
+ import {
10
+ DEFAULT_PAGE_SIZE,
11
+ OutputFormatter,
12
+ Pagination,
13
+ RESULTS,
14
+ catchError,
15
+ parseBoundedInt,
16
+ parseOffset,
17
+ processContext
18
+ } from "./packager-tool-bcpknnr8.js";
19
+ import"./packager-tool-9qecd4wb.js";
20
+ import {
21
+ getFileSystem
22
+ } from "./packager-tool-7eva0peq.js";
23
+ import"./packager-tool-5arsyj36.js";
24
+ import"./packager-tool-129wn232.js";
25
+ import"./packager-tool-0v6na3yp.js";
26
+
27
+ // src/services/solution-list-service.ts
28
+ var fail = (message, instructions) => ({
29
+ ok: false,
30
+ message,
31
+ instructions
32
+ });
33
+ function toStudioWebConfig(auth) {
34
+ return {
35
+ baseUrl: auth.baseUrl,
36
+ authToken: auth.accessToken,
37
+ tenantId: auth.tenantId
38
+ };
39
+ }
40
+ var SERVER_PAGE_LIMIT = 100;
41
+ async function listCloudSolutionsAsync(options) {
42
+ const limit = options.limit ?? DEFAULT_PAGE_SIZE;
43
+ const offset = options.offset ?? 0;
44
+ const organizationName = options.auth.organizationName;
45
+ if (!organizationName) {
46
+ return fail("Organization name is not available. Re-authenticate with 'uip login'.", "Run 'uip login' to refresh the login context and try again.");
47
+ }
48
+ const config = toStudioWebConfig(options.auth);
49
+ const collected = [];
50
+ let skip = 0;
51
+ let exhausted = false;
52
+ while (!exhausted && collected.length < offset + limit) {
53
+ const [listError, page] = await catchError(listStudioWebSolutions(config, organizationName, {
54
+ limit: SERVER_PAGE_LIMIT,
55
+ skip,
56
+ name: options.name,
57
+ sortBy: options.sortBy,
58
+ sortOrder: options.sortOrder === undefined ? undefined : options.sortOrder === "Ascending" ? "asc" : "desc"
59
+ }));
60
+ if (listError) {
61
+ return fail(listError.message, "Verify your login (uip login) and tenant access, then retry.");
62
+ }
63
+ collected.push(...page.solutions);
64
+ skip += page.combinedCount;
65
+ exhausted = page.combinedCount < SERVER_PAGE_LIMIT || page.totalCount !== undefined && skip >= page.totalCount;
66
+ }
67
+ return {
68
+ ok: true,
69
+ solutions: collected.slice(offset, offset + limit),
70
+ limit,
71
+ offset,
72
+ total: exhausted ? collected.length : undefined
73
+ };
74
+ }
75
+ var SKIPPED_DIRECTORIES = new Set(["node_modules"]);
76
+ var MAX_SCAN_DEPTH = 16;
77
+ async function scanLocalSolutionsAsync(fs, rootDir) {
78
+ const root = fs.path.resolve(rootDir);
79
+ const [statError, rootStat] = await catchError(fs.stat(root));
80
+ if (statError) {
81
+ return fail(`Cannot access ${root}: ${statError.message}`, "Check the path and its permissions, then try again.");
82
+ }
83
+ if (!rootStat?.isDirectory()) {
84
+ return fail(`Not a directory: ${root}`, "Pass an existing directory to --local (default: current directory).");
85
+ }
86
+ const rows = [];
87
+ const skipped = [];
88
+ await scanDirectory(fs, root, root, 0, rows, skipped);
89
+ rows.sort((a, b) => a.Path === b.Path ? a.UipxFile.localeCompare(b.UipxFile) : a.Path.localeCompare(b.Path));
90
+ return { ok: true, rows, skipped };
91
+ }
92
+ async function scanDirectory(fs, root, dir, depth, rows, skipped) {
93
+ const relativeDir = fs.path.relative(root, dir) || ".";
94
+ if (depth > MAX_SCAN_DEPTH) {
95
+ skipped.push(`Skipped ${relativeDir}: deeper than ${MAX_SCAN_DEPTH} levels.`);
96
+ return;
97
+ }
98
+ const [readError, entries] = await catchError(fs.readdir(dir));
99
+ if (readError) {
100
+ skipped.push(`Skipped ${relativeDir}: ${readError.message}.`);
101
+ return;
102
+ }
103
+ const manifests = entries.filter((entry) => entry.endsWith(".uipx"));
104
+ for (const manifest of manifests) {
105
+ rows.push(await buildLocalRow(fs, root, dir, manifest, manifests.length));
106
+ }
107
+ for (const entry of entries) {
108
+ if (entry.startsWith(".") || SKIPPED_DIRECTORIES.has(entry)) {
109
+ continue;
110
+ }
111
+ const entryPath = fs.path.join(dir, entry);
112
+ const [statError, stat] = await catchError(fs.stat(entryPath));
113
+ if (statError || !stat?.isDirectory()) {
114
+ continue;
115
+ }
116
+ await scanDirectory(fs, root, entryPath, depth + 1, rows, skipped);
117
+ }
118
+ }
119
+ async function buildLocalRow(fs, root, dir, manifest, manifestCountInDir) {
120
+ const name = manifest.slice(0, -".uipx".length);
121
+ const relativeDir = fs.path.relative(root, dir);
122
+ const warnings = [];
123
+ if (manifestCountInDir > 1) {
124
+ warnings.push(`Directory contains ${manifestCountInDir} .uipx manifests; commands like 'uip solution pack' pick one arbitrarily — remove the stale ones.`);
125
+ }
126
+ const dirName = fs.path.basename(dir);
127
+ if (name !== dirName) {
128
+ warnings.push(`Manifest filename '${manifest}' does not match its directory name '${dirName}'.`);
129
+ }
130
+ const row = {
131
+ Path: relativeDir === "" ? "." : relativeDir,
132
+ Name: name,
133
+ UipxFile: manifest,
134
+ Warnings: warnings
135
+ };
136
+ const manifestPath = fs.path.join(dir, manifest);
137
+ const [readError, content] = await catchError(fs.readFile(manifestPath, "utf-8"));
138
+ if (readError || !content) {
139
+ warnings.push(`Could not read ${manifest}: ${readError?.message ?? "file is empty"}.`);
140
+ return row;
141
+ }
142
+ const [parseError, parsed] = catchError(() => JSON.parse(content));
143
+ if (parseError || typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
144
+ warnings.push(`Could not parse ${manifest}: not a valid JSON object.`);
145
+ return row;
146
+ }
147
+ const record = parsed;
148
+ if (typeof record.SolutionId === "string" && record.SolutionId.trim()) {
149
+ row.SolutionId = record.SolutionId;
150
+ } else {
151
+ warnings.push(`${manifest} has no SolutionId.`);
152
+ }
153
+ if (Array.isArray(record.Projects)) {
154
+ row.ProjectCount = record.Projects.length;
155
+ } else {
156
+ warnings.push(`${manifest} has no Projects array.`);
157
+ }
158
+ return row;
159
+ }
160
+ var CLOUD_PROBE_CONCURRENCY = 8;
161
+ async function annotateCloudStatusAsync(rows, auth) {
162
+ const organizationName = auth.organizationName;
163
+ if (!organizationName) {
164
+ return fail("Organization name is not available. Re-authenticate with 'uip login'.", "Run 'uip login' to refresh the login context and try again.");
165
+ }
166
+ const config = toStudioWebConfig(auth);
167
+ const queue = [...rows];
168
+ const workers = Array.from({ length: Math.min(CLOUD_PROBE_CONCURRENCY, queue.length) }, async () => {
169
+ for (let row = queue.shift();row; row = queue.shift()) {
170
+ await probeCloudStatusAsync(row, config, organizationName);
171
+ }
172
+ });
173
+ await Promise.all(workers);
174
+ return;
175
+ }
176
+ async function probeCloudStatusAsync(row, config, organizationName) {
177
+ if (!row.SolutionId) {
178
+ row.CloudStatus = "Unknown";
179
+ return;
180
+ }
181
+ const [probeError, projects] = await catchError(getStudioWebSolutionProjects(config, organizationName, row.SolutionId));
182
+ if (probeError) {
183
+ row.CloudStatus = "Unknown";
184
+ row.Warnings.push(`Cloud check failed: ${probeError.message}`);
185
+ return;
186
+ }
187
+ if (projects === undefined) {
188
+ row.CloudStatus = "NotFound";
189
+ return;
190
+ }
191
+ row.CloudStatus = "OK";
192
+ row.CloudProjectCount = projects.length;
193
+ }
194
+
195
+ // src/commands/list.ts
196
+ var SOLUTION_LIST_EXAMPLES = [
197
+ {
198
+ Description: "List the Studio Web solutions you own or that are shared with you (IDs pipe into 'solution download' and 'solution delete')",
199
+ Command: "uip solution list --limit 2",
200
+ Output: {
201
+ Code: "SolutionsList",
202
+ Data: [
203
+ {
204
+ Id: "a1b2c3d4-0000-0000-0000-000000000001",
205
+ Name: "Examples",
206
+ LastModifiedTime: "2025-04-15T10:30:00Z",
207
+ PublishStatus: "draft",
208
+ Projects: []
209
+ }
210
+ ]
211
+ }
212
+ },
213
+ {
214
+ Description: "List the local solutions under a directory tree by scanning for .uipx manifests",
215
+ Command: "uip solution list --local ./workspace",
216
+ Output: {
217
+ Code: "LocalSolutionsList",
218
+ Data: [
219
+ {
220
+ Path: "Examples",
221
+ Name: "Examples",
222
+ UipxFile: "Examples.uipx",
223
+ SolutionId: "a1b2c3d4-0000-0000-0000-000000000001",
224
+ ProjectCount: 2,
225
+ Warnings: []
226
+ }
227
+ ]
228
+ }
229
+ },
230
+ {
231
+ Description: "Scan local solutions and check whether each SolutionId still exists on Studio Web",
232
+ Command: "uip solution list --local ./workspace --check-cloud",
233
+ Output: {
234
+ Code: "LocalSolutionsList",
235
+ Data: [
236
+ {
237
+ Path: "SolutionA",
238
+ Name: "SolutionA",
239
+ UipxFile: "SolutionA.uipx",
240
+ SolutionId: "0dbafff0-0000-0000-0000-000000000368",
241
+ ProjectCount: 1,
242
+ Warnings: [],
243
+ CloudStatus: "NotFound"
244
+ }
245
+ ]
246
+ }
247
+ }
248
+ ];
249
+ var CLOUD_ONLY_OPTIONS = [
250
+ "limit",
251
+ "offset",
252
+ "name",
253
+ "sortBy",
254
+ "sortOrder"
255
+ ];
256
+ var STUDIO_WEB_SOLUTIONS_PAGE_LIMIT = 100;
257
+ function parseStudioWebSolutionsLimit(raw) {
258
+ return parseBoundedInt(raw, "--limit", {
259
+ min: 1,
260
+ max: STUDIO_WEB_SOLUTIONS_PAGE_LIMIT
261
+ });
262
+ }
263
+ var registerListCommand = (program) => {
264
+ const command = program.previewCommand("list").description("List solutions. By default lists the Studio Web solutions you own or that are shared with you — the SolutionIds it returns are the ones 'solution download' and 'solution delete' take. With --local, scans a directory tree for local solutions (.uipx manifests) and flags stale or ambiguous manifests. Add --check-cloud to also resolve each local SolutionId against Studio Web and report whether it can still be reached (OK / NotFound).").option("-l, --limit <number>", "Maximum solutions to return, between 1 and 100 (cloud mode)", parseStudioWebSolutionsLimit, DEFAULT_PAGE_SIZE).option("--offset <number>", "Number of solutions to skip (cloud mode)", parseOffset, 0).option("--name <pattern>", "Filter solutions by name (cloud mode; server-side keyword match)").option("--sort-by <column>", "Column to sort by (cloud mode; server default order when omitted)").option("--sort-order <direction>", "Sort direction: Ascending or Descending (cloud mode)").option("--local [directory]", "List local solutions by scanning this directory tree (default: current directory) instead of Studio Web").option("--check-cloud", "With --local: check each local SolutionId against Studio Web and report OK / NotFound. Implies --local.").option("--login-validity <minutes>", "Minimum minutes before token expiration to trigger a refresh (default: 10)", parseInt, 10).examples(SOLUTION_LIST_EXAMPLES);
265
+ useStudioWebAuth(command, {
266
+ requireOrganizationName: true,
267
+ shouldResolve: (_thisCommand, actionCommand) => needsStudioWebAuth(actionCommand.opts())
268
+ }).trackedAction(processContext, async (options, actionCommand) => {
269
+ const localMode = options.local !== undefined || options.checkCloud === true;
270
+ if (localMode) {
271
+ const misused = CLOUD_ONLY_OPTIONS.filter((key) => actionCommand.getOptionValueSource(key) === "cli");
272
+ if (misused.length > 0) {
273
+ outputError(`The ${misused.map(optionFlag).join(", ")} option only applies to the cloud listing.`, "Drop the option, or remove --local/--check-cloud to list Studio Web solutions.");
274
+ return;
275
+ }
276
+ await runLocalList(options, actionCommand);
277
+ return;
278
+ }
279
+ await runCloudList(options, actionCommand);
280
+ });
281
+ };
282
+ function needsStudioWebAuth(options) {
283
+ return options.local === undefined || options.checkCloud === true;
284
+ }
285
+ async function runCloudList(options, actionCommand) {
286
+ const sortOrder = normalizeSortOrder(options.sortOrder);
287
+ if (options.sortOrder !== undefined && sortOrder === undefined) {
288
+ outputError(`Invalid --sort-order value: ${options.sortOrder}.`, "Use 'Ascending' or 'Descending'.");
289
+ return;
290
+ }
291
+ const auth = resolveAuth(actionCommand);
292
+ if (!auth) {
293
+ return;
294
+ }
295
+ const result = await listCloudSolutionsAsync({
296
+ auth,
297
+ limit: options.limit,
298
+ offset: options.offset,
299
+ name: options.name,
300
+ sortBy: options.sortBy,
301
+ sortOrder
302
+ });
303
+ if (!result.ok) {
304
+ outputError(result.message, result.instructions);
305
+ return;
306
+ }
307
+ OutputFormatter.success({
308
+ Result: RESULTS.Success,
309
+ Code: "SolutionsList",
310
+ Data: result.solutions,
311
+ Pagination: new Pagination({
312
+ returned: result.solutions.length,
313
+ limit: result.limit,
314
+ offset: result.offset,
315
+ total: result.total
316
+ })
317
+ });
318
+ }
319
+ async function runLocalList(options, actionCommand) {
320
+ const fs = getFileSystem();
321
+ const rootDir = typeof options.local === "string" ? options.local : ".";
322
+ const scan = await scanLocalSolutionsAsync(fs, rootDir);
323
+ if (!scan.ok) {
324
+ outputError(scan.message, scan.instructions);
325
+ return;
326
+ }
327
+ if (options.checkCloud) {
328
+ const auth = resolveAuth(actionCommand);
329
+ if (!auth) {
330
+ return;
331
+ }
332
+ const failure = await annotateCloudStatusAsync(scan.rows, auth);
333
+ if (failure) {
334
+ outputError(failure.message, failure.instructions);
335
+ return;
336
+ }
337
+ }
338
+ OutputFormatter.success({
339
+ Result: RESULTS.Success,
340
+ Code: "LocalSolutionsList",
341
+ Data: scan.rows,
342
+ Instructions: scan.skipped.length > 0 ? scan.skipped.join(" ") : undefined
343
+ });
344
+ }
345
+ function resolveAuth(actionCommand) {
346
+ const [authError, auth] = catchError(() => getStudioWebAuth(actionCommand));
347
+ if (authError) {
348
+ outputError(authError.message, "Run 'uip login' to authenticate and try again.");
349
+ return;
350
+ }
351
+ return auth;
352
+ }
353
+ function normalizeSortOrder(direction) {
354
+ switch (direction?.toLowerCase()) {
355
+ case "ascending":
356
+ return "Ascending";
357
+ case "descending":
358
+ return "Descending";
359
+ default:
360
+ return;
361
+ }
362
+ }
363
+ function optionFlag(key) {
364
+ return `--${key.replace(/[A-Z]/g, (c) => `-${c.toLowerCase()}`)}`;
365
+ }
366
+ function outputError(message, instructions) {
367
+ OutputFormatter.error({
368
+ Result: RESULTS.Failure,
369
+ Message: message,
370
+ Instructions: instructions
371
+ });
372
+ processContext.exit(1);
373
+ }
374
+ export {
375
+ registerListCommand
376
+ };
377
+
378
+ //# debugId=F86E269BD92740C164756E2164756E21
package/dist/pack.js CHANGED
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  packSolutionAsync
3
- } from "./packager-tool-y35nbbkm.js";
3
+ } from "./packager-tool-aqff5ehb.js";
4
4
  import"./packager-tool-9vehmnke.js";
5
- import"./packager-tool-ngh4qwjv.js";
5
+ import"./packager-tool-krd5v2r5.js";
6
6
  import"./packager-tool-vpr77gre.js";
7
- import"./packager-tool-r9n45rjm.js";
7
+ import"./packager-tool-fzwxq48d.js";
8
+ import"./packager-tool-bcpknnr8.js";
8
9
  import"./packager-tool-9qecd4wb.js";
9
10
  import"./packager-tool-7eva0peq.js";
10
11
  import"./packager-tool-5arsyj36.js";
@@ -14,4 +15,4 @@ export {
14
15
  packSolutionAsync
15
16
  };
16
17
 
17
- //# debugId=628CD0E0345A06B764756E2164756E21
18
+ //# debugId=99228206AFE9054A64756E2164756E21
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  catchError
3
- } from "./packager-tool-r9n45rjm.js";
3
+ } from "./packager-tool-bcpknnr8.js";
4
4
  import {
5
5
  getFileSystem
6
6
  } from "./packager-tool-7eva0peq.js";
@@ -23,7 +23,7 @@ import {
23
23
  models_BindingsResourceType,
24
24
  readUipxProjects,
25
25
  syncAndLog
26
- } from "./packager-tool-ngh4qwjv.js";
26
+ } from "./packager-tool-krd5v2r5.js";
27
27
  import {
28
28
  ToolResult as ToolResult2,
29
29
  toolsFactoryRepository as toolsFactoryRepository2
@@ -37,7 +37,7 @@ import {
37
37
  logger,
38
38
  telemetry,
39
39
  unsupportedSolutionProjectType
40
- } from "./packager-tool-r9n45rjm.js";
40
+ } from "./packager-tool-bcpknnr8.js";
41
41
  import {
42
42
  getFileSystem
43
43
  } from "./packager-tool-7eva0peq.js";
@@ -23247,6 +23247,7 @@ var TLS_ERROR_CODES = new Set([
23247
23247
  ]);
23248
23248
  var TLS_INSTRUCTIONS = "The server's TLS certificate could not be verified. Most often a " + "corporate proxy/firewall re-signs HTTPS with a root CA that Node does " + "not trust — set NODE_EXTRA_CA_CERTS to that CA's PEM file (and HTTPS_PROXY " + "if you connect through a proxy). If the certificate is instead expired or " + "its hostname does not match, fix the endpoint URL or the system clock. " + "Then retry.";
23249
23249
  var NETWORK_INSTRUCTIONS = "Could not reach the UiPath service. Check your network connection and " + "VPN, confirm any HTTP_PROXY/HTTPS_PROXY/NO_PROXY settings are correct, " + "then retry.";
23250
+ var LOCAL_PERMISSION_ERROR_CODES = new Set(["EACCES", "EPERM", "EROFS"]);
23250
23251
  var logFilePathSlot = singleton("logFilePath");
23251
23252
  function setGlobalLogFilePath(path3) {
23252
23253
  logFilePathSlot.set(path3);
@@ -23665,7 +23666,6 @@ var SENSITIVE_KEY_PREFIXES = new Set([
23665
23666
  "oauth"
23666
23667
  ]);
23667
23668
  var factorySlot = singleton("PackagerFactoryProvider");
23668
- var moduleSlot = singleton("ToolModuleProvider");
23669
23669
  var RulesConfigFileType;
23670
23670
  ((RulesConfigFileType2) => {
23671
23671
  RulesConfigFileType2["Default"] = "Default";
@@ -23804,7 +23804,7 @@ var sdkUserAgentHostToken2 = singleton2("SdkUserAgentHostToken");
23804
23804
  var package_default = {
23805
23805
  name: "@uipath/project-packager",
23806
23806
  license: "MIT",
23807
- version: "1.201.0-preview.115",
23807
+ version: "1.201.0-preview.122",
23808
23808
  description: "UiPath Project Packager - core library for packing individual UiPath projects",
23809
23809
  type: "module",
23810
23810
  main: "./dist/index.js",
@@ -33817,6 +33817,7 @@ var TLS_ERROR_CODES3 = new Set([
33817
33817
  ]);
33818
33818
  var TLS_INSTRUCTIONS2 = "The server's TLS certificate could not be verified. Most often a " + "corporate proxy/firewall re-signs HTTPS with a root CA that Node does " + "not trust — set NODE_EXTRA_CA_CERTS to that CA's PEM file (and HTTPS_PROXY " + "if you connect through a proxy). If the certificate is instead expired or " + "its hostname does not match, fix the endpoint URL or the system clock. " + "Then retry.";
33819
33819
  var NETWORK_INSTRUCTIONS2 = "Could not reach the UiPath service. Check your network connection and " + "VPN, confirm any HTTP_PROXY/HTTPS_PROXY/NO_PROXY settings are correct, " + "then retry.";
33820
+ var LOCAL_PERMISSION_ERROR_CODES2 = new Set(["EACCES", "EPERM", "EROFS"]);
33820
33821
  var import__2 = __toESM3(require_commander2(), 1);
33821
33822
  var {
33822
33823
  program: program2,
@@ -34972,6 +34973,7 @@ var CLI_ERROR_CODES = [
34972
34973
  "invalid_argument",
34973
34974
  "authentication_required",
34974
34975
  "permission_denied",
34976
+ "local_permission_denied",
34975
34977
  "not_found",
34976
34978
  "rate_limited",
34977
34979
  "network_error",
@@ -35408,12 +35410,16 @@ function defaultErrorCodeForHttpStatus(status) {
35408
35410
  return "server_error";
35409
35411
  return;
35410
35412
  }
35413
+ var LOCAL_PERMISSION_TEXT_PATTERN = /(?:\b|\()(?:EACCES|EPERM|EROFS)(?::\s|\))/;
35411
35414
  function defaultErrorCodeForFailure(data) {
35412
35415
  if (data.Result === RESULTS2.Failure) {
35413
35416
  const status = data.Context?.httpStatus ?? parseHttpStatusFromMessage2(data.Message);
35414
35417
  const errorCode = defaultErrorCodeForHttpStatus(status);
35415
35418
  if (errorCode)
35416
35419
  return errorCode;
35420
+ if (status === undefined && (LOCAL_PERMISSION_TEXT_PATTERN.test(data.Message) || LOCAL_PERMISSION_TEXT_PATTERN.test(data.Instructions))) {
35421
+ return "local_permission_denied";
35422
+ }
35417
35423
  }
35418
35424
  return defaultErrorCodeForResult(data.Result);
35419
35425
  }
@@ -35879,9 +35885,8 @@ var ScreenLogger2;
35879
35885
  ScreenLogger22.progress = progress;
35880
35886
  })(ScreenLogger2 ||= {});
35881
35887
  var sdkUserAgentHostToken3 = singleton3("SdkUserAgentHostToken");
35882
- var factorySlot2 = singleton3("PackagerFactoryProvider");
35883
- var moduleSlot2 = singleton3("ToolModuleProvider");
35884
35888
  var shippedKeysSlot = singleton3("ShipSucceededDedupeKeys");
35889
+ var factorySlot2 = singleton3("PackagerFactoryProvider");
35885
35890
  var globalLogHandler2 = (logMessage) => {
35886
35891
  const formattedMessage = logMessage.toFormattedString();
35887
35892
  switch (logMessage.logLevel) {
@@ -36300,7 +36305,7 @@ var sdkUserAgentHostToken22 = singleton22("SdkUserAgentHostToken");
36300
36305
  var package_default2 = {
36301
36306
  name: "@uipath/project-packager",
36302
36307
  license: "MIT",
36303
- version: "1.201.0-preview.115",
36308
+ version: "1.201.0-preview.122",
36304
36309
  description: "UiPath Project Packager - core library for packing individual UiPath projects",
36305
36310
  type: "module",
36306
36311
  main: "./dist/index.js",
@@ -38312,4 +38317,4 @@ async function packSolutionAsync(solutionPath, options) {
38312
38317
 
38313
38318
  export { SolutionPackOptions, ensurePackagerTools, createSolutionPackager, readSolutionFileAsUint8Array, resolveSdkLogLevel, applyAuthConnection, GOVERNANCE_OPTION_INSTRUCTIONS, validateGovernanceOptions, PackCommandService, packSolutionAsync };
38314
38319
 
38315
- //# debugId=C6F7B559131A0F7564756E2164756E21
38320
+ //# debugId=0AD7120A3CCD00F264756E2164756E21