@uipath/solution-tool 1.204.0-preview.250 → 1.204.0-preview.255

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.
Files changed (26) hide show
  1. package/README.md +40 -14
  2. package/dist/THIRD-PARTY-NOTICES.md +32 -1
  3. package/dist/{deploy-delete-service-nnmz7drx.js → deploy-delete-service-w3e8x1kq.js} +5 -5
  4. package/dist/{deploy-status-service-w27q7y6y.js → deploy-status-service-6svq7c6w.js} +5 -5
  5. package/dist/deploy.js +7 -7
  6. package/dist/{deployment-search-9q8njj3v.js → deployment-search-v2qtz23x.js} +2 -2
  7. package/dist/{feed-resolver-6k5kg0mc.js → feed-resolver-xz3akamf.js} +2 -2
  8. package/dist/{feed-scope-failure-yajs7f63.js → feed-scope-failure-0j5byccb.js} +3 -3
  9. package/dist/index.js +10 -10
  10. package/dist/{list-fejfazxk.js → list-tjetkspc.js} +1 -1
  11. package/dist/pack.js +1 -1
  12. package/dist/{packager-tool-0r5dfqf7.js → packager-tool-5sex4a1h.js} +2 -2
  13. package/dist/{packager-tool-cs7m7p4s.js → packager-tool-83m6ns0r.js} +334 -54
  14. package/dist/{packager-tool-jcmvg1c8.js → packager-tool-9ha2z8h5.js} +1 -1
  15. package/dist/{packager-tool-gyse32qf.js → packager-tool-9qgmwy21.js} +2 -2
  16. package/dist/{packager-tool-bz0a3nar.js → packager-tool-a9jx8gf4.js} +5 -5
  17. package/dist/{packager-tool-gtq04gb8.js → packager-tool-fjsn5h8s.js} +2 -2
  18. package/dist/{packager-tool-wfmk3vrp.js → packager-tool-jq9zw82w.js} +1 -1
  19. package/dist/{packager-tool-e2ep9x52.js → packager-tool-ssq2kzqm.js} +1 -1
  20. package/dist/{packager-tool-kmp7pr6b.js → packager-tool-tgw5x6vx.js} +1 -1
  21. package/dist/{packager-tool-2tja89af.js → packager-tool-tv9c1e80.js} +1 -1
  22. package/dist/{packager-tool-1w8azcph.js → packager-tool-yfpcvdpm.js} +25 -14
  23. package/dist/publish.js +3 -3
  24. package/dist/templates/AGENTS.md +2 -0
  25. package/dist/tool.js +10 -10
  26. package/package.json +2 -2
package/README.md CHANGED
@@ -68,6 +68,10 @@ Directories (matched by exact name at any depth):
68
68
  - `node_modules` — Node dependency caches.
69
69
  - `__pycache__` — Python bytecode caches.
70
70
  - `.git` — VCS metadata.
71
+ - `.local` — Studio's per-project NuGet restore cache; Studio Web restores
72
+ its own packages on import.
73
+ - `.flow-sdk` — the Maestro builder SDK's authoring work directory; Studio
74
+ Web gets the compiled `.flow` beside it.
71
75
 
72
76
  Files (matched by name pattern at any depth):
73
77
 
@@ -77,30 +81,52 @@ Files (matched by name pattern at any depth):
77
81
  are never shipped in the bundle. Lookalikes such as `.envrc`,
78
82
  `.environment`, and `myenv.txt` are kept.
79
83
 
80
- To skip additional directories, add a `.uipignore` file at the solution
81
- root (next to the `.uipx` file). One directory name per line; `#` starts a
82
- line or trailing comment; blank lines and whitespace-only lines are
83
- ignored. Each entry matches by exact directory name at any depth — the
84
- same semantics as the built-in defaults. Path separators (`/`, `\`) are
85
- not supported yet.
84
+ To leave more out of the `.uis` bundle that `uip solution upload` sends to
85
+ Studio Web, add a `.uipignore` file at the solution root (next to the
86
+ `.uipx` file). It uses `.gitignore` syntax: a bare name (`dist`) matches a
87
+ file or directory of that name at any depth, a trailing `/` matches
88
+ directories only, a leading `/` or a `/` in the middle anchors the pattern
89
+ to the folder holding the `.uipignore`, `*` / `**` are globs, and `!`
90
+ re-includes something an earlier pattern excluded. A line starting with `#`
91
+ is a comment; a `#` anywhere else is part of the pattern, so keep comments
92
+ on their own line. Matching ignores case, so `Dist` also excludes `dist/`.
93
+ The built-in defaults above always apply and cannot be re-included. A
94
+ pattern that would drop a project the `.uipx` lists — its folder name, or
95
+ `*.uiproj` — is refused with an error, since the archive would still
96
+ reference the project; take the project out with `uip solution projects
97
+ remove` instead. `uip solution pack` does not read this file.
98
+
99
+ Earlier CLI versions accepted only bare directory names in `.uipignore` and
100
+ allowed a trailing `# comment` after a name. Bare names keep working; a
101
+ trailing comment is now part of the pattern, so move it to its own line.
86
102
 
87
103
  Example `.uipignore`:
88
104
 
89
105
  ```gitignore
90
106
  # project-specific build artifacts
91
107
  dist
92
- coverage
108
+ coverage/
93
109
 
94
- # vendored deps we don't want shipped
95
- vendor
110
+ # logs anywhere, except one we want to keep
111
+ *.log
112
+ !important.log
113
+
114
+ # a folder inside one project, relative to the solution root
115
+ MyAgent/generated/
96
116
  ```
97
117
 
98
118
  A `.uipignore` may also be placed at a **project root** (next to that
99
- project's `project.uiproj`). Its entries are scoped to that project only and
100
- are merged on top of the solution-root `.uipignore` and the built-in
101
- defaults. Use this when an exclude should apply to one project but not its
102
- siblings (a solution-root entry, by contrast, applies to every project). The
103
- file format is identical.
119
+ project's `project.uiproj`). Its patterns are matched relative to that
120
+ project's root, apply to that project only, and are added on top of the
121
+ solution-root `.uipignore` and the built-in defaults. Use this when an
122
+ exclude should apply to one project but not its siblings (a solution-root
123
+ entry, by contrast, applies to every project unless it names a path). A
124
+ project file can add excludes but cannot re-include (`!`) something the
125
+ solution-root file already excluded.
126
+
127
+ `uip codedapp push` reads the same `.uipignore` file (plus the app's
128
+ `.gitignore`), so one file controls both commands. Its older
129
+ `.uipathignore` is still read but deprecated — rename it to `.uipignore`.
104
130
 
105
131
  The bundler logs which additional excludes are being applied at upload
106
132
  time so the effective set is visible in CI logs.
@@ -5,7 +5,7 @@ compiled into its `dist/` output rather than installed alongside it.
5
5
  Their licences and copyright notices are reproduced here in full, as
6
6
  those licences require.
7
7
 
8
- 22 bundled dependencies:
8
+ 23 bundled dependencies:
9
9
 
10
10
  - @uipath/resource-builder-sdk@2025.11.0-alpha6004-4107 — ISC
11
11
  - @uipath/resource-builder-tool@2025.11.0-alpha6004-4107 — ISC
@@ -15,6 +15,7 @@ those licences require.
15
15
  - default-browser-id@5.0.1 — MIT
16
16
  - define-lazy-prop@3.0.0 — MIT
17
17
  - fflate@0.8.3 — MIT
18
+ - ignore@5.3.2 — MIT
18
19
  - is-docker@3.0.0 — MIT
19
20
  - is-in-ssh@1.0.0 — MIT
20
21
  - is-inside-container@1.0.0 — MIT
@@ -185,6 +186,36 @@ SOFTWARE.
185
186
 
186
187
  ---
187
188
 
189
+ ## ignore@5.3.2
190
+
191
+ SPDX: MIT
192
+
193
+ ```
194
+ Copyright (c) 2013 Kael Zhang <i@kael.me>, contributors
195
+ http://kael.me/
196
+
197
+ Permission is hereby granted, free of charge, to any person obtaining
198
+ a copy of this software and associated documentation files (the
199
+ "Software"), to deal in the Software without restriction, including
200
+ without limitation the rights to use, copy, modify, merge, publish,
201
+ distribute, sublicense, and/or sell copies of the Software, and to
202
+ permit persons to whom the Software is furnished to do so, subject to
203
+ the following conditions:
204
+
205
+ The above copyright notice and this permission notice shall be
206
+ included in all copies or substantial portions of the Software.
207
+
208
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
209
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
210
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
211
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
212
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
213
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
214
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
215
+ ```
216
+
217
+ ---
218
+
188
219
  ## is-docker@3.0.0
189
220
 
190
221
  SPDX: MIT
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  deleteDeploymentAsync
3
- } from "./packager-tool-0r5dfqf7.js";
4
- import"./packager-tool-gyse32qf.js";
5
- import"./packager-tool-2tja89af.js";
3
+ } from "./packager-tool-5sex4a1h.js";
4
+ import"./packager-tool-9qgmwy21.js";
5
+ import"./packager-tool-tv9c1e80.js";
6
6
  import"./packager-tool-7gr2nphb.js";
7
- import"./packager-tool-kmp7pr6b.js";
8
- import"./packager-tool-cs7m7p4s.js";
7
+ import"./packager-tool-tgw5x6vx.js";
8
+ import"./packager-tool-83m6ns0r.js";
9
9
  import"./packager-tool-bqre28m1.js";
10
10
  import"./packager-tool-f5gq77m5.js";
11
11
  import"./packager-tool-zdfn32bc.js";
@@ -3,19 +3,19 @@ import {
3
3
  needsPendingResources,
4
4
  quoteForShell,
5
5
  readPendingResourcesAsync
6
- } from "./packager-tool-wfmk3vrp.js";
6
+ } from "./packager-tool-jq9zw82w.js";
7
7
  import {
8
8
  INCOMPLETE_SWEEP_ADVICE,
9
9
  findDeploymentAcrossFeeds,
10
10
  reportIncompleteSweepAsync
11
- } from "./packager-tool-gyse32qf.js";
11
+ } from "./packager-tool-9qgmwy21.js";
12
12
  import {
13
13
  DeploymentSearchNeedsUserSessionError,
14
14
  findCurrentDeploymentAsync,
15
15
  findDeploymentByName,
16
16
  httpStatusOf,
17
17
  isAuthRefusal
18
- } from "./packager-tool-2tja89af.js";
18
+ } from "./packager-tool-tv9c1e80.js";
19
19
  import {
20
20
  Configuration as Configuration2,
21
21
  PipelinesApi
@@ -24,11 +24,11 @@ import {
24
24
  feedScopeInitOverride,
25
25
  feedSelectorFlag,
26
26
  folderKeyInitOverride
27
- } from "./packager-tool-kmp7pr6b.js";
27
+ } from "./packager-tool-tgw5x6vx.js";
28
28
  import {
29
29
  Configuration,
30
30
  DeploymentsApi
31
- } from "./packager-tool-cs7m7p4s.js";
31
+ } from "./packager-tool-83m6ns0r.js";
32
32
  import {
33
33
  FeedReadRefusedError,
34
34
  classifyFeedSession,
package/dist/deploy.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  deleteDeploymentAsync
3
- } from "./packager-tool-0r5dfqf7.js";
3
+ } from "./packager-tool-5sex4a1h.js";
4
4
  import {
5
5
  activateDeploymentAsync,
6
6
  deployRunAsync,
@@ -8,13 +8,13 @@ import {
8
8
  listPackagesAsync,
9
9
  uninstallDeploymentAsync,
10
10
  upgradeDeploymentAsync
11
- } from "./packager-tool-bz0a3nar.js";
12
- import"./packager-tool-wfmk3vrp.js";
13
- import"./packager-tool-gyse32qf.js";
14
- import"./packager-tool-2tja89af.js";
11
+ } from "./packager-tool-a9jx8gf4.js";
12
+ import"./packager-tool-jq9zw82w.js";
13
+ import"./packager-tool-9qgmwy21.js";
14
+ import"./packager-tool-tv9c1e80.js";
15
15
  import"./packager-tool-7gr2nphb.js";
16
- import"./packager-tool-kmp7pr6b.js";
17
- import"./packager-tool-cs7m7p4s.js";
16
+ import"./packager-tool-tgw5x6vx.js";
17
+ import"./packager-tool-83m6ns0r.js";
18
18
  import"./packager-tool-bqre28m1.js";
19
19
  import"./packager-tool-f5gq77m5.js";
20
20
  import"./packager-tool-zdfn32bc.js";
@@ -16,9 +16,9 @@ import {
16
16
  mapOperationStatusToPipelineStatus,
17
17
  newestDeploymentRow,
18
18
  resolveInstalledFolder
19
- } from "./packager-tool-2tja89af.js";
19
+ } from "./packager-tool-tv9c1e80.js";
20
20
  import"./packager-tool-7gr2nphb.js";
21
- import"./packager-tool-cs7m7p4s.js";
21
+ import"./packager-tool-83m6ns0r.js";
22
22
  import"./packager-tool-bqre28m1.js";
23
23
  import"./packager-tool-f2e9rzxk.js";
24
24
  import"./packager-tool-kswwd3hp.js";
@@ -5,8 +5,8 @@ import {
5
5
  feedSelectorFlag,
6
6
  folderKeyInitOverride,
7
7
  resolveFeedScope
8
- } from "./packager-tool-kmp7pr6b.js";
9
- import"./packager-tool-cs7m7p4s.js";
8
+ } from "./packager-tool-tgw5x6vx.js";
9
+ import"./packager-tool-83m6ns0r.js";
10
10
  import"./packager-tool-bqre28m1.js";
11
11
  import"./packager-tool-zdfn32bc.js";
12
12
  import"./packager-tool-f2e9rzxk.js";
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  resolveFeedScopeOrFailureAsync
3
- } from "./packager-tool-jcmvg1c8.js";
4
- import"./packager-tool-kmp7pr6b.js";
5
- import"./packager-tool-cs7m7p4s.js";
3
+ } from "./packager-tool-9ha2z8h5.js";
4
+ import"./packager-tool-tgw5x6vx.js";
5
+ import"./packager-tool-83m6ns0r.js";
6
6
  import"./packager-tool-bqre28m1.js";
7
7
  import"./packager-tool-zdfn32bc.js";
8
8
  import"./packager-tool-f2e9rzxk.js";
package/dist/index.js CHANGED
@@ -2,23 +2,23 @@
2
2
  import {
3
3
  metadata,
4
4
  registerCommands
5
- } from "./packager-tool-1w8azcph.js";
5
+ } from "./packager-tool-yfpcvdpm.js";
6
6
  import"./packager-tool-v8bkkqdb.js";
7
- import"./packager-tool-jcmvg1c8.js";
8
- import"./packager-tool-bz0a3nar.js";
9
- import"./packager-tool-wfmk3vrp.js";
10
- import"./packager-tool-gyse32qf.js";
11
- import"./packager-tool-2tja89af.js";
7
+ import"./packager-tool-9ha2z8h5.js";
8
+ import"./packager-tool-a9jx8gf4.js";
9
+ import"./packager-tool-jq9zw82w.js";
10
+ import"./packager-tool-9qgmwy21.js";
11
+ import"./packager-tool-tv9c1e80.js";
12
12
  import"./packager-tool-px1j9kre.js";
13
- import"./packager-tool-gtq04gb8.js";
13
+ import"./packager-tool-fjsn5h8s.js";
14
14
  import"./packager-tool-gab9y5ct.js";
15
15
  import"./packager-tool-1rzssy0x.js";
16
16
  import"./packager-tool-e2rtr49j.js";
17
17
  import"./packager-tool-zns6n8zp.js";
18
- import"./packager-tool-e2ep9x52.js";
18
+ import"./packager-tool-ssq2kzqm.js";
19
19
  import"./packager-tool-7gr2nphb.js";
20
- import"./packager-tool-kmp7pr6b.js";
21
- import"./packager-tool-cs7m7p4s.js";
20
+ import"./packager-tool-tgw5x6vx.js";
21
+ import"./packager-tool-83m6ns0r.js";
22
22
  import"./packager-tool-bqre28m1.js";
23
23
  import"./packager-tool-yrz4mwfn.js";
24
24
  import"./packager-tool-gdtpsdn7.js";
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  getStudioWebSolutionProjects,
7
7
  listStudioWebSolutions
8
- } from "./packager-tool-cs7m7p4s.js";
8
+ } from "./packager-tool-83m6ns0r.js";
9
9
  import"./packager-tool-f2e9rzxk.js";
10
10
  import {
11
11
  DEFAULT_PAGE_SIZE,
package/dist/pack.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  packSolutionAsync
3
- } from "./packager-tool-gtq04gb8.js";
3
+ } from "./packager-tool-fjsn5h8s.js";
4
4
  import"./packager-tool-gab9y5ct.js";
5
5
  import"./packager-tool-1rzssy0x.js";
6
6
  import"./packager-tool-e2rtr49j.js";
@@ -2,12 +2,12 @@ import {
2
2
  INCOMPLETE_SWEEP_ADVICE,
3
3
  findDeploymentAcrossFeeds,
4
4
  reportIncompleteSweepAsync
5
- } from "./packager-tool-gyse32qf.js";
5
+ } from "./packager-tool-9qgmwy21.js";
6
6
  import {
7
7
  Configuration,
8
8
  DeploymentsApi,
9
9
  WorkflowAction
10
- } from "./packager-tool-cs7m7p4s.js";
10
+ } from "./packager-tool-83m6ns0r.js";
11
11
  import {
12
12
  getSolutionAuthContext
13
13
  } from "./packager-tool-f5gq77m5.js";
@@ -13,6 +13,270 @@ import {
13
13
  import {
14
14
  zipSync
15
15
  } from "./packager-tool-dfrk01gn.js";
16
+ import {
17
+ __commonJS,
18
+ __toESM
19
+ } from "./packager-tool-1de529jm.js";
20
+
21
+ // ../../node_modules/ignore/index.js
22
+ var require_ignore = __commonJS(function(exports, module) {
23
+ function makeArray(subject) {
24
+ return Array.isArray(subject) ? subject : [subject];
25
+ }
26
+ var EMPTY = "";
27
+ var SPACE = " ";
28
+ var ESCAPE = "\\";
29
+ var REGEX_TEST_BLANK_LINE = /^\s+$/;
30
+ var REGEX_INVALID_TRAILING_BACKSLASH = /(?:[^\\]|^)\\$/;
31
+ var REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION = /^\\!/;
32
+ var REGEX_REPLACE_LEADING_EXCAPED_HASH = /^\\#/;
33
+ var REGEX_SPLITALL_CRLF = /\r?\n/g;
34
+ var REGEX_TEST_INVALID_PATH = /^\.*\/|^\.+$/;
35
+ var SLASH = "/";
36
+ var TMP_KEY_IGNORE = "node-ignore";
37
+ if (typeof Symbol !== "undefined") {
38
+ TMP_KEY_IGNORE = Symbol.for("node-ignore");
39
+ }
40
+ var KEY_IGNORE = TMP_KEY_IGNORE;
41
+ var define = (object, key, value) => Object.defineProperty(object, key, { value });
42
+ var REGEX_REGEXP_RANGE = /([0-z])-([0-z])/g;
43
+ var RETURN_FALSE = () => false;
44
+ var sanitizeRange = (range) => range.replace(REGEX_REGEXP_RANGE, (match, from, to) => from.charCodeAt(0) <= to.charCodeAt(0) ? match : EMPTY);
45
+ var cleanRangeBackSlash = (slashes) => {
46
+ const { length } = slashes;
47
+ return slashes.slice(0, length - length % 2);
48
+ };
49
+ var REPLACERS = [
50
+ [
51
+ /^\uFEFF/,
52
+ () => EMPTY
53
+ ],
54
+ [
55
+ /((?:\\\\)*?)(\\?\s+)$/,
56
+ (_, m1, m2) => m1 + (m2.indexOf("\\") === 0 ? SPACE : EMPTY)
57
+ ],
58
+ [
59
+ /(\\+?)\s/g,
60
+ (_, m1) => {
61
+ const { length } = m1;
62
+ return m1.slice(0, length - length % 2) + SPACE;
63
+ }
64
+ ],
65
+ [
66
+ /[\\$.|*+(){^]/g,
67
+ (match) => `\\${match}`
68
+ ],
69
+ [
70
+ /(?!\\)\?/g,
71
+ () => "[^/]"
72
+ ],
73
+ [
74
+ /^\//,
75
+ () => "^"
76
+ ],
77
+ [
78
+ /\//g,
79
+ () => "\\/"
80
+ ],
81
+ [
82
+ /^\^*\\\*\\\*\\\//,
83
+ () => "^(?:.*\\/)?"
84
+ ],
85
+ [
86
+ /^(?=[^^])/,
87
+ function startingReplacer() {
88
+ return !/\/(?!$)/.test(this) ? "(?:^|\\/)" : "^";
89
+ }
90
+ ],
91
+ [
92
+ /\\\/\\\*\\\*(?=\\\/|$)/g,
93
+ (_, index, str) => index + 6 < str.length ? "(?:\\/[^\\/]+)*" : "\\/.+"
94
+ ],
95
+ [
96
+ /(^|[^\\]+)(\\\*)+(?=.+)/g,
97
+ (_, p1, p2) => {
98
+ const unescaped = p2.replace(/\\\*/g, "[^\\/]*");
99
+ return p1 + unescaped;
100
+ }
101
+ ],
102
+ [
103
+ /\\\\\\(?=[$.|*+(){^])/g,
104
+ () => ESCAPE
105
+ ],
106
+ [
107
+ /\\\\/g,
108
+ () => ESCAPE
109
+ ],
110
+ [
111
+ /(\\)?\[([^\]/]*?)(\\*)($|\])/g,
112
+ (match, leadEscape, range, endEscape, close) => leadEscape === ESCAPE ? `\\[${range}${cleanRangeBackSlash(endEscape)}${close}` : close === "]" ? endEscape.length % 2 === 0 ? `[${sanitizeRange(range)}${endEscape}]` : "[]" : "[]"
113
+ ],
114
+ [
115
+ /(?:[^*])$/,
116
+ (match) => /\/$/.test(match) ? `${match}$` : `${match}(?=$|\\/$)`
117
+ ],
118
+ [
119
+ /(\^|\\\/)?\\\*$/,
120
+ (_, p1) => {
121
+ const prefix = p1 ? `${p1}[^/]+` : "[^/]*";
122
+ return `${prefix}(?=$|\\/$)`;
123
+ }
124
+ ]
125
+ ];
126
+ var regexCache = Object.create(null);
127
+ var makeRegex = (pattern, ignoreCase) => {
128
+ let source = regexCache[pattern];
129
+ if (!source) {
130
+ source = REPLACERS.reduce((prev, [matcher, replacer]) => prev.replace(matcher, replacer.bind(pattern)), pattern);
131
+ regexCache[pattern] = source;
132
+ }
133
+ return ignoreCase ? new RegExp(source, "i") : new RegExp(source);
134
+ };
135
+ var isString = (subject) => typeof subject === "string";
136
+ var checkPattern = (pattern) => pattern && isString(pattern) && !REGEX_TEST_BLANK_LINE.test(pattern) && !REGEX_INVALID_TRAILING_BACKSLASH.test(pattern) && pattern.indexOf("#") !== 0;
137
+ var splitPattern = (pattern) => pattern.split(REGEX_SPLITALL_CRLF);
138
+
139
+ class IgnoreRule {
140
+ constructor(origin, pattern, negative, regex) {
141
+ this.origin = origin;
142
+ this.pattern = pattern;
143
+ this.negative = negative;
144
+ this.regex = regex;
145
+ }
146
+ }
147
+ var createRule = (pattern, ignoreCase) => {
148
+ const origin = pattern;
149
+ let negative = false;
150
+ if (pattern.indexOf("!") === 0) {
151
+ negative = true;
152
+ pattern = pattern.substr(1);
153
+ }
154
+ pattern = pattern.replace(REGEX_REPLACE_LEADING_EXCAPED_EXCLAMATION, "!").replace(REGEX_REPLACE_LEADING_EXCAPED_HASH, "#");
155
+ const regex = makeRegex(pattern, ignoreCase);
156
+ return new IgnoreRule(origin, pattern, negative, regex);
157
+ };
158
+ var throwError = (message, Ctor) => {
159
+ throw new Ctor(message);
160
+ };
161
+ var checkPath = (path, originalPath, doThrow) => {
162
+ if (!isString(path)) {
163
+ return doThrow(`path must be a string, but got \`${originalPath}\``, TypeError);
164
+ }
165
+ if (!path) {
166
+ return doThrow(`path must not be empty`, TypeError);
167
+ }
168
+ if (checkPath.isNotRelative(path)) {
169
+ const r = "`path.relative()`d";
170
+ return doThrow(`path should be a ${r} string, but got "${originalPath}"`, RangeError);
171
+ }
172
+ return true;
173
+ };
174
+ var isNotRelative = (path) => REGEX_TEST_INVALID_PATH.test(path);
175
+ checkPath.isNotRelative = isNotRelative;
176
+ checkPath.convert = (p) => p;
177
+
178
+ class Ignore {
179
+ constructor({
180
+ ignorecase = true,
181
+ ignoreCase = ignorecase,
182
+ allowRelativePaths = false
183
+ } = {}) {
184
+ define(this, KEY_IGNORE, true);
185
+ this._rules = [];
186
+ this._ignoreCase = ignoreCase;
187
+ this._allowRelativePaths = allowRelativePaths;
188
+ this._initCache();
189
+ }
190
+ _initCache() {
191
+ this._ignoreCache = Object.create(null);
192
+ this._testCache = Object.create(null);
193
+ }
194
+ _addPattern(pattern) {
195
+ if (pattern && pattern[KEY_IGNORE]) {
196
+ this._rules = this._rules.concat(pattern._rules);
197
+ this._added = true;
198
+ return;
199
+ }
200
+ if (checkPattern(pattern)) {
201
+ const rule = createRule(pattern, this._ignoreCase);
202
+ this._added = true;
203
+ this._rules.push(rule);
204
+ }
205
+ }
206
+ add(pattern) {
207
+ this._added = false;
208
+ makeArray(isString(pattern) ? splitPattern(pattern) : pattern).forEach(this._addPattern, this);
209
+ if (this._added) {
210
+ this._initCache();
211
+ }
212
+ return this;
213
+ }
214
+ addPattern(pattern) {
215
+ return this.add(pattern);
216
+ }
217
+ _testOne(path, checkUnignored) {
218
+ let ignored = false;
219
+ let unignored = false;
220
+ this._rules.forEach((rule) => {
221
+ const { negative } = rule;
222
+ if (unignored === negative && ignored !== unignored || negative && !ignored && !unignored && !checkUnignored) {
223
+ return;
224
+ }
225
+ const matched = rule.regex.test(path);
226
+ if (matched) {
227
+ ignored = !negative;
228
+ unignored = negative;
229
+ }
230
+ });
231
+ return {
232
+ ignored,
233
+ unignored
234
+ };
235
+ }
236
+ _test(originalPath, cache, checkUnignored, slices) {
237
+ const path = originalPath && checkPath.convert(originalPath);
238
+ checkPath(path, originalPath, this._allowRelativePaths ? RETURN_FALSE : throwError);
239
+ return this._t(path, cache, checkUnignored, slices);
240
+ }
241
+ _t(path, cache, checkUnignored, slices) {
242
+ if (path in cache) {
243
+ return cache[path];
244
+ }
245
+ if (!slices) {
246
+ slices = path.split(SLASH);
247
+ }
248
+ slices.pop();
249
+ if (!slices.length) {
250
+ return cache[path] = this._testOne(path, checkUnignored);
251
+ }
252
+ const parent = this._t(slices.join(SLASH) + SLASH, cache, checkUnignored, slices);
253
+ return cache[path] = parent.ignored ? parent : this._testOne(path, checkUnignored);
254
+ }
255
+ ignores(path) {
256
+ return this._test(path, this._ignoreCache, false).ignored;
257
+ }
258
+ createFilter() {
259
+ return (path) => !this.ignores(path);
260
+ }
261
+ filter(paths) {
262
+ return makeArray(paths).filter(this.createFilter());
263
+ }
264
+ test(path) {
265
+ return this._test(path, this._testCache, true);
266
+ }
267
+ }
268
+ var factory = (options) => new Ignore(options);
269
+ var isPathValid = (path) => checkPath(path && checkPath.convert(path), path, RETURN_FALSE);
270
+ factory.isPathValid = isPathValid;
271
+ factory.default = factory;
272
+ module.exports = factory;
273
+ if (typeof process !== "undefined" && (process.env && process.env.IGNORE_TEST_WIN32 || process.platform === "win32")) {
274
+ const makePosix = (str) => /^\\\\\?\\/.test(str) || /["<>|\u0000-\u001F]+/u.test(str) ? str : str.replace(/\\/g, "/");
275
+ checkPath.convert = makePosix;
276
+ const REGIX_IS_WINDOWS_PATH_ABSOLUTE = /^[a-z]:\//i;
277
+ checkPath.isNotRelative = (path) => REGIX_IS_WINDOWS_PATH_ABSOLUTE.test(path) || isNotRelative(path);
278
+ }
279
+ });
16
280
 
17
281
  // ../solution-sdk/generated/src/runtime.ts
18
282
  var BASE_PATH = "https://alpha.uipath.com/uipattycyrhx/abizon_1/automationsolutions_".replace(/\/+$/, "");
@@ -1039,7 +1303,7 @@ var package_default = {
1039
1303
  name: "@uipath/solution-sdk",
1040
1304
  author: "UiPath",
1041
1305
  license: "SEE LICENSE IN LICENSE.txt",
1042
- version: "1.204.0-preview.250",
1306
+ version: "1.204.0-preview.255",
1043
1307
  repository: {
1044
1308
  type: "git",
1045
1309
  url: "https://github.com/UiPath/cli.git",
@@ -1095,6 +1359,7 @@ var package_default = {
1095
1359
  "@uipath/studioweb-sdk": "workspace:*",
1096
1360
  "@types/node": "^25.5.2",
1097
1361
  fflate: "^0.8.2",
1362
+ ignore: "^5.3.2",
1098
1363
  typescript: "^7.0.2"
1099
1364
  }
1100
1365
  };
@@ -2523,6 +2788,7 @@ function assertStudioWebCompatibleProjects(projects) {
2523
2788
  }
2524
2789
 
2525
2790
  // ../solution-sdk/src/zip-utils.ts
2791
+ var import_ignore = __toESM(require_ignore(), 1);
2526
2792
  var DEFAULT_EXCLUDED_DIR_NAMES = new Set([
2527
2793
  ".venv",
2528
2794
  "node_modules",
@@ -2544,18 +2810,31 @@ function isDefaultExcludedFileName(name) {
2544
2810
  }
2545
2811
  var UIPIGNORE_FILENAME = ".uipignore";
2546
2812
  function parseUipignore(body) {
2547
- const names = new Set;
2548
- for (const rawLine of body.split(/\r?\n/)) {
2549
- const line = rawLine.split("#")[0]?.trim();
2550
- if (!line) {
2813
+ return body.split(/\r?\n/).filter((line) => line.trim() !== "" && !line.startsWith("#"));
2814
+ }
2815
+ function createUipignoreRules(baseDir, patterns) {
2816
+ const matcher = import_ignore.default().add([...patterns]);
2817
+ return {
2818
+ baseDir,
2819
+ patterns,
2820
+ ignores: (relativePath) => matcher.ignores(relativePath)
2821
+ };
2822
+ }
2823
+ var UNMATCHABLE_RELATIVE_PATH = /^\.+$|^\.*\//;
2824
+ function isIgnoredByRules(fs, rules, fullPath, isDirectory) {
2825
+ if (!rules) {
2826
+ return false;
2827
+ }
2828
+ for (const rule of rules) {
2829
+ const rel = fs.path.relative(rule.baseDir, fullPath).replace(/\\/g, "/");
2830
+ if (!rel || UNMATCHABLE_RELATIVE_PATH.test(rel) || fs.path.isAbsolute(rel)) {
2551
2831
  continue;
2552
2832
  }
2553
- if (line.includes("/") || line.includes("\\")) {
2554
- continue;
2833
+ if (rule.ignores(isDirectory ? `${rel}/` : rel)) {
2834
+ return true;
2555
2835
  }
2556
- names.add(line);
2557
2836
  }
2558
- return names;
2837
+ return false;
2559
2838
  }
2560
2839
  async function collectTree(fs, dir, options = {}) {
2561
2840
  const files = [];
@@ -2578,12 +2857,12 @@ async function collectTree(fs, dir, options = {}) {
2578
2857
  const fullPath = fs.path.join(current, entryName);
2579
2858
  const entryStat = await fs.stat(fullPath);
2580
2859
  if (entryStat?.isDirectory()) {
2581
- if (excluded.has(entryName)) {
2860
+ if (excluded.has(entryName) || isIgnoredByRules(fs, options.ignoreRules, fullPath, true)) {
2582
2861
  continue;
2583
2862
  }
2584
2863
  await walk(fullPath, false);
2585
2864
  } else if (entryStat?.isFile()) {
2586
- if (isDefaultExcludedFileName(entryName)) {
2865
+ if (isDefaultExcludedFileName(entryName) || isIgnoredByRules(fs, options.ignoreRules, fullPath, false)) {
2587
2866
  continue;
2588
2867
  }
2589
2868
  files.push(fullPath);
@@ -2683,38 +2962,43 @@ function countCentralDirectoryEntries(view, cdOffset, cdSize) {
2683
2962
  }
2684
2963
 
2685
2964
  // ../solution-sdk/src/bundle-service.ts
2965
+ class UipignoreExcludesProjectError extends Error {
2966
+ projectManifestPath;
2967
+ constructor(projectManifestPath) {
2968
+ super(`${UIPIGNORE_FILENAME} excludes ${projectManifestPath}, which the solution references. A project listed in the .uipx cannot be left out of the bundle.`);
2969
+ this.projectManifestPath = projectManifestPath;
2970
+ this.name = "UipignoreExcludesProjectError";
2971
+ }
2972
+ }
2686
2973
  async function readUipignore(fs, dir) {
2687
2974
  const ignorePath = fs.path.join(dir, UIPIGNORE_FILENAME);
2688
2975
  if (!await fs.exists(ignorePath)) {
2689
- return new Set;
2976
+ return;
2690
2977
  }
2691
2978
  try {
2692
2979
  const body = await fs.readFile(ignorePath, "utf-8");
2693
- if (!body) {
2694
- return new Set;
2980
+ const patterns = body ? parseUipignore(body) : [];
2981
+ if (patterns.length === 0) {
2982
+ return;
2695
2983
  }
2696
- return parseUipignore(body);
2984
+ return createUipignoreRules(dir, patterns);
2697
2985
  } catch (err) {
2698
2986
  logger.warn(`Could not read ${UIPIGNORE_FILENAME}; ignoring it: ${String(err)}`);
2699
- return new Set;
2987
+ return;
2700
2988
  }
2701
2989
  }
2702
- async function mergeProjectUipignore(fs, projectPath, projectLabel, solutionExcludeDirs) {
2703
- const projectExtra = await readUipignore(fs, projectPath);
2704
- if (projectExtra.size === 0) {
2705
- return solutionExcludeDirs;
2990
+ async function mergeProjectUipignore(fs, projectPath, projectLabel, solutionRules) {
2991
+ const projectRules = await readUipignore(fs, projectPath);
2992
+ if (!projectRules) {
2993
+ return solutionRules;
2706
2994
  }
2707
- const merged = new Set(solutionExcludeDirs);
2708
- for (const name of projectExtra) {
2709
- merged.add(name);
2710
- }
2711
- logger.info(`[${projectLabel}] Applying ${projectExtra.size} extra exclude(s) from project ${UIPIGNORE_FILENAME}: ${[...projectExtra].join(", ")}`);
2712
- return merged;
2995
+ logger.info(`[${projectLabel}] Applying ${projectRules.patterns.length} extra exclude(s) from project ${UIPIGNORE_FILENAME}: ${projectRules.patterns.join(", ")}`);
2996
+ return [...solutionRules, projectRules];
2713
2997
  }
2714
2998
  var toForwardSlash = (p) => p.replace(/\\/g, "/");
2715
- async function mirrorTree(fs, srcDir, relativeBase, destBaseDir, additionalExcludeDirs) {
2999
+ async function mirrorTree(fs, srcDir, relativeBase, destBaseDir, ignoreRules) {
2716
3000
  const { files, emptyDirs } = await collectTree(fs, srcDir, {
2717
- additionalExcludeDirs
3001
+ ignoreRules
2718
3002
  });
2719
3003
  if (files.length === 0 && emptyDirs.length === 0) {
2720
3004
  const rootRel = fs.path.relative(relativeBase, srcDir);
@@ -2741,14 +3025,8 @@ async function mirrorTree(fs, srcDir, relativeBase, destBaseDir, additionalExclu
2741
3025
  await fs.mkdir(fs.path.join(destBaseDir, relPath));
2742
3026
  }
2743
3027
  }
2744
- async function flattenProjectDir(fs, srcProjectDir, destProjectDir, additionalExcludeDirs) {
3028
+ async function flattenProjectDir(fs, srcProjectDir, destProjectDir, ignoreRules) {
2745
3029
  await fs.mkdir(destProjectDir);
2746
- const topLevelExclude = new Set(DEFAULT_EXCLUDED_DIR_NAMES);
2747
- if (additionalExcludeDirs) {
2748
- for (const name of additionalExcludeDirs) {
2749
- topLevelExclude.add(name);
2750
- }
2751
- }
2752
3030
  const entries = await fs.readdir(srcProjectDir);
2753
3031
  for (const entryName of entries) {
2754
3032
  const srcPath = fs.path.join(srcProjectDir, entryName);
@@ -2757,7 +3035,7 @@ async function flattenProjectDir(fs, srcProjectDir, destProjectDir, additionalEx
2757
3035
  continue;
2758
3036
  }
2759
3037
  if (entryStat.isFile()) {
2760
- if (isDefaultExcludedFileName(entryName)) {
3038
+ if (isDefaultExcludedFileName(entryName) || isIgnoredByRules(fs, ignoreRules, srcPath, false)) {
2761
3039
  continue;
2762
3040
  }
2763
3041
  const data = await fs.readFile(srcPath);
@@ -2765,13 +3043,13 @@ async function flattenProjectDir(fs, srcProjectDir, destProjectDir, additionalEx
2765
3043
  await fs.writeFile(fs.path.join(destProjectDir, entryName), data);
2766
3044
  }
2767
3045
  } else if (entryStat.isDirectory()) {
2768
- if (topLevelExclude.has(entryName)) {
3046
+ if (DEFAULT_EXCLUDED_DIR_NAMES.has(entryName) || isIgnoredByRules(fs, ignoreRules, srcPath, true)) {
2769
3047
  continue;
2770
3048
  }
2771
3049
  if (entryName === "content" || entryName === "flow_files") {
2772
- await mirrorTree(fs, srcPath, srcPath, destProjectDir, additionalExcludeDirs);
3050
+ await mirrorTree(fs, srcPath, srcPath, destProjectDir, ignoreRules);
2773
3051
  } else {
2774
- await mirrorTree(fs, srcPath, srcProjectDir, destProjectDir, additionalExcludeDirs);
3052
+ await mirrorTree(fs, srcPath, srcProjectDir, destProjectDir, ignoreRules);
2775
3053
  }
2776
3054
  }
2777
3055
  }
@@ -2786,14 +3064,12 @@ async function bundleSolution(fs, solutionDir, outputDir, outputName) {
2786
3064
  throw new Error(`Not a directory: ${resolvedPath}. Provide the solution directory containing a .uipx file.`);
2787
3065
  }
2788
3066
  const { uipx, uipxFileName } = await readUipxFile(fs, resolvedPath);
2789
- const additionalExcludeDirs = await readUipignore(fs, resolvedPath);
2790
- if (additionalExcludeDirs.size > 0) {
2791
- logger.info(`Applying ${additionalExcludeDirs.size} extra exclude(s) from .uipignore: ${[...additionalExcludeDirs].join(", ")}`);
2792
- }
2793
- const effectiveExclude = new Set(DEFAULT_EXCLUDED_DIR_NAMES);
2794
- for (const name of additionalExcludeDirs) {
2795
- effectiveExclude.add(name);
3067
+ const solutionUipignore = await readUipignore(fs, resolvedPath);
3068
+ const solutionRules = solutionUipignore ? [solutionUipignore] : [];
3069
+ if (solutionUipignore) {
3070
+ logger.info(`Applying ${solutionUipignore.patterns.length} extra exclude(s) from ${UIPIGNORE_FILENAME}: ${solutionUipignore.patterns.join(", ")}`);
2796
3071
  }
3072
+ const isTopLevelTreeExcluded = (treePath, name) => DEFAULT_EXCLUDED_DIR_NAMES.has(name) || isIgnoredByRules(fs, solutionRules, treePath, true);
2797
3073
  for (const project of uipx.Projects) {
2798
3074
  project.ProjectRelativePath = toForwardSlash(project.ProjectRelativePath);
2799
3075
  }
@@ -2818,16 +3094,20 @@ async function bundleSolution(fs, solutionDir, outputDir, outputName) {
2818
3094
  if (!projectStat) {
2819
3095
  throw new Error(`Project directory not found: ${srcProjectPath}`);
2820
3096
  }
2821
- const projectExcludeDirs = await mergeProjectUipignore(fs, srcProjectPath, projectDir, additionalExcludeDirs);
2822
- await flattenProjectDir(fs, srcProjectPath, fs.path.join(stagingDir, projectDir), projectExcludeDirs);
3097
+ const projectRules = await mergeProjectUipignore(fs, srcProjectPath, projectDir, solutionRules);
3098
+ const manifestPath = fs.path.join(resolvedPath, project.ProjectRelativePath);
3099
+ if (isIgnoredByRules(fs, projectRules, manifestPath, false)) {
3100
+ throw new UipignoreExcludesProjectError(project.ProjectRelativePath);
3101
+ }
3102
+ await flattenProjectDir(fs, srcProjectPath, fs.path.join(stagingDir, projectDir), projectRules);
2823
3103
  }
2824
3104
  const resourcesPath = fs.path.join(resolvedPath, "resources");
2825
- if (!effectiveExclude.has("resources") && await fs.exists(resourcesPath)) {
2826
- await mirrorTree(fs, resourcesPath, resolvedPath, stagingDir, additionalExcludeDirs);
3105
+ if (!isTopLevelTreeExcluded(resourcesPath, "resources") && await fs.exists(resourcesPath)) {
3106
+ await mirrorTree(fs, resourcesPath, resolvedPath, stagingDir, solutionRules);
2827
3107
  }
2828
3108
  const userProfilePath = fs.path.join(resolvedPath, "userProfile");
2829
- if (!effectiveExclude.has("userProfile") && await fs.exists(userProfilePath)) {
2830
- await mirrorTree(fs, userProfilePath, resolvedPath, stagingDir, additionalExcludeDirs);
3109
+ if (!isTopLevelTreeExcluded(userProfilePath, "userProfile") && await fs.exists(userProfilePath)) {
3110
+ await mirrorTree(fs, userProfilePath, resolvedPath, stagingDir, solutionRules);
2831
3111
  }
2832
3112
  const resolvedOutputDir = fs.path.resolve(outputDir);
2833
3113
  if (!await fs.exists(resolvedOutputDir)) {
@@ -3172,6 +3452,6 @@ async function overwriteSolution(config, organizationName, fileBuffer, fileName,
3172
3452
  }
3173
3453
  return await response.json();
3174
3454
  }
3175
- export { Configuration, getAvailablePublishLocationsV2, DeploymentActivationStatus, WorkflowAction, DeploymentOperationStatus, DeploymentSearchItemDto2FromJSON, SolutionDeploymentAction, DeploymentsApi, SearchApi, StudioWebIncompatibleProjectError, bundleSolution, isDebugProvisioningTerminal, isDebugProvisioningSucceeded, getProjectDebugStatus, getStudioWebSolutionProjects, listStudioWebSolutions, isSolutionUploadHttpError, buildSolutionUploadFailureOutput, solutionExistsOnStudioWeb, importSolution, overwriteSolution };
3455
+ export { Configuration, getAvailablePublishLocationsV2, DeploymentActivationStatus, WorkflowAction, DeploymentOperationStatus, DeploymentSearchItemDto2FromJSON, SolutionDeploymentAction, DeploymentsApi, SearchApi, StudioWebIncompatibleProjectError, UipignoreExcludesProjectError, bundleSolution, isDebugProvisioningTerminal, isDebugProvisioningSucceeded, getProjectDebugStatus, getStudioWebSolutionProjects, listStudioWebSolutions, isSolutionUploadHttpError, buildSolutionUploadFailureOutput, solutionExistsOnStudioWeb, importSolution, overwriteSolution };
3176
3456
 
3177
- //# debugId=148F89DCC2EBFA3B64756E2164756E21
3457
+ //# debugId=34A03F053351819E64756E2164756E21
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  describeFeedResolutionFailureAsync,
3
3
  resolveFeedScope
4
- } from "./packager-tool-kmp7pr6b.js";
4
+ } from "./packager-tool-tgw5x6vx.js";
5
5
  import {
6
6
  RESULTS,
7
7
  catchError
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  findDeploymentByName,
3
3
  findLiveDeploymentByName
4
- } from "./packager-tool-2tja89af.js";
4
+ } from "./packager-tool-tv9c1e80.js";
5
5
  import {
6
6
  folderKeyInitOverride,
7
7
  listSelectablePublishLocations,
8
8
  resolvePersonalWorkspace
9
- } from "./packager-tool-kmp7pr6b.js";
9
+ } from "./packager-tool-tgw5x6vx.js";
10
10
  import {
11
11
  catchError,
12
12
  extractErrorDetails
@@ -4,14 +4,14 @@ import {
4
4
  explainRefusal,
5
5
  needsPendingResources,
6
6
  readPendingResourcesAsync
7
- } from "./packager-tool-wfmk3vrp.js";
7
+ } from "./packager-tool-jq9zw82w.js";
8
8
  import {
9
9
  INCOMPLETE_SWEEP_ADVICE,
10
10
  findDeploymentAcrossFeeds,
11
11
  isNameOrFeedRefusal,
12
12
  reportIncompleteSweepAsync,
13
13
  retryAdvice
14
- } from "./packager-tool-gyse32qf.js";
14
+ } from "./packager-tool-9qgmwy21.js";
15
15
  import {
16
16
  DeploymentSearchNeedsUserSessionError,
17
17
  MAX_LISTED_DEPLOYMENTS,
@@ -30,7 +30,7 @@ import {
30
30
  newestDeploymentRow,
31
31
  resolveInstalledFolder,
32
32
  searchDeploymentsPage
33
- } from "./packager-tool-2tja89af.js";
33
+ } from "./packager-tool-tv9c1e80.js";
34
34
  import {
35
35
  Configuration as Configuration2,
36
36
  DeploymentOperation,
@@ -44,14 +44,14 @@ import {
44
44
  folderKeyInitOverride,
45
45
  resolveFeedScope,
46
46
  resolvePersonalWorkspace
47
- } from "./packager-tool-kmp7pr6b.js";
47
+ } from "./packager-tool-tgw5x6vx.js";
48
48
  import {
49
49
  Configuration,
50
50
  DeploymentsApi,
51
51
  SearchApi,
52
52
  SolutionDeploymentAction,
53
53
  WorkflowAction
54
- } from "./packager-tool-cs7m7p4s.js";
54
+ } from "./packager-tool-83m6ns0r.js";
55
55
  import {
56
56
  classifyFeedSession,
57
57
  feedReadRefusalForApplication,
@@ -3499,7 +3499,7 @@ var package_default = {
3499
3499
  name: "@uipath/project-packager",
3500
3500
  author: "UiPath",
3501
3501
  license: "SEE LICENSE IN LICENSE.txt",
3502
- version: "1.204.0-preview.250",
3502
+ version: "1.204.0-preview.255",
3503
3503
  description: "UiPath Project Packager - core library for packing individual UiPath projects",
3504
3504
  type: "module",
3505
3505
  main: "./dist/index.js",
@@ -5887,4 +5887,4 @@ async function packSolutionAsync(solutionPath, options) {
5887
5887
 
5888
5888
  export { SolutionPackOptions, createSolutionPackager, readSolutionFileAsUint8Array, resolveSdkLogLevel, applyAuthConnection, SOLUTION_PATH_INSTRUCTIONS, checkSolutionPathAsync, GOVERNANCE_OPTION_INSTRUCTIONS, validateGovernanceOptions, PackCommandService, packSolutionAsync };
5889
5889
 
5890
- //# debugId=251AFF7337D01FFE64756E2164756E21
5890
+ //# debugId=1B2CC479B2D876BD64756E2164756E21
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SolutionDeploymentAction
3
- } from "./packager-tool-cs7m7p4s.js";
3
+ } from "./packager-tool-83m6ns0r.js";
4
4
  import {
5
5
  catchError
6
6
  } from "./packager-tool-kswwd3hp.js";
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  feedScopeInitOverride,
7
7
  resolveFeedScope
8
- } from "./packager-tool-kmp7pr6b.js";
8
+ } from "./packager-tool-tgw5x6vx.js";
9
9
  import {
10
10
  getSolutionAuthContext
11
11
  } from "./packager-tool-f5gq77m5.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getAvailablePublishLocationsV2
3
- } from "./packager-tool-cs7m7p4s.js";
3
+ } from "./packager-tool-83m6ns0r.js";
4
4
  import {
5
5
  classifyFeedSession
6
6
  } from "./packager-tool-bqre28m1.js";
@@ -6,7 +6,7 @@ import {
6
6
  Configuration,
7
7
  DeploymentSearchItemDto2FromJSON,
8
8
  SearchApi
9
- } from "./packager-tool-cs7m7p4s.js";
9
+ } from "./packager-tool-83m6ns0r.js";
10
10
  import {
11
11
  classifyFeedSession
12
12
  } from "./packager-tool-bqre28m1.js";
@@ -4,7 +4,7 @@ import {
4
4
  } from "./packager-tool-v8bkkqdb.js";
5
5
  import {
6
6
  resolveFeedScopeOrFailureAsync
7
- } from "./packager-tool-jcmvg1c8.js";
7
+ } from "./packager-tool-9ha2z8h5.js";
8
8
  import {
9
9
  activateDeploymentAsync,
10
10
  deployRunAsync,
@@ -14,7 +14,7 @@ import {
14
14
  listPackagesAsync,
15
15
  uninstallDeploymentAsync,
16
16
  upgradeDeploymentAsync
17
- } from "./packager-tool-bz0a3nar.js";
17
+ } from "./packager-tool-a9jx8gf4.js";
18
18
  import {
19
19
  SolutionInitError,
20
20
  solutionInitAsync
@@ -31,7 +31,7 @@ import {
31
31
  readSolutionFileAsUint8Array,
32
32
  resolveSdkLogLevel,
33
33
  validateGovernanceOptions
34
- } from "./packager-tool-gtq04gb8.js";
34
+ } from "./packager-tool-fjsn5h8s.js";
35
35
  import {
36
36
  prepareSolutionResources
37
37
  } from "./packager-tool-gab9y5ct.js";
@@ -42,7 +42,7 @@ import {
42
42
  } from "./packager-tool-e2rtr49j.js";
43
43
  import {
44
44
  publishSolutionAsync
45
- } from "./packager-tool-e2ep9x52.js";
45
+ } from "./packager-tool-ssq2kzqm.js";
46
46
  import {
47
47
  Configuration,
48
48
  PipelinesApi
@@ -50,11 +50,12 @@ import {
50
50
  import {
51
51
  feedScopeInitOverride,
52
52
  listSelectablePublishLocations
53
- } from "./packager-tool-kmp7pr6b.js";
53
+ } from "./packager-tool-tgw5x6vx.js";
54
54
  import {
55
55
  DeploymentActivationStatus,
56
56
  DeploymentOperationStatus,
57
57
  StudioWebIncompatibleProjectError,
58
+ UipignoreExcludesProjectError,
58
59
  buildSolutionUploadFailureOutput,
59
60
  bundleSolution,
60
61
  getProjectDebugStatus,
@@ -64,7 +65,7 @@ import {
64
65
  isSolutionUploadHttpError,
65
66
  overwriteSolution,
66
67
  solutionExistsOnStudioWeb
67
- } from "./packager-tool-cs7m7p4s.js";
68
+ } from "./packager-tool-83m6ns0r.js";
68
69
  import {
69
70
  applyEntryPointEnhancementAsync,
70
71
  assertSolutionManifest,
@@ -165,7 +166,7 @@ var package_default = {
165
166
  name: "@uipath/solution-tool",
166
167
  author: "UiPath",
167
168
  license: "SEE LICENSE IN LICENSE.txt",
168
- version: "1.204.0-preview.250",
169
+ version: "1.204.0-preview.255",
169
170
  description: "Create, pack, publish, and deploy UiPath Automation Solutions.",
170
171
  repository: {
171
172
  type: "git",
@@ -1052,7 +1053,7 @@ var registerDeployDeleteCommand = (program) => {
1052
1053
  if (!requireConfirmation(options, `delete deployment '${deploymentName}'`)) {
1053
1054
  return;
1054
1055
  }
1055
- const { deleteDeploymentAsync } = await import("./deploy-delete-service-nnmz7drx.js");
1056
+ const { deleteDeploymentAsync } = await import("./deploy-delete-service-w3e8x1kq.js");
1056
1057
  const result = await deleteDeploymentAsync(deploymentName, {
1057
1058
  tenant: options.tenant,
1058
1059
  loginValidity: options.loginValidity
@@ -1580,7 +1581,7 @@ var registerDeployStatusCommand = (program) => {
1580
1581
  processContext.exit(1);
1581
1582
  return;
1582
1583
  }
1583
- const { feedScopeInitOverride: feedScopeInitOverride2 } = await import("./feed-resolver-6k5kg0mc.js");
1584
+ const { feedScopeInitOverride: feedScopeInitOverride2 } = await import("./feed-resolver-xz3akamf.js");
1584
1585
  const { FeedReadRefusedError, feedReadRefusalForApplication } = await import("./feed-session-sxga31vn.js");
1585
1586
  const refuseFeed = (action) => {
1586
1587
  const refusal = feedReadRefusalForApplication(auth, action);
@@ -1600,14 +1601,14 @@ var registerDeployStatusCommand = (program) => {
1600
1601
  if (options.personalWorkspace === true && refuseFeed("Reading a Personal Workspace deployment")) {
1601
1602
  return;
1602
1603
  }
1603
- const { resolveFeedScopeOrFailureAsync: resolveFeedScopeOrFailureAsync2 } = await import("./feed-scope-failure-yajs7f63.js");
1604
+ const { resolveFeedScopeOrFailureAsync: resolveFeedScopeOrFailureAsync2 } = await import("./feed-scope-failure-0j5byccb.js");
1604
1605
  const [scopeFailure, feedScope] = await resolveFeedScopeOrFailureAsync2(options, auth);
1605
1606
  if (scopeFailure) {
1606
1607
  OutputFormatter.error(scopeFailure);
1607
1608
  processContext.exit(1);
1608
1609
  return;
1609
1610
  }
1610
- const { describeDeploymentAsync, looksLikeDeploymentKey } = await import("./deploy-status-service-w27q7y6y.js");
1611
+ const { describeDeploymentAsync, looksLikeDeploymentKey } = await import("./deploy-status-service-6svq7c6w.js");
1611
1612
  if (feedScope.kind !== "tenant" && !looksLikeDeploymentKey(deployment) && refuseFeed(`Reading a deployment in the feed '${feedScope.name ?? feedScope.folderKey}'`)) {
1612
1613
  return;
1613
1614
  }
@@ -1648,7 +1649,7 @@ var registerDeployStatusCommand = (program) => {
1648
1649
  const api = new PipelinesApi(configuration);
1649
1650
  const [statusError, result] = await catchError(api.pipelinesGetPipelineDeploymentStatus({ pipelineDeploymentId: deployment }, feedSelected ? feedScopeInitOverride2(feedScope) : undefined));
1650
1651
  if (statusError) {
1651
- const { isPipelineDeploymentNotFoundError } = await import("./deployment-search-9q8njj3v.js");
1652
+ const { isPipelineDeploymentNotFoundError } = await import("./deployment-search-v2qtz23x.js");
1652
1653
  if (await isPipelineDeploymentNotFoundError(statusError)) {
1653
1654
  const [stateError, state] = await catchError(describe());
1654
1655
  if (stateError instanceof FeedReadRefusedError) {
@@ -6577,6 +6578,16 @@ var registerUploadCommand = (program) => {
6577
6578
  processContext.exit(1);
6578
6579
  return;
6579
6580
  }
6581
+ if (bundleError instanceof UipignoreExcludesProjectError) {
6582
+ OutputFormatter.error({
6583
+ Result: RESULTS.Failure,
6584
+ ErrorCode: "invalid_argument",
6585
+ Message: bundleError.message,
6586
+ Instructions: "Remove or narrow the .uipignore pattern that matches the project (check the solution-root and the project's own .uipignore), or take the project out of the solution with 'uip solution projects remove' before uploading."
6587
+ });
6588
+ processContext.exit(1);
6589
+ return;
6590
+ }
6580
6591
  outputError(bundleError.message);
6581
6592
  return;
6582
6593
  }
@@ -6771,7 +6782,7 @@ var registerCommands = async (program) => {
6771
6782
  registerResourceCommand(program);
6772
6783
  registerDeleteCommand(program);
6773
6784
  if (isPreviewBuild()) {
6774
- const { registerListCommand } = await import("./list-fejfazxk.js");
6785
+ const { registerListCommand } = await import("./list-tjetkspc.js");
6775
6786
  registerListCommand(program);
6776
6787
  }
6777
6788
  registerFeedsCommand(program);
@@ -6779,4 +6790,4 @@ var registerCommands = async (program) => {
6779
6790
 
6780
6791
  export { metadata, registerCommands };
6781
6792
 
6782
- //# debugId=E137BBDCE1AE9EE764756E2164756E21
6793
+ //# debugId=AAF2A540AE3DD97864756E2164756E21
package/dist/publish.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  publishSolutionAsync
3
- } from "./packager-tool-e2ep9x52.js";
3
+ } from "./packager-tool-ssq2kzqm.js";
4
4
  import"./packager-tool-7gr2nphb.js";
5
- import"./packager-tool-kmp7pr6b.js";
6
- import"./packager-tool-cs7m7p4s.js";
5
+ import"./packager-tool-tgw5x6vx.js";
6
+ import"./packager-tool-83m6ns0r.js";
7
7
  import"./packager-tool-bqre28m1.js";
8
8
  import"./packager-tool-f5gq77m5.js";
9
9
  import"./packager-tool-zdfn32bc.js";
@@ -317,6 +317,8 @@ uip solution delete <solution-id> --yes # remove a solution from Studio Web (
317
317
 
318
318
  `Data.Action` is `Imported` or `Overwritten`, so you can tell which ran. `--force` skips the existence check and overwrites directly; it is not normally needed, it fails rather than importing if that solution is gone, and it has no effect when no `SolutionId` is bundled (the upload imports as new). To upload a copy as an unrelated cloud solution instead of updating, scaffold a fresh solution with `uip solution init`, or replace the `SolutionId` in the local `.uipx` with a fresh GUID and re-run upload (removing the field entirely fails `.uipx` validation).
319
319
 
320
+ The bundle `upload` sends leaves out `.venv`, `node_modules`, `__pycache__`, `.git`, `.local` and `.flow-sdk` folders and `.env` / `.env.*` files on its own. To leave more out, add a `.uipignore` file at the solution root (or inside a project, where its patterns apply to that project only) using `.gitignore` syntax — `dist/`, `*.log`, `!keep.log`, `MyAgent/generated/`; a line-leading `#` is a comment. A pattern that would drop a project the `.uipx` lists is refused — remove the project with `uip solution projects remove` instead. `uip codedapp push` honors the same file (its older `.uipathignore` is deprecated — use `.uipignore`). `solution pack` does not read it.
321
+
320
322
  If Studio Web refuses the upload with 401 or 403, do **not** re-run `uip login` — the CLI checks the session and its token expiry before it calls, so the token was valid and re-authenticating produces the same one. The failure is about what the acting identity may do in Studio Web (for a CI pipeline: the external application's `StudioWebS2S` grants) or about the tenant the bundled `SolutionId` belongs to. The envelope's `Instructions` name both, and an application 401 is reported as `ErrorCode: permission_denied` rather than `authentication_required`.
321
323
 
322
324
  `download` writes the `.uis` archive and nothing else — extraction is opt-in. Pass `--extract` to also unzip it into a sibling directory named after the archive; that directory is a working solution tree, with the `.uipx` manifest at its root. `--extract` also drops `AGENTS.md` and `CLAUDE.md` there so an agent picking the solution up has the same briefing `uip solution init` writes. It only fills gaps: a file the archive already carried is left alone, and the paths actually written come back in `Data.BriefingFiles`. Without `--extract` you get the zip only, and no briefing files — there is no solution directory to put them in.
package/dist/tool.js CHANGED
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  metadata,
3
3
  registerCommands
4
- } from "./packager-tool-1w8azcph.js";
4
+ } from "./packager-tool-yfpcvdpm.js";
5
5
  import"./packager-tool-v8bkkqdb.js";
6
- import"./packager-tool-jcmvg1c8.js";
7
- import"./packager-tool-bz0a3nar.js";
8
- import"./packager-tool-wfmk3vrp.js";
9
- import"./packager-tool-gyse32qf.js";
10
- import"./packager-tool-2tja89af.js";
6
+ import"./packager-tool-9ha2z8h5.js";
7
+ import"./packager-tool-a9jx8gf4.js";
8
+ import"./packager-tool-jq9zw82w.js";
9
+ import"./packager-tool-9qgmwy21.js";
10
+ import"./packager-tool-tv9c1e80.js";
11
11
  import"./packager-tool-px1j9kre.js";
12
- import"./packager-tool-gtq04gb8.js";
12
+ import"./packager-tool-fjsn5h8s.js";
13
13
  import"./packager-tool-gab9y5ct.js";
14
14
  import"./packager-tool-1rzssy0x.js";
15
15
  import"./packager-tool-e2rtr49j.js";
16
16
  import"./packager-tool-zns6n8zp.js";
17
- import"./packager-tool-e2ep9x52.js";
17
+ import"./packager-tool-ssq2kzqm.js";
18
18
  import"./packager-tool-7gr2nphb.js";
19
- import"./packager-tool-kmp7pr6b.js";
20
- import"./packager-tool-cs7m7p4s.js";
19
+ import"./packager-tool-tgw5x6vx.js";
20
+ import"./packager-tool-83m6ns0r.js";
21
21
  import"./packager-tool-bqre28m1.js";
22
22
  import"./packager-tool-yrz4mwfn.js";
23
23
  import"./packager-tool-gdtpsdn7.js";
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@uipath/solution-tool",
3
3
  "author": "UiPath",
4
4
  "license": "SEE LICENSE IN LICENSE.txt",
5
- "version": "1.204.0-preview.250",
5
+ "version": "1.204.0-preview.255",
6
6
  "description": "Create, pack, publish, and deploy UiPath Automation Solutions.",
7
7
  "repository": {
8
8
  "type": "git",
@@ -48,5 +48,5 @@
48
48
  "dist"
49
49
  ],
50
50
  "private": false,
51
- "gitHead": "80ffb08b3e58d7ca233b16fae8521163b1dcd635"
51
+ "gitHead": "699c58dabb59414557755a8933bcbe40aa420df3"
52
52
  }