@uipath/project-packager 1.1.15 → 1.196.0

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 (41) hide show
  1. package/dist/browser.js +2380 -0
  2. package/dist/index.js +1226 -89
  3. package/dist/node.js +1160 -75
  4. package/dist/src/base-browser-packager-factory.d.ts +37 -0
  5. package/dist/src/base-node-packager-factory.d.ts +8 -1
  6. package/dist/src/browser-project-packager-factory.d.ts +26 -0
  7. package/dist/src/browser.d.ts +3 -0
  8. package/dist/src/i18n/locales/en.d.ts +30 -1
  9. package/dist/src/index.d.ts +4 -0
  10. package/dist/src/models/project-build-options.d.ts +4 -0
  11. package/dist/src/models/project-models.d.ts +0 -11
  12. package/dist/src/node.d.ts +10 -1
  13. package/dist/src/publish/models/publish-options.d.ts +158 -0
  14. package/dist/src/publish/node-project-publisher-factory.d.ts +6 -0
  15. package/dist/src/publish/services/local-folder-publisher.d.ts +19 -0
  16. package/dist/src/publish/services/nuget-feed-publisher.d.ts +29 -0
  17. package/dist/src/publish/services/orchestrator-feed-types.d.ts +98 -0
  18. package/dist/src/publish/services/orchestrator-feeds-service.d.ts +44 -0
  19. package/dist/src/publish/services/orchestrator-publisher.d.ts +78 -0
  20. package/dist/src/publish/services/project-publisher.d.ts +29 -0
  21. package/dist/src/services/dotnet-discovery-service.d.ts +18 -0
  22. package/dist/src/services/nupkg-resolver.d.ts +20 -0
  23. package/dist/src/services/package-sign-service.d.ts +3 -2
  24. package/dist/src/services/package-signer.d.ts +24 -0
  25. package/dist/src/services/project-loader.d.ts +0 -1
  26. package/dist/src/services/project-packager.d.ts +0 -12
  27. package/dist/tests/{project-packager-e2e.test.d.ts → project-packager.e2e.test.d.ts} +1 -0
  28. package/dist/tests/publish/local-folder-publisher.spec.d.ts +1 -0
  29. package/dist/tests/publish/node-project-publisher-factory.spec.d.ts +1 -0
  30. package/dist/tests/publish/nuget-feed-publisher.spec.d.ts +1 -0
  31. package/dist/tests/publish/orchestrator-feeds-service.spec.d.ts +1 -0
  32. package/dist/tests/publish/orchestrator-publisher.spec.d.ts +1 -0
  33. package/dist/tests/publish/project-publisher.spec.d.ts +1 -0
  34. package/dist/tests/tools-factory-repository.spec.d.ts +1 -0
  35. package/package.json +22 -30
  36. /package/dist/tests/{governance-policy-service.test.d.ts → governance-policy-service.spec.d.ts} +0 -0
  37. /package/dist/tests/{pack-service.test.d.ts → pack-service.spec.d.ts} +0 -0
  38. /package/dist/tests/{project-loader.test.d.ts → project-loader.spec.d.ts} +0 -0
  39. /package/dist/tests/{project-tool-executor.test.d.ts → project-pack-options-builder.spec.d.ts} +0 -0
  40. /package/dist/tests/{project-packager.test.d.ts → project-packager.spec.d.ts} +0 -0
  41. /package/dist/tests/{tools-factory-repository.test.d.ts → project-tool-executor.spec.d.ts} +0 -0
package/dist/index.js CHANGED
@@ -46,9 +46,38 @@ var de_default = {
46
46
  signing: {
47
47
  errors: {
48
48
  dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
49
- },
49
+ }
50
+ },
51
+ dotnet: {
50
52
  info: {
51
- dotnetNotAvailable: "dotnet CLI is not available. Cannot sign package."
53
+ available: "dotnet CLI is available (version {version})."
54
+ },
55
+ warnings: {
56
+ notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
57
+ }
58
+ },
59
+ publish: {
60
+ errors: {
61
+ atLeastOnePackage: "At least one package path is required.",
62
+ packageNotFound: "Package file not found: {path}",
63
+ unknownDestination: "Unknown publish destination: {destination}",
64
+ publishFailed: "Publish failed: {message}",
65
+ failedToReadPackage: "Failed to read package file: {path}",
66
+ localFolderRequired: "Local folder destination requires a folderPath.",
67
+ localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
68
+ nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
69
+ nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
70
+ nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
71
+ orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
72
+ orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
73
+ orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
74
+ orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
75
+ orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
76
+ orchestratorNoPackages: "No package files were provided to publish.",
77
+ orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
78
+ orchestratorUrlRequired: "Orchestrator URL is required.",
79
+ getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
80
+ getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
52
81
  }
53
82
  }
54
83
  }
@@ -100,9 +129,38 @@ var en = {
100
129
  signing: {
101
130
  errors: {
102
131
  dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
103
- },
132
+ }
133
+ },
134
+ dotnet: {
104
135
  info: {
105
- dotnetNotAvailable: "dotnet CLI is not available. Cannot sign package."
136
+ available: "dotnet CLI is available (version {version})."
137
+ },
138
+ warnings: {
139
+ notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
140
+ }
141
+ },
142
+ publish: {
143
+ errors: {
144
+ atLeastOnePackage: "At least one package path is required.",
145
+ packageNotFound: "Package file not found: {path}",
146
+ unknownDestination: "Unknown publish destination: {destination}",
147
+ publishFailed: "Publish failed: {message}",
148
+ failedToReadPackage: "Failed to read package file: {path}",
149
+ localFolderRequired: "Local folder destination requires a folderPath.",
150
+ localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
151
+ nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
152
+ nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
153
+ nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
154
+ orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
155
+ orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
156
+ orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
157
+ orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
158
+ orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
159
+ orchestratorNoPackages: "No package files were provided to publish.",
160
+ orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
161
+ orchestratorUrlRequired: "Orchestrator URL is required.",
162
+ getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
163
+ getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
106
164
  }
107
165
  }
108
166
  }
@@ -153,9 +211,38 @@ var es_default = {
153
211
  signing: {
154
212
  errors: {
155
213
  dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
156
- },
214
+ }
215
+ },
216
+ dotnet: {
157
217
  info: {
158
- dotnetNotAvailable: "dotnet CLI is not available. Cannot sign package."
218
+ available: "dotnet CLI is available (version {version})."
219
+ },
220
+ warnings: {
221
+ notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
222
+ }
223
+ },
224
+ publish: {
225
+ errors: {
226
+ atLeastOnePackage: "At least one package path is required.",
227
+ packageNotFound: "Package file not found: {path}",
228
+ unknownDestination: "Unknown publish destination: {destination}",
229
+ publishFailed: "Publish failed: {message}",
230
+ failedToReadPackage: "Failed to read package file: {path}",
231
+ localFolderRequired: "Local folder destination requires a folderPath.",
232
+ localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
233
+ nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
234
+ nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
235
+ nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
236
+ orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
237
+ orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
238
+ orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
239
+ orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
240
+ orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
241
+ orchestratorNoPackages: "No package files were provided to publish.",
242
+ orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
243
+ orchestratorUrlRequired: "Orchestrator URL is required.",
244
+ getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
245
+ getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
159
246
  }
160
247
  }
161
248
  }
@@ -206,9 +293,38 @@ var es_MX_default = {
206
293
  signing: {
207
294
  errors: {
208
295
  dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
209
- },
296
+ }
297
+ },
298
+ dotnet: {
210
299
  info: {
211
- dotnetNotAvailable: "dotnet CLI is not available. Cannot sign package."
300
+ available: "dotnet CLI is available (version {version})."
301
+ },
302
+ warnings: {
303
+ notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
304
+ }
305
+ },
306
+ publish: {
307
+ errors: {
308
+ atLeastOnePackage: "At least one package path is required.",
309
+ packageNotFound: "Package file not found: {path}",
310
+ unknownDestination: "Unknown publish destination: {destination}",
311
+ publishFailed: "Publish failed: {message}",
312
+ failedToReadPackage: "Failed to read package file: {path}",
313
+ localFolderRequired: "Local folder destination requires a folderPath.",
314
+ localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
315
+ nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
316
+ nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
317
+ nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
318
+ orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
319
+ orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
320
+ orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
321
+ orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
322
+ orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
323
+ orchestratorNoPackages: "No package files were provided to publish.",
324
+ orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
325
+ orchestratorUrlRequired: "Orchestrator URL is required.",
326
+ getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
327
+ getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
212
328
  }
213
329
  }
214
330
  }
@@ -259,9 +375,38 @@ var fr_default = {
259
375
  signing: {
260
376
  errors: {
261
377
  dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
262
- },
378
+ }
379
+ },
380
+ dotnet: {
263
381
  info: {
264
- dotnetNotAvailable: "dotnet CLI is not available. Cannot sign package."
382
+ available: "dotnet CLI is available (version {version})."
383
+ },
384
+ warnings: {
385
+ notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
386
+ }
387
+ },
388
+ publish: {
389
+ errors: {
390
+ atLeastOnePackage: "At least one package path is required.",
391
+ packageNotFound: "Package file not found: {path}",
392
+ unknownDestination: "Unknown publish destination: {destination}",
393
+ publishFailed: "Publish failed: {message}",
394
+ failedToReadPackage: "Failed to read package file: {path}",
395
+ localFolderRequired: "Local folder destination requires a folderPath.",
396
+ localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
397
+ nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
398
+ nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
399
+ nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
400
+ orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
401
+ orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
402
+ orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
403
+ orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
404
+ orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
405
+ orchestratorNoPackages: "No package files were provided to publish.",
406
+ orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
407
+ orchestratorUrlRequired: "Orchestrator URL is required.",
408
+ getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
409
+ getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
265
410
  }
266
411
  }
267
412
  }
@@ -312,9 +457,38 @@ var ja_default = {
312
457
  signing: {
313
458
  errors: {
314
459
  dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
315
- },
460
+ }
461
+ },
462
+ dotnet: {
316
463
  info: {
317
- dotnetNotAvailable: "dotnet CLI is not available. Cannot sign package."
464
+ available: "dotnet CLI is available (version {version})."
465
+ },
466
+ warnings: {
467
+ notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
468
+ }
469
+ },
470
+ publish: {
471
+ errors: {
472
+ atLeastOnePackage: "At least one package path is required.",
473
+ packageNotFound: "Package file not found: {path}",
474
+ unknownDestination: "Unknown publish destination: {destination}",
475
+ publishFailed: "Publish failed: {message}",
476
+ failedToReadPackage: "Failed to read package file: {path}",
477
+ localFolderRequired: "Local folder destination requires a folderPath.",
478
+ localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
479
+ nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
480
+ nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
481
+ nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
482
+ orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
483
+ orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
484
+ orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
485
+ orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
486
+ orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
487
+ orchestratorNoPackages: "No package files were provided to publish.",
488
+ orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
489
+ orchestratorUrlRequired: "Orchestrator URL is required.",
490
+ getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
491
+ getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
318
492
  }
319
493
  }
320
494
  }
@@ -365,9 +539,38 @@ var ko_default = {
365
539
  signing: {
366
540
  errors: {
367
541
  dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
368
- },
542
+ }
543
+ },
544
+ dotnet: {
369
545
  info: {
370
- dotnetNotAvailable: "dotnet CLI is not available. Cannot sign package."
546
+ available: "dotnet CLI is available (version {version})."
547
+ },
548
+ warnings: {
549
+ notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
550
+ }
551
+ },
552
+ publish: {
553
+ errors: {
554
+ atLeastOnePackage: "At least one package path is required.",
555
+ packageNotFound: "Package file not found: {path}",
556
+ unknownDestination: "Unknown publish destination: {destination}",
557
+ publishFailed: "Publish failed: {message}",
558
+ failedToReadPackage: "Failed to read package file: {path}",
559
+ localFolderRequired: "Local folder destination requires a folderPath.",
560
+ localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
561
+ nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
562
+ nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
563
+ nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
564
+ orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
565
+ orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
566
+ orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
567
+ orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
568
+ orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
569
+ orchestratorNoPackages: "No package files were provided to publish.",
570
+ orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
571
+ orchestratorUrlRequired: "Orchestrator URL is required.",
572
+ getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
573
+ getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
371
574
  }
372
575
  }
373
576
  }
@@ -418,9 +621,38 @@ var pt_default = {
418
621
  signing: {
419
622
  errors: {
420
623
  dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
421
- },
624
+ }
625
+ },
626
+ dotnet: {
422
627
  info: {
423
- dotnetNotAvailable: "dotnet CLI is not available. Cannot sign package."
628
+ available: "dotnet CLI is available (version {version})."
629
+ },
630
+ warnings: {
631
+ notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
632
+ }
633
+ },
634
+ publish: {
635
+ errors: {
636
+ atLeastOnePackage: "At least one package path is required.",
637
+ packageNotFound: "Package file not found: {path}",
638
+ unknownDestination: "Unknown publish destination: {destination}",
639
+ publishFailed: "Publish failed: {message}",
640
+ failedToReadPackage: "Failed to read package file: {path}",
641
+ localFolderRequired: "Local folder destination requires a folderPath.",
642
+ localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
643
+ nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
644
+ nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
645
+ nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
646
+ orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
647
+ orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
648
+ orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
649
+ orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
650
+ orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
651
+ orchestratorNoPackages: "No package files were provided to publish.",
652
+ orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
653
+ orchestratorUrlRequired: "Orchestrator URL is required.",
654
+ getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
655
+ getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
424
656
  }
425
657
  }
426
658
  }
@@ -471,9 +703,38 @@ var pt_BR_default = {
471
703
  signing: {
472
704
  errors: {
473
705
  dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
474
- },
706
+ }
707
+ },
708
+ dotnet: {
475
709
  info: {
476
- dotnetNotAvailable: "dotnet CLI is not available. Cannot sign package."
710
+ available: "dotnet CLI is available (version {version})."
711
+ },
712
+ warnings: {
713
+ notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
714
+ }
715
+ },
716
+ publish: {
717
+ errors: {
718
+ atLeastOnePackage: "At least one package path is required.",
719
+ packageNotFound: "Package file not found: {path}",
720
+ unknownDestination: "Unknown publish destination: {destination}",
721
+ publishFailed: "Publish failed: {message}",
722
+ failedToReadPackage: "Failed to read package file: {path}",
723
+ localFolderRequired: "Local folder destination requires a folderPath.",
724
+ localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
725
+ nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
726
+ nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
727
+ nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
728
+ orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
729
+ orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
730
+ orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
731
+ orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
732
+ orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
733
+ orchestratorNoPackages: "No package files were provided to publish.",
734
+ orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
735
+ orchestratorUrlRequired: "Orchestrator URL is required.",
736
+ getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
737
+ getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
477
738
  }
478
739
  }
479
740
  }
@@ -524,9 +785,38 @@ var ro_default = {
524
785
  signing: {
525
786
  errors: {
526
787
  dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
527
- },
788
+ }
789
+ },
790
+ dotnet: {
528
791
  info: {
529
- dotnetNotAvailable: "dotnet CLI is not available. Cannot sign package."
792
+ available: "dotnet CLI is available (version {version})."
793
+ },
794
+ warnings: {
795
+ notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
796
+ }
797
+ },
798
+ publish: {
799
+ errors: {
800
+ atLeastOnePackage: "At least one package path is required.",
801
+ packageNotFound: "Package file not found: {path}",
802
+ unknownDestination: "Unknown publish destination: {destination}",
803
+ publishFailed: "Publish failed: {message}",
804
+ failedToReadPackage: "Failed to read package file: {path}",
805
+ localFolderRequired: "Local folder destination requires a folderPath.",
806
+ localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
807
+ nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
808
+ nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
809
+ nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
810
+ orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
811
+ orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
812
+ orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
813
+ orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
814
+ orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
815
+ orchestratorNoPackages: "No package files were provided to publish.",
816
+ orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
817
+ orchestratorUrlRequired: "Orchestrator URL is required.",
818
+ getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
819
+ getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
530
820
  }
531
821
  }
532
822
  }
@@ -577,9 +867,38 @@ var ru_default = {
577
867
  signing: {
578
868
  errors: {
579
869
  dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
580
- },
870
+ }
871
+ },
872
+ dotnet: {
581
873
  info: {
582
- dotnetNotAvailable: "dotnet CLI is not available. Cannot sign package."
874
+ available: "dotnet CLI is available (version {version})."
875
+ },
876
+ warnings: {
877
+ notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
878
+ }
879
+ },
880
+ publish: {
881
+ errors: {
882
+ atLeastOnePackage: "At least one package path is required.",
883
+ packageNotFound: "Package file not found: {path}",
884
+ unknownDestination: "Unknown publish destination: {destination}",
885
+ publishFailed: "Publish failed: {message}",
886
+ failedToReadPackage: "Failed to read package file: {path}",
887
+ localFolderRequired: "Local folder destination requires a folderPath.",
888
+ localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
889
+ nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
890
+ nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
891
+ nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
892
+ orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
893
+ orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
894
+ orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
895
+ orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
896
+ orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
897
+ orchestratorNoPackages: "No package files were provided to publish.",
898
+ orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
899
+ orchestratorUrlRequired: "Orchestrator URL is required.",
900
+ getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
901
+ getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
583
902
  }
584
903
  }
585
904
  }
@@ -630,9 +949,38 @@ var tr_default = {
630
949
  signing: {
631
950
  errors: {
632
951
  dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
633
- },
952
+ }
953
+ },
954
+ dotnet: {
634
955
  info: {
635
- dotnetNotAvailable: "dotnet CLI is not available. Cannot sign package."
956
+ available: "dotnet CLI is available (version {version})."
957
+ },
958
+ warnings: {
959
+ notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
960
+ }
961
+ },
962
+ publish: {
963
+ errors: {
964
+ atLeastOnePackage: "At least one package path is required.",
965
+ packageNotFound: "Package file not found: {path}",
966
+ unknownDestination: "Unknown publish destination: {destination}",
967
+ publishFailed: "Publish failed: {message}",
968
+ failedToReadPackage: "Failed to read package file: {path}",
969
+ localFolderRequired: "Local folder destination requires a folderPath.",
970
+ localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
971
+ nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
972
+ nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
973
+ nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
974
+ orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
975
+ orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
976
+ orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
977
+ orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
978
+ orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
979
+ orchestratorNoPackages: "No package files were provided to publish.",
980
+ orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
981
+ orchestratorUrlRequired: "Orchestrator URL is required.",
982
+ getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
983
+ getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
636
984
  }
637
985
  }
638
986
  }
@@ -683,9 +1031,38 @@ var zh_CN_default = {
683
1031
  signing: {
684
1032
  errors: {
685
1033
  dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
686
- },
1034
+ }
1035
+ },
1036
+ dotnet: {
687
1037
  info: {
688
- dotnetNotAvailable: "dotnet CLI is not available. Cannot sign package."
1038
+ available: "dotnet CLI is available (version {version})."
1039
+ },
1040
+ warnings: {
1041
+ notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
1042
+ }
1043
+ },
1044
+ publish: {
1045
+ errors: {
1046
+ atLeastOnePackage: "At least one package path is required.",
1047
+ packageNotFound: "Package file not found: {path}",
1048
+ unknownDestination: "Unknown publish destination: {destination}",
1049
+ publishFailed: "Publish failed: {message}",
1050
+ failedToReadPackage: "Failed to read package file: {path}",
1051
+ localFolderRequired: "Local folder destination requires a folderPath.",
1052
+ localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
1053
+ nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
1054
+ nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
1055
+ nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
1056
+ orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
1057
+ orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
1058
+ orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
1059
+ orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
1060
+ orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
1061
+ orchestratorNoPackages: "No package files were provided to publish.",
1062
+ orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
1063
+ orchestratorUrlRequired: "Orchestrator URL is required.",
1064
+ getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
1065
+ getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
689
1066
  }
690
1067
  }
691
1068
  }
@@ -736,9 +1113,38 @@ var zh_TW_default = {
736
1113
  signing: {
737
1114
  errors: {
738
1115
  dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
739
- },
1116
+ }
1117
+ },
1118
+ dotnet: {
740
1119
  info: {
741
- dotnetNotAvailable: "dotnet CLI is not available. Cannot sign package."
1120
+ available: "dotnet CLI is available (version {version})."
1121
+ },
1122
+ warnings: {
1123
+ notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
1124
+ }
1125
+ },
1126
+ publish: {
1127
+ errors: {
1128
+ atLeastOnePackage: "At least one package path is required.",
1129
+ packageNotFound: "Package file not found: {path}",
1130
+ unknownDestination: "Unknown publish destination: {destination}",
1131
+ publishFailed: "Publish failed: {message}",
1132
+ failedToReadPackage: "Failed to read package file: {path}",
1133
+ localFolderRequired: "Local folder destination requires a folderPath.",
1134
+ localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
1135
+ nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
1136
+ nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
1137
+ nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
1138
+ orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
1139
+ orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
1140
+ orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
1141
+ orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
1142
+ orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
1143
+ orchestratorNoPackages: "No package files were provided to publish.",
1144
+ orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
1145
+ orchestratorUrlRequired: "Orchestrator URL is required.",
1146
+ getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
1147
+ getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
742
1148
  }
743
1149
  }
744
1150
  }
@@ -789,9 +1195,38 @@ var zu_default = {
789
1195
  signing: {
790
1196
  errors: {
791
1197
  dotnetNotAvailable: "dotnet CLI is not available. Package signing requires dotnet CLI to be installed."
792
- },
1198
+ }
1199
+ },
1200
+ dotnet: {
793
1201
  info: {
794
- dotnetNotAvailable: "dotnet CLI is not available. Cannot sign package."
1202
+ available: "dotnet CLI is available (version {version})."
1203
+ },
1204
+ warnings: {
1205
+ notAvailable: "dotnet CLI is not available. Workflow compiler functionality and package signing will not be available."
1206
+ }
1207
+ },
1208
+ publish: {
1209
+ errors: {
1210
+ atLeastOnePackage: "At least one package path is required.",
1211
+ packageNotFound: "Package file not found: {path}",
1212
+ unknownDestination: "Unknown publish destination: {destination}",
1213
+ publishFailed: "Publish failed: {message}",
1214
+ failedToReadPackage: "Failed to read package file: {path}",
1215
+ localFolderRequired: "Local folder destination requires a folderPath.",
1216
+ localFolderFileExists: "File already exists at destination and overwrite is disabled: {path}",
1217
+ nugetFeedUrlRequired: "NuGet feed destination requires a feedUrl.",
1218
+ nugetPushFailed: "NuGet push failed for {fileName}: {status} {statusText}{body}",
1219
+ nugetPushUrlResolutionFailed: "Failed to resolve NuGet push URL from {feedUrl}: {message}",
1220
+ orchestratorCloudUrlRequired: "Orchestrator destination requires connectionInfo.cloudUrl.",
1221
+ orchestratorCustomPublishUrlRequired: "OrchestratorCustom destination requires a publishUrl.",
1222
+ orchestratorFeedResolutionFailed: "Could not resolve a target Orchestrator feed: {message}",
1223
+ orchestratorFeedNotFound: "No accessible Orchestrator feed matches destination {kind}. Available feeds: {available}",
1224
+ orchestratorPersonalWorkspaceFolderNotFound: "No personal-workspace folder is accessible — make sure the authenticated user has a personal workspace. Folders returned: {folders}",
1225
+ orchestratorNoPackages: "No package files were provided to publish.",
1226
+ orchestratorPublishFailed: "Orchestrator publish failed: {status} {statusText}{body}",
1227
+ orchestratorUrlRequired: "Orchestrator URL is required.",
1228
+ getAccessibleFeedsFailed: "GetAccessibleFeeds failed: {status} {statusText}{body}",
1229
+ getFoldersForCurrentUserFailed: "GetAllFoldersForCurrentUser failed: {status} {statusText}{body}"
795
1230
  }
796
1231
  }
797
1232
  }
@@ -888,6 +1323,39 @@ var SENSITIVE_KEY_PREFIXES = new Set([
888
1323
  "hmac",
889
1324
  "oauth"
890
1325
  ]);
1326
+ var PREFIX = "@uipath/common/";
1327
+ var _g = globalThis;
1328
+ function singleton(ctorOrName) {
1329
+ const name = typeof ctorOrName === "string" ? ctorOrName : ctorOrName.name;
1330
+ const key = Symbol.for(PREFIX + name);
1331
+ return {
1332
+ get(fallback) {
1333
+ return _g[key] ?? fallback;
1334
+ },
1335
+ set(value) {
1336
+ _g[key] = value;
1337
+ },
1338
+ clear() {
1339
+ delete _g[key];
1340
+ },
1341
+ getOrInit(factory, guard) {
1342
+ const existing = _g[key];
1343
+ if (existing != null && typeof existing === "object") {
1344
+ if (!guard || guard(existing)) {
1345
+ return existing;
1346
+ }
1347
+ }
1348
+ const instance = factory();
1349
+ _g[key] = instance;
1350
+ return instance;
1351
+ }
1352
+ };
1353
+ }
1354
+ var telemetryPropsSlot = singleton("TelemetryDefaultProps");
1355
+ function getGlobalTelemetryProperties() {
1356
+ return telemetryPropsSlot.get();
1357
+ }
1358
+
891
1359
  class TelemetryService {
892
1360
  telemetryProvider;
893
1361
  contextStorage;
@@ -904,7 +1372,7 @@ class TelemetryService {
904
1372
  this.telemetryProvider = provider;
905
1373
  }
906
1374
  setDefaultProperties(properties) {
907
- this.defaultProperties = properties;
1375
+ this.defaultProperties = properties === undefined ? undefined : { ...this.defaultProperties, ...properties };
908
1376
  }
909
1377
  trackEvent(name, properties) {
910
1378
  const context = this.getCurrentContext();
@@ -966,6 +1434,7 @@ class TelemetryService {
966
1434
  }
967
1435
  enrichPropertiesWithContext(properties, context) {
968
1436
  return {
1437
+ ...getGlobalTelemetryProperties(),
969
1438
  ...this.defaultProperties,
970
1439
  ...properties,
971
1440
  ...context
@@ -1013,6 +1482,7 @@ class ProjectValidateOptions extends ProjectRestoreOptions {
1013
1482
 
1014
1483
  // src/models/project-build-options.ts
1015
1484
  class ProjectBuildOptions extends ProjectValidateOptions {
1485
+ outputType;
1016
1486
  }
1017
1487
  // src/models/project-pack-options.ts
1018
1488
  class ProjectPackOptions extends ProjectBuildOptions {
@@ -1021,11 +1491,30 @@ class ProjectPackOptions extends ProjectBuildOptions {
1021
1491
  signingInfo;
1022
1492
  packOptions;
1023
1493
  }
1024
- // src/services/governance-policy-service.ts
1494
+ // src/publish/models/publish-options.ts
1495
+ var PublishDestinationKind;
1496
+ ((PublishDestinationKind2) => {
1497
+ PublishDestinationKind2["LocalFolder"] = "LocalFolder";
1498
+ PublishDestinationKind2["NugetFeed"] = "NugetFeed";
1499
+ PublishDestinationKind2["OrchestratorPersonalWorkspace"] = "OrchestratorPersonalWorkspace";
1500
+ PublishDestinationKind2["OrchestratorTenantProcesses"] = "OrchestratorTenantProcesses";
1501
+ PublishDestinationKind2["OrchestratorSharedLibraries"] = "OrchestratorSharedLibraries";
1502
+ PublishDestinationKind2["OrchestratorCustom"] = "OrchestratorCustom";
1503
+ })(PublishDestinationKind ||= {});
1504
+
1505
+ class ProjectPublishOptions {
1506
+ packagePaths;
1507
+ destination;
1508
+ constructor(packagePaths, destination) {
1509
+ this.packagePaths = packagePaths;
1510
+ this.destination = destination;
1511
+ }
1512
+ }
1513
+ // src/publish/services/project-publisher.ts
1025
1514
  import {
1026
- Path,
1027
- toRelativeUrl,
1028
- translate
1515
+ ToolErrorCodes as ToolErrorCodes4,
1516
+ ToolResult as ToolResult4,
1517
+ translate as translate5
1029
1518
  } from "@uipath/solutionpackager-tool-core";
1030
1519
 
1031
1520
  // src/services/tool-logger.ts
@@ -1114,7 +1603,648 @@ class ToolLogger {
1114
1603
  }
1115
1604
  }
1116
1605
 
1606
+ // src/publish/services/local-folder-publisher.ts
1607
+ import {
1608
+ ToolErrorCodes,
1609
+ ToolResult,
1610
+ translate
1611
+ } from "@uipath/solutionpackager-tool-core";
1612
+ class LocalFolderPublisher {
1613
+ fileSystem;
1614
+ logger;
1615
+ constructor(fileSystem) {
1616
+ this.fileSystem = fileSystem;
1617
+ this.logger = new ToolLogger("ProjectPublisher", "LocalFolder");
1618
+ }
1619
+ async publishAsync(packagePaths, destination) {
1620
+ const overwrite = destination.overwrite ?? true;
1621
+ if (!destination.folderPath) {
1622
+ return ToolResult.error(ToolErrorCodes.InternalError, translate.t("solutionpackager.publish.errors.localFolderRequired"));
1623
+ }
1624
+ if (!await this.fileSystem.exists(destination.folderPath)) {
1625
+ await this.fileSystem.mkdir(destination.folderPath);
1626
+ }
1627
+ const written = [];
1628
+ for (const sourcePath of packagePaths) {
1629
+ const fileName = this.fileSystem.path.basename(sourcePath);
1630
+ const destPath = this.fileSystem.path.join(destination.folderPath, fileName);
1631
+ if (!overwrite && await this.fileSystem.exists(destPath)) {
1632
+ return ToolResult.error(ToolErrorCodes.InternalError, translate.t("solutionpackager.publish.errors.localFolderFileExists", { path: destPath }));
1633
+ }
1634
+ const data = await this.fileSystem.readFile(sourcePath);
1635
+ if (!data) {
1636
+ return ToolResult.error(ToolErrorCodes.InternalError, translate.t("solutionpackager.publish.errors.failedToReadPackage", { path: sourcePath }));
1637
+ }
1638
+ await this.fileSystem.writeFile(destPath, data);
1639
+ written.push(destPath);
1640
+ this.logger.info(`Copied package to ${destPath}`);
1641
+ }
1642
+ return new ToolResult(ToolErrorCodes.Success, undefined, written);
1643
+ }
1644
+ }
1645
+
1646
+ // src/publish/services/nuget-feed-publisher.ts
1647
+ import {
1648
+ ToolErrorCodes as ToolErrorCodes2,
1649
+ ToolResult as ToolResult2,
1650
+ translate as translate2
1651
+ } from "@uipath/solutionpackager-tool-core";
1652
+ var NUGET_V3_PACKAGE_PUBLISH_TYPE = "PackagePublish/2.0.0";
1653
+
1654
+ class NugetFeedPublisher {
1655
+ fileSystem;
1656
+ logger;
1657
+ constructor(fileSystem) {
1658
+ this.fileSystem = fileSystem;
1659
+ this.logger = new ToolLogger("ProjectPublisher", "NugetFeed");
1660
+ }
1661
+ async publishAsync(packagePaths, destination) {
1662
+ if (!destination.feedUrl) {
1663
+ return ToolResult2.error(ToolErrorCodes2.InternalError, translate2.t("solutionpackager.publish.errors.nugetFeedUrlRequired"));
1664
+ }
1665
+ let pushUrl;
1666
+ try {
1667
+ pushUrl = await this.resolvePushUrl(destination.feedUrl, destination.apiKey);
1668
+ } catch (error) {
1669
+ const message = error instanceof Error ? error.message : String(error);
1670
+ return ToolResult2.error(ToolErrorCodes2.InternalError, translate2.t("solutionpackager.publish.errors.nugetPushUrlResolutionFailed", { feedUrl: destination.feedUrl, message }));
1671
+ }
1672
+ const published = [];
1673
+ for (const packagePath of packagePaths) {
1674
+ const data = await this.fileSystem.readFile(packagePath);
1675
+ if (!data) {
1676
+ return ToolResult2.error(ToolErrorCodes2.InternalError, translate2.t("solutionpackager.publish.errors.failedToReadPackage", { path: packagePath }));
1677
+ }
1678
+ const fileName = this.fileSystem.path.basename(packagePath);
1679
+ const form = new FormData;
1680
+ form.append("package", new Blob([data], {
1681
+ type: "application/octet-stream"
1682
+ }), fileName);
1683
+ const headers = {};
1684
+ if (destination.apiKey) {
1685
+ headers["X-NuGet-ApiKey"] = destination.apiKey;
1686
+ }
1687
+ this.logger.info(`Pushing ${fileName} to ${pushUrl}`);
1688
+ const response = await fetch(pushUrl, {
1689
+ method: "PUT",
1690
+ headers,
1691
+ body: form
1692
+ });
1693
+ if (!response.ok) {
1694
+ const body = await this.safeReadBody(response);
1695
+ return ToolResult2.error(ToolErrorCodes2.InternalError, translate2.t("solutionpackager.publish.errors.nugetPushFailed", {
1696
+ fileName,
1697
+ status: response.status,
1698
+ statusText: response.statusText,
1699
+ body: body ? ` - ${body}` : ""
1700
+ }));
1701
+ }
1702
+ published.push(packagePath);
1703
+ this.logger.info(`Pushed ${fileName} successfully.`);
1704
+ }
1705
+ return new ToolResult2(ToolErrorCodes2.Success, undefined, published);
1706
+ }
1707
+ async resolvePushUrl(feedUrl, apiKey) {
1708
+ let end = feedUrl.length;
1709
+ while (end > 0 && feedUrl.charCodeAt(end - 1) === 47)
1710
+ end--;
1711
+ const trimmed = feedUrl.slice(0, end);
1712
+ if (/\/api\/v2\/package\/?$/i.test(trimmed)) {
1713
+ return trimmed;
1714
+ }
1715
+ if (/\.json$/i.test(trimmed)) {
1716
+ return this.resolveFromServiceIndex(trimmed, apiKey);
1717
+ }
1718
+ return `${trimmed}/api/v2/package`;
1719
+ }
1720
+ async resolveFromServiceIndex(serviceIndexUrl, apiKey) {
1721
+ const headers = { Accept: "application/json" };
1722
+ if (apiKey) {
1723
+ headers["X-NuGet-ApiKey"] = apiKey;
1724
+ }
1725
+ const response = await fetch(serviceIndexUrl, { headers });
1726
+ if (!response.ok) {
1727
+ throw new Error(`service index returned ${response.status} ${response.statusText}`);
1728
+ }
1729
+ const index = await response.json();
1730
+ const resource = index.resources?.find((r) => r["@type"] === NUGET_V3_PACKAGE_PUBLISH_TYPE);
1731
+ if (!resource?.["@id"]) {
1732
+ throw new Error(`service index has no ${NUGET_V3_PACKAGE_PUBLISH_TYPE} resource`);
1733
+ }
1734
+ return resource["@id"];
1735
+ }
1736
+ async safeReadBody(response) {
1737
+ try {
1738
+ const text = await response.text();
1739
+ return text.slice(0, 500);
1740
+ } catch {
1741
+ return "";
1742
+ }
1743
+ }
1744
+ }
1745
+
1746
+ // src/publish/services/orchestrator-publisher.ts
1747
+ import {
1748
+ ToolErrorCodes as ToolErrorCodes3,
1749
+ ToolResult as ToolResult3,
1750
+ translate as translate4
1751
+ } from "@uipath/solutionpackager-tool-core";
1752
+
1753
+ // src/publish/services/orchestrator-feed-types.ts
1754
+ var PackageFeedDtoPurposeEnum = {
1755
+ Undefined: "Undefined",
1756
+ Processes: "Processes",
1757
+ Libraries: "Libraries",
1758
+ PersonalWorkspace: "PersonalWorkspace",
1759
+ FolderHierarchy: "FolderHierarchy"
1760
+ };
1761
+ var PackageFeedDtoAuthenticationTypeEnum = {
1762
+ Secure: "Secure",
1763
+ ApiKey: "ApiKey",
1764
+ Basic: "Basic"
1765
+ };
1766
+ var ExtendedFolderDtoFeedTypeEnum = {
1767
+ Undefined: "Undefined",
1768
+ Processes: "Processes",
1769
+ Libraries: "Libraries",
1770
+ PersonalWorkspace: "PersonalWorkspace",
1771
+ FolderHierarchy: "FolderHierarchy"
1772
+ };
1773
+
1774
+ // ../../common/dist/sdk-user-agent.js
1775
+ var PREFIX2 = "@uipath/common/";
1776
+ var _g2 = globalThis;
1777
+ function singleton2(ctorOrName) {
1778
+ const name = typeof ctorOrName === "string" ? ctorOrName : ctorOrName.name;
1779
+ const key = Symbol.for(PREFIX2 + name);
1780
+ return {
1781
+ get(fallback) {
1782
+ return _g2[key] ?? fallback;
1783
+ },
1784
+ set(value) {
1785
+ _g2[key] = value;
1786
+ },
1787
+ clear() {
1788
+ delete _g2[key];
1789
+ },
1790
+ getOrInit(factory, guard) {
1791
+ const existing = _g2[key];
1792
+ if (existing != null && typeof existing === "object") {
1793
+ if (!guard || guard(existing)) {
1794
+ return existing;
1795
+ }
1796
+ }
1797
+ const instance = factory();
1798
+ _g2[key] = instance;
1799
+ return instance;
1800
+ }
1801
+ };
1802
+ }
1803
+ var USER_AGENT_HEADER = "User-Agent";
1804
+ var sdkUserAgentHostToken = singleton2("SdkUserAgentHostToken");
1805
+ function splitUserAgentTokens(value) {
1806
+ return value?.trim().split(/\s+/).filter(Boolean) ?? [];
1807
+ }
1808
+ function appendUserAgentToken(value, userAgent) {
1809
+ const tokens = splitUserAgentTokens(value);
1810
+ const seen = new Set(tokens);
1811
+ for (const token of splitUserAgentTokens(userAgent)) {
1812
+ if (!seen.has(token)) {
1813
+ tokens.push(token);
1814
+ seen.add(token);
1815
+ }
1816
+ }
1817
+ return tokens.join(" ");
1818
+ }
1819
+ function getEffectiveUserAgent(userAgent) {
1820
+ return appendUserAgentToken(sdkUserAgentHostToken.get(), userAgent);
1821
+ }
1822
+ function addSdkUserAgentHeader(headers, userAgent) {
1823
+ const result = { ...headers ?? {} };
1824
+ const effectiveUserAgent = getEffectiveUserAgent(userAgent);
1825
+ const headerName = Object.keys(result).find((key) => key.toLowerCase() === USER_AGENT_HEADER.toLowerCase());
1826
+ if (headerName) {
1827
+ result[headerName] = appendUserAgentToken(result[headerName], effectiveUserAgent);
1828
+ } else {
1829
+ result[USER_AGENT_HEADER] = effectiveUserAgent;
1830
+ }
1831
+ return result;
1832
+ }
1833
+
1834
+ // src/publish/services/orchestrator-feeds-service.ts
1835
+ import { translate as translate3 } from "@uipath/solutionpackager-tool-core";
1836
+ // package.json
1837
+ var package_default = {
1838
+ name: "@uipath/project-packager",
1839
+ license: "MIT",
1840
+ version: "1.196.0",
1841
+ description: "UiPath Project Packager - core library for packing individual UiPath projects",
1842
+ type: "module",
1843
+ main: "./dist/index.js",
1844
+ exports: {
1845
+ ".": {
1846
+ types: "./dist/src/index.d.ts",
1847
+ default: "./dist/index.js"
1848
+ },
1849
+ "./node": {
1850
+ types: "./dist/src/node.d.ts",
1851
+ default: "./dist/node.js"
1852
+ },
1853
+ "./browser": {
1854
+ types: "./dist/src/browser.d.ts",
1855
+ default: "./dist/browser.js"
1856
+ }
1857
+ },
1858
+ types: "./dist/src/index.d.ts",
1859
+ repository: {
1860
+ type: "git",
1861
+ url: "https://github.com/UiPath/cli.git",
1862
+ directory: "packages/packager/project-packager"
1863
+ },
1864
+ publishConfig: {
1865
+ registry: "https://npm.pkg.github.com/"
1866
+ },
1867
+ files: [
1868
+ "dist",
1869
+ "!dist/**/*.map"
1870
+ ],
1871
+ scripts: {
1872
+ build: "bun build ./src/index.ts --outdir dist --format esm --target browser --external @uipath/solutionpackager-tool-core --external '@uipath/filesystem/*' --external @uipath/filesystem && bun build ./src/browser.ts --outdir dist --format esm --target browser --external @uipath/solutionpackager-tool-core --external '@uipath/filesystem/*' --external @uipath/filesystem && bun build ./src/node.ts --outdir dist --format esm --target node --external @uipath/solutionpackager-tool-core --external '@uipath/common/*' --external @uipath/common --external '@uipath/filesystem/*' --external @uipath/filesystem && tsc --emitDeclarationOnly --outDir dist",
1873
+ clean: "rimraf dist",
1874
+ test: "vitest run",
1875
+ e2e: "vitest run --config vitest.e2e.config.ts",
1876
+ "test:coverage": "vitest run --coverage",
1877
+ prepack: "bun run build",
1878
+ "publish:dry": "bun publish --dry-run",
1879
+ "publish:gh": "bun publish",
1880
+ "version:patch": "bun version patch --no-git-tag-version",
1881
+ "version:minor": "bun version minor --no-git-tag-version",
1882
+ "version:major": "bun version major --no-git-tag-version",
1883
+ lint: "biome check ."
1884
+ },
1885
+ dependencies: {
1886
+ "@uipath/filesystem": "workspace:*",
1887
+ "@uipath/solutionpackager-tool-core": "workspace:*",
1888
+ "@uipath/common": "workspace:*"
1889
+ },
1890
+ peerDependencies: {
1891
+ fflate: "^0.8.2"
1892
+ },
1893
+ devDependencies: {
1894
+ "@types/node": "^25.5.2",
1895
+ "@uipath/resource-builder-tool": "2025.11.0-alpha2928-3101",
1896
+ "@uipath/tool-agent": "^1.2.6",
1897
+ "@uipath/packager-tool-apiworkflow": "workspace:*",
1898
+ "@uipath/packager-tool-connector": "workspace:*",
1899
+ "@uipath/packager-tool-flow": "workspace:*",
1900
+ "@uipath/packager-tool-functions": "workspace:*",
1901
+ "@uipath/packager-tool-webapp": "workspace:*",
1902
+ "@uipath/packager-tool-workflowcompiler": "workspace:*",
1903
+ "@vitest/coverage-v8": "^4.1.6",
1904
+ jsdom: "^29.0.0",
1905
+ typescript: "^6.0.2",
1906
+ "vite-tsconfig-paths": "^6.1.1",
1907
+ vitest: "^4.1.6"
1908
+ }
1909
+ };
1910
+
1911
+ // src/publish/services/orchestrator-feeds-service.ts
1912
+ var HEADER_TENANT_ID = "X-UIPATH-TenantId";
1913
+ var FEEDS_PATH = "/api/PackageFeeds/GetFeeds";
1914
+ var FOLDERS_PATH = "/api/FoldersNavigation/GetAllFoldersForCurrentUser";
1915
+ var SDK_USER_AGENT = `${package_default.name.replace(/^@uipath\//, "")}/${package_default.version}`;
1916
+
1917
+ class OrchestratorFeedsService {
1918
+ logger;
1919
+ constructor() {
1920
+ this.logger = new ToolLogger("OrchestratorFeedsService", "Feeds");
1921
+ }
1922
+ async getAccessibleFeedsAsync(connection) {
1923
+ this.ensureOrchestratorUrl(connection);
1924
+ this.logger.info(`Fetching accessible feeds from ${connection.orchestratorUrl}`);
1925
+ try {
1926
+ const json = await orchestratorGet(connection, FEEDS_PATH);
1927
+ return Array.isArray(json) ? json : [];
1928
+ } catch (error) {
1929
+ const { status, statusText, body } = await describeResponseError(error);
1930
+ throw new Error(translate3.t("solutionpackager.publish.errors.getAccessibleFeedsFailed", { status, statusText, body }));
1931
+ }
1932
+ }
1933
+ async getFoldersForCurrentUserAsync(connection) {
1934
+ this.ensureOrchestratorUrl(connection);
1935
+ this.logger.info(`Fetching folders from ${connection.orchestratorUrl}`);
1936
+ try {
1937
+ const json = await orchestratorGet(connection, FOLDERS_PATH);
1938
+ return Array.isArray(json) ? json.map(mapExtendedFolder) : [];
1939
+ } catch (error) {
1940
+ const { status, statusText, body } = await describeResponseError(error);
1941
+ throw new Error(translate3.t("solutionpackager.publish.errors.getFoldersForCurrentUserFailed", { status, statusText, body }));
1942
+ }
1943
+ }
1944
+ ensureOrchestratorUrl(connection) {
1945
+ if (!connection.orchestratorUrl) {
1946
+ throw new Error(translate3.t("solutionpackager.publish.errors.orchestratorUrlRequired"));
1947
+ }
1948
+ }
1949
+ }
1950
+ function mapExtendedFolder(json) {
1951
+ return {
1952
+ isSelectable: json.IsSelectable,
1953
+ hasChildren: json.HasChildren,
1954
+ level: json.Level,
1955
+ key: json.Key,
1956
+ displayName: json.DisplayName,
1957
+ fullyQualifiedName: json.FullyQualifiedName,
1958
+ description: json.Description,
1959
+ folderType: json.FolderType,
1960
+ isPersonal: json.IsPersonal,
1961
+ provisionType: json.ProvisionType,
1962
+ permissionModel: json.PermissionModel,
1963
+ parentId: json.ParentId,
1964
+ parentKey: json.ParentKey,
1965
+ feedType: json.FeedType,
1966
+ id: json.Id
1967
+ };
1968
+ }
1969
+
1970
+ class OrchestratorResponseError extends Error {
1971
+ response;
1972
+ constructor(response) {
1973
+ super(`Orchestrator request failed with status ${response.status}.`);
1974
+ this.response = response;
1975
+ this.name = "OrchestratorResponseError";
1976
+ }
1977
+ }
1978
+ async function orchestratorGet(connection, relativePath) {
1979
+ const url = `${normalizeOrchestratorBasePath(connection.orchestratorUrl)}${relativePath}`;
1980
+ const response = await fetch(url, {
1981
+ method: "GET",
1982
+ headers: buildHeaders(connection)
1983
+ });
1984
+ if (!response.ok) {
1985
+ throw new OrchestratorResponseError(response);
1986
+ }
1987
+ const text = await response.text();
1988
+ if (text === "" || text === "null") {
1989
+ return null;
1990
+ }
1991
+ return JSON.parse(text);
1992
+ }
1993
+ function buildHeaders(connection) {
1994
+ const headers = {};
1995
+ if (connection.accessToken) {
1996
+ headers.Authorization = `Bearer ${connection.accessToken}`;
1997
+ }
1998
+ if (connection.tenantId) {
1999
+ headers[HEADER_TENANT_ID] = connection.tenantId;
2000
+ }
2001
+ return addSdkUserAgentHeader(headers, SDK_USER_AGENT);
2002
+ }
2003
+ function normalizeOrchestratorBasePath(orchestratorUrl) {
2004
+ let end = orchestratorUrl.length;
2005
+ while (end > 0 && orchestratorUrl.charCodeAt(end - 1) === 47)
2006
+ end--;
2007
+ const trimmed = orchestratorUrl.slice(0, end);
2008
+ return /\/orchestrator_$/i.test(trimmed) ? trimmed : `${trimmed}/orchestrator_`;
2009
+ }
2010
+ async function describeResponseError(error) {
2011
+ const response = error?.response;
2012
+ if (response) {
2013
+ let body = "";
2014
+ try {
2015
+ body = (await response.text()).slice(0, 500);
2016
+ } catch {
2017
+ body = "";
2018
+ }
2019
+ return {
2020
+ status: response.status,
2021
+ statusText: response.statusText,
2022
+ body: body ? ` - ${body}` : ""
2023
+ };
2024
+ }
2025
+ const cause = error?.cause;
2026
+ const message = cause instanceof Error ? cause.message : error instanceof Error ? error.message : String(error);
2027
+ return { status: "?", statusText: message, body: "" };
2028
+ }
2029
+
2030
+ // src/publish/services/orchestrator-publisher.ts
2031
+ var HEADER_FOLDER_ID = "X-UIPATH-OrganizationUnitId";
2032
+ var HEADER_TENANT_ID2 = "X-UIPATH-TenantId";
2033
+ var HEADER_NUGET_API_KEY = "X-NuGet-ApiKey";
2034
+ var ORCHESTRATOR_RELATIVE_URL = "/orchestrator_";
2035
+ var PROCESSES_UPLOAD_PATH = "/odata/Processes/UiPath.Server.Configuration.OData.UploadPackage";
2036
+ var LIBRARIES_UPLOAD_PATH = "/odata/Libraries/UiPath.Server.Configuration.OData.UploadPackage";
2037
+
2038
+ class OrchestratorPublisher {
2039
+ fileSystem;
2040
+ logger;
2041
+ feedsService;
2042
+ constructor(fileSystem, feedsService) {
2043
+ this.fileSystem = fileSystem;
2044
+ this.logger = new ToolLogger("ProjectPublisher", "Orchestrator");
2045
+ this.feedsService = feedsService ?? new OrchestratorFeedsService;
2046
+ }
2047
+ async publishAsync(packagePaths, destination) {
2048
+ if (packagePaths.length === 0) {
2049
+ return ToolResult3.error(ToolErrorCodes3.InternalError, translate4.t("solutionpackager.publish.errors.orchestratorNoPackages"));
2050
+ }
2051
+ if (destination.kind === "OrchestratorCustom" /* OrchestratorCustom */) {
2052
+ if (!destination.publishUrl) {
2053
+ return ToolResult3.error(ToolErrorCodes3.InternalError, translate4.t("solutionpackager.publish.errors.orchestratorCustomPublishUrlRequired"));
2054
+ }
2055
+ this.logger.info(`Publishing ${packagePaths.length} package(s) to ${destination.publishUrl} (custom)`);
2056
+ return this.postPackages(packagePaths, destination.publishUrl, this.buildCustomHeaders(destination));
2057
+ }
2058
+ if (!destination.connectionInfo?.cloudUrl) {
2059
+ return ToolResult3.error(ToolErrorCodes3.InternalError, translate4.t("solutionpackager.publish.errors.orchestratorCloudUrlRequired"));
2060
+ }
2061
+ const orchestratorUrl = this.deriveOrchestratorUrl(destination.connectionInfo);
2062
+ let feed;
2063
+ try {
2064
+ feed = await this.resolveFeed(destination, orchestratorUrl);
2065
+ } catch (error) {
2066
+ const message = error instanceof Error ? error.message : String(error);
2067
+ return ToolResult3.error(ToolErrorCodes3.InternalError, translate4.t("solutionpackager.publish.errors.orchestratorFeedResolutionFailed", { message }));
2068
+ }
2069
+ const targetUrl = this.buildPublishUrl(orchestratorUrl, feed);
2070
+ const headers = this.buildHeaders(destination, feed);
2071
+ this.logger.info(`Publishing ${packagePaths.length} package(s) to ${targetUrl} (feed ${feed.name}, ${feed.purpose})`);
2072
+ return this.postPackages(packagePaths, targetUrl, headers);
2073
+ }
2074
+ async postPackages(packagePaths, targetUrl, headers) {
2075
+ const form = new FormData;
2076
+ for (const packagePath of packagePaths) {
2077
+ const data = await this.fileSystem.readFile(packagePath);
2078
+ if (!data) {
2079
+ return ToolResult3.error(ToolErrorCodes3.InternalError, translate4.t("solutionpackager.publish.errors.failedToReadPackage", { path: packagePath }));
2080
+ }
2081
+ const fileName = this.fileSystem.path.basename(packagePath);
2082
+ form.append("file", new Blob([data], {
2083
+ type: "application/octet-stream"
2084
+ }), fileName);
2085
+ }
2086
+ const response = await fetch(targetUrl, {
2087
+ method: "POST",
2088
+ headers,
2089
+ body: form
2090
+ });
2091
+ if (!response.ok) {
2092
+ const body = await this.safeReadBody(response);
2093
+ return ToolResult3.error(ToolErrorCodes3.InternalError, translate4.t("solutionpackager.publish.errors.orchestratorPublishFailed", {
2094
+ status: response.status,
2095
+ statusText: response.statusText,
2096
+ body: body ? ` - ${body}` : ""
2097
+ }));
2098
+ }
2099
+ this.logger.info("Orchestrator publish completed.");
2100
+ return new ToolResult3(ToolErrorCodes3.Success, undefined, packagePaths);
2101
+ }
2102
+ async resolveFeed(destination, orchestratorUrl) {
2103
+ const connection = {
2104
+ orchestratorUrl,
2105
+ accessToken: destination.connectionInfo.accessToken,
2106
+ tenantId: destination.connectionInfo.tenantId
2107
+ };
2108
+ const feeds = await this.feedsService.getAccessibleFeedsAsync(connection);
2109
+ if (destination.kind === "OrchestratorPersonalWorkspace" /* OrchestratorPersonalWorkspace */) {
2110
+ const folders = await this.feedsService.getFoldersForCurrentUserAsync(connection);
2111
+ const personalFolder = folders.find((f) => f.feedType === ExtendedFolderDtoFeedTypeEnum.PersonalWorkspace);
2112
+ if (!personalFolder) {
2113
+ const foldersDebug = folders.length === 0 ? "<none>" : folders.map((f) => `${f.displayName} (id=${f.id}, feedType=${f.feedType})`).join(", ");
2114
+ throw new Error(translate4.t("solutionpackager.publish.errors.orchestratorPersonalWorkspaceFolderNotFound", { folders: foldersDebug }));
2115
+ }
2116
+ if (personalFolder.id == null) {
2117
+ throw new Error(`Personal-workspace folder "${personalFolder.displayName}" has no id; cannot resolve its feed.`);
2118
+ }
2119
+ const match2 = feeds.find((f) => f.folderId === personalFolder.id);
2120
+ if (!match2) {
2121
+ this.throwFeedNotFound(destination, feeds);
2122
+ }
2123
+ return match2;
2124
+ }
2125
+ const expectedPurpose = destination.kind === "OrchestratorSharedLibraries" /* OrchestratorSharedLibraries */ ? PackageFeedDtoPurposeEnum.Libraries : PackageFeedDtoPurposeEnum.Processes;
2126
+ const match = feeds.find((f) => f.purpose === expectedPurpose && f.folderId == null);
2127
+ if (!match) {
2128
+ this.throwFeedNotFound(destination, feeds);
2129
+ }
2130
+ return match;
2131
+ }
2132
+ throwFeedNotFound(destination, feeds) {
2133
+ const available = feeds.length === 0 ? "<none>" : feeds.map((f) => `${f.name} (purpose=${f.purpose}, folderId=${f.folderId ?? "null"})`).join(", ");
2134
+ throw new Error(translate4.t("solutionpackager.publish.errors.orchestratorFeedNotFound", {
2135
+ kind: destination.kind,
2136
+ available
2137
+ }));
2138
+ }
2139
+ buildPublishUrl(orchestratorUrl, feed) {
2140
+ const baseUrl = feed.publishUrl ? feed.publishUrl : `${orchestratorUrl}${feed.purpose === PackageFeedDtoPurposeEnum.Libraries ? LIBRARIES_UPLOAD_PATH : PROCESSES_UPLOAD_PATH}`;
2141
+ const parsed = new URL(baseUrl);
2142
+ if (feed.id) {
2143
+ parsed.searchParams.set("feedId", feed.id);
2144
+ }
2145
+ return parsed.toString();
2146
+ }
2147
+ deriveOrchestratorUrl(connectionInfo) {
2148
+ const raw = connectionInfo.cloudUrl ?? "";
2149
+ let end = raw.length;
2150
+ while (end > 0 && raw.charCodeAt(end - 1) === 47)
2151
+ end--;
2152
+ return `${raw.slice(0, end)}${ORCHESTRATOR_RELATIVE_URL}`;
2153
+ }
2154
+ buildHeaders(destination, feed) {
2155
+ const headers = this.buildAuthHeaders(destination.connectionInfo);
2156
+ const folderHeader = destination.kind === "OrchestratorSharedLibraries" /* OrchestratorSharedLibraries */ ? destination.folderId : feed.folderId;
2157
+ if (folderHeader != null) {
2158
+ headers[HEADER_FOLDER_ID] = String(folderHeader);
2159
+ }
2160
+ if (feed.authenticationType === PackageFeedDtoAuthenticationTypeEnum.ApiKey && feed.apiKey) {
2161
+ headers[HEADER_NUGET_API_KEY] = feed.apiKey;
2162
+ }
2163
+ return headers;
2164
+ }
2165
+ buildCustomHeaders(destination) {
2166
+ const headers = this.buildAuthHeaders(destination.connectionInfo);
2167
+ if (destination.folderId != null) {
2168
+ headers[HEADER_FOLDER_ID] = String(destination.folderId);
2169
+ }
2170
+ if (destination.apiKey) {
2171
+ headers[HEADER_NUGET_API_KEY] = destination.apiKey;
2172
+ }
2173
+ return headers;
2174
+ }
2175
+ buildAuthHeaders(connectionInfo) {
2176
+ const headers = {};
2177
+ if (connectionInfo.accessToken) {
2178
+ headers.Authorization = `Bearer ${connectionInfo.accessToken}`;
2179
+ }
2180
+ if (connectionInfo.tenantId) {
2181
+ headers[HEADER_TENANT_ID2] = connectionInfo.tenantId;
2182
+ }
2183
+ return headers;
2184
+ }
2185
+ async safeReadBody(response) {
2186
+ try {
2187
+ const text = await response.text();
2188
+ return text.slice(0, 500);
2189
+ } catch {
2190
+ return "";
2191
+ }
2192
+ }
2193
+ }
2194
+
2195
+ // src/publish/services/project-publisher.ts
2196
+ class ProjectPublisher {
2197
+ fileSystem;
2198
+ logger;
2199
+ localFolderPublisher;
2200
+ nugetFeedPublisher;
2201
+ orchestratorPublisher;
2202
+ constructor(fileSystem, publishers) {
2203
+ this.fileSystem = fileSystem;
2204
+ this.logger = new ToolLogger("ProjectPublisher", "Publish");
2205
+ this.localFolderPublisher = publishers?.localFolder ?? new LocalFolderPublisher(fileSystem);
2206
+ this.nugetFeedPublisher = publishers?.nugetFeed ?? new NugetFeedPublisher(fileSystem);
2207
+ this.orchestratorPublisher = publishers?.orchestrator ?? new OrchestratorPublisher(fileSystem);
2208
+ }
2209
+ async publishAsync(options) {
2210
+ if (!options.packagePaths || options.packagePaths.length === 0) {
2211
+ return ToolResult4.error(ToolErrorCodes4.InternalError, translate5.t("solutionpackager.publish.errors.atLeastOnePackage"));
2212
+ }
2213
+ for (const path of options.packagePaths) {
2214
+ if (!await this.fileSystem.exists(path)) {
2215
+ return ToolResult4.error(ToolErrorCodes4.InternalError, translate5.t("solutionpackager.publish.errors.packageNotFound", { path }));
2216
+ }
2217
+ }
2218
+ try {
2219
+ const destination = options.destination;
2220
+ switch (destination.kind) {
2221
+ case "LocalFolder" /* LocalFolder */:
2222
+ return await this.localFolderPublisher.publishAsync(options.packagePaths, destination);
2223
+ case "NugetFeed" /* NugetFeed */:
2224
+ return await this.nugetFeedPublisher.publishAsync(options.packagePaths, destination);
2225
+ case "OrchestratorPersonalWorkspace" /* OrchestratorPersonalWorkspace */:
2226
+ case "OrchestratorTenantProcesses" /* OrchestratorTenantProcesses */:
2227
+ case "OrchestratorSharedLibraries" /* OrchestratorSharedLibraries */:
2228
+ case "OrchestratorCustom" /* OrchestratorCustom */:
2229
+ return await this.orchestratorPublisher.publishAsync(options.packagePaths, destination);
2230
+ default: {
2231
+ const exhaustive = destination;
2232
+ return ToolResult4.error(ToolErrorCodes4.InternalError, translate5.t("solutionpackager.publish.errors.unknownDestination", { destination: JSON.stringify(exhaustive) }));
2233
+ }
2234
+ }
2235
+ } catch (error) {
2236
+ const message = error instanceof Error ? error.message : String(error);
2237
+ const localized = translate5.t("solutionpackager.publish.errors.publishFailed", { message });
2238
+ this.logger.error(localized);
2239
+ return ToolResult4.error(ToolErrorCodes4.InternalError, localized);
2240
+ }
2241
+ }
2242
+ }
1117
2243
  // src/services/governance-policy-service.ts
2244
+ import {
2245
+ Path,
2246
+ translate as translate6
2247
+ } from "@uipath/solutionpackager-tool-core";
1118
2248
  var LICENSE_TYPES = {
1119
2249
  NoLicense: "NoLicense",
1120
2250
  Development: "Development",
@@ -1129,7 +2259,7 @@ var ACQUIRE_LICENSE_PATH = "/orchestrator_/api/StudioWeb/AcquireLicense";
1129
2259
  var GOVERNANCE_SUBFOLDER = "governance";
1130
2260
  var GOVERNANCE_FILE_NAME = "governance-policy.json";
1131
2261
  var errorMessage = (error) => error instanceof Error ? error.message : String(error);
1132
- var t = (key, params) => translate.t(`solutionpackager.governance.${key}`, params);
2262
+ var t = (key, params) => translate6.t(`solutionpackager.governance.${key}`, params);
1133
2263
 
1134
2264
  class GovernancePolicyService {
1135
2265
  fileSystem;
@@ -1149,7 +2279,7 @@ class GovernancePolicyService {
1149
2279
  this.logger.info(t("info.alreadyProvided"));
1150
2280
  return;
1151
2281
  }
1152
- const cloudUrl = connectionInfo?.cloudUrl;
2282
+ let cloudUrl = connectionInfo?.cloudUrl;
1153
2283
  const organizationId = connectionInfo?.organizationId;
1154
2284
  const tenantId = connectionInfo?.tenantId;
1155
2285
  const accessToken = connectionInfo?.accessToken;
@@ -1159,9 +2289,17 @@ class GovernancePolicyService {
1159
2289
  return;
1160
2290
  }
1161
2291
  const profileKey = validateOptions.profileKey ?? DEFAULT_PROFILE_KEY;
1162
- const orchestratorUrl = toRelativeUrl(cloudUrl);
1163
- const licenseType = await this.resolveLicenseTypeAsync(profileKey, orchestratorUrl, accessToken, cancellationToken);
1164
- const policy = await this.downloadPolicyAsync(organizationId, tenantId, accessToken, licenseType, profileKey, cancellationToken);
2292
+ let cloudOrigin;
2293
+ try {
2294
+ cloudOrigin = new URL(cloudUrl).origin;
2295
+ cloudUrl = cloudUrl.replace(/\/+$/, "");
2296
+ } catch {
2297
+ this.logger.warn(t("errors.connectionIncomplete"));
2298
+ validateOptions.governanceFileType = "Default" /* Default */;
2299
+ return;
2300
+ }
2301
+ const licenseType = await this.resolveLicenseTypeAsync(profileKey, cloudUrl, accessToken, cancellationToken);
2302
+ const policy = await this.downloadPolicyAsync(cloudOrigin, organizationId, tenantId, accessToken, licenseType, profileKey, cancellationToken);
1165
2303
  if (!policy) {
1166
2304
  validateOptions.governanceFileType = "Default" /* Default */;
1167
2305
  return;
@@ -1179,8 +2317,8 @@ class GovernancePolicyService {
1179
2317
  validateOptions.governanceFileType = "Default" /* Default */;
1180
2318
  }
1181
2319
  }
1182
- async downloadPolicyAsync(organizationId, tenantId, accessToken, licenseType, profileKey, cancellationToken) {
1183
- const policyUrl = `/${organizationId}/roboticsops_` + `/api/Policy/license/${licenseType}/product/${profileKey}/tenant/${tenantId}`;
2320
+ async downloadPolicyAsync(cloudOrigin, organizationId, tenantId, accessToken, licenseType, profileKey, cancellationToken) {
2321
+ const policyUrl = `${cloudOrigin}/${organizationId}/roboticsops_` + `/api/Policy/license/${licenseType}/product/${profileKey}/tenant/${tenantId}`;
1184
2322
  this.logger.info(t("info.downloading", { url: policyUrl }));
1185
2323
  try {
1186
2324
  const response = await this.fetchFn(policyUrl, {
@@ -1212,11 +2350,11 @@ class GovernancePolicyService {
1212
2350
  return null;
1213
2351
  }
1214
2352
  }
1215
- async resolveLicenseTypeAsync(profileKey, orchestratorUrl, accessToken, cancellationToken) {
2353
+ async resolveLicenseTypeAsync(profileKey, cloudUrl, accessToken, cancellationToken) {
1216
2354
  const isStudioWeb = profileKey === DEFAULT_PROFILE_KEY;
1217
2355
  const fallback = isStudioWeb ? LICENSE_TYPES.NoLicense : LICENSE_TYPES.Development;
1218
2356
  try {
1219
- const response = await this.fetchFn(`${orchestratorUrl}${ACQUIRE_LICENSE_PATH}`, {
2357
+ const response = await this.fetchFn(`${cloudUrl}${ACQUIRE_LICENSE_PATH}`, {
1220
2358
  method: "POST",
1221
2359
  headers: { Authorization: `Bearer ${accessToken}` },
1222
2360
  signal: cancellationToken
@@ -1251,7 +2389,7 @@ class GovernancePolicyService {
1251
2389
  }
1252
2390
  // src/services/pack-service.ts
1253
2391
  class PackService {
1254
- disallowedCharsRegex = /[^\w.-]/g;
2392
+ disallowedCharsRegex = /[^\p{L}\p{N}_.-]/gu;
1255
2393
  spacesDotRegex = /[\s.]+/g;
1256
2394
  dotDashRegex = /\.{0,10}[-:]\.{0,10}/g;
1257
2395
  MaxPackageIdLength = 100;
@@ -1268,9 +2406,9 @@ class PackService {
1268
2406
  }
1269
2407
  // src/services/packager-parameters-validator.ts
1270
2408
  import {
1271
- ToolErrorCodes,
1272
- ToolResult,
1273
- translate as translate2
2409
+ ToolErrorCodes as ToolErrorCodes5,
2410
+ ToolResult as ToolResult5,
2411
+ translate as translate7
1274
2412
  } from "@uipath/solutionpackager-tool-core";
1275
2413
  class PackagerParametersValidator {
1276
2414
  logger;
@@ -1280,52 +2418,52 @@ class PackagerParametersValidator {
1280
2418
  this.fileSystem = fileSystem;
1281
2419
  }
1282
2420
  async validateAsync(_options, _cancellationToken) {
1283
- return ToolResult.success();
2421
+ return ToolResult5.success();
1284
2422
  }
1285
2423
  validateDestinationPath(destinationPath) {
1286
2424
  if (!destinationPath) {
1287
- const error = translate2.t("solutionpackager.validator.errors.destinationNotDefined");
2425
+ const error = translate7.t("solutionpackager.validator.errors.destinationNotDefined");
1288
2426
  this.logger.error(error);
1289
- return ToolResult.error(ToolErrorCodes.InternalError, error);
2427
+ return ToolResult5.error(ToolErrorCodes5.InternalError, error);
1290
2428
  }
1291
- return ToolResult.success();
2429
+ return ToolResult5.success();
1292
2430
  }
1293
2431
  async validateGovernanceOptions(validateOptions) {
1294
2432
  if (validateOptions.governanceFileType === "Default" /* Default */) {
1295
2433
  if (validateOptions.governanceFilePath) {
1296
2434
  this.logger.warn(`Governance file path '${validateOptions.governanceFilePath}' will be ignored when governance file type is Default`);
1297
2435
  }
1298
- return ToolResult.success();
2436
+ return ToolResult5.success();
1299
2437
  }
1300
2438
  if (!validateOptions.governanceFilePath) {
1301
- const error = translate2.t("solutionpackager.validator.errors.governanceRequired");
2439
+ const error = translate7.t("solutionpackager.validator.errors.governanceRequired");
1302
2440
  this.logger.error(error);
1303
- return ToolResult.error(ToolErrorCodes.InternalError, error);
2441
+ return ToolResult5.error(ToolErrorCodes5.InternalError, error);
1304
2442
  }
1305
2443
  try {
1306
2444
  const stat = await this.fileSystem.stat(validateOptions.governanceFilePath);
1307
2445
  if (!stat) {
1308
- const error = translate2.t("solutionpackager.validator.errors.governanceFileInfo", {
2446
+ const error = translate7.t("solutionpackager.validator.errors.governanceFileInfo", {
1309
2447
  path: validateOptions.governanceFilePath
1310
2448
  });
1311
2449
  this.logger.error(error);
1312
- return ToolResult.error(ToolErrorCodes.InternalError, error);
2450
+ return ToolResult5.error(ToolErrorCodes5.InternalError, error);
1313
2451
  }
1314
2452
  if (stat.isDirectory()) {
1315
- const error = translate2.t("solutionpackager.validator.errors.governanceInvalidFile", {
2453
+ const error = translate7.t("solutionpackager.validator.errors.governanceInvalidFile", {
1316
2454
  path: validateOptions.governanceFilePath
1317
2455
  });
1318
2456
  this.logger.error(error);
1319
- return ToolResult.error(ToolErrorCodes.InternalError, error);
2457
+ return ToolResult5.error(ToolErrorCodes5.InternalError, error);
1320
2458
  }
1321
2459
  } catch (error) {
1322
2460
  const errorMessage2 = error instanceof Error ? error.message : String(error);
1323
2461
  const errorLog = `Governance file not found or inaccessible: ${validateOptions.governanceFilePath}. Error: ${errorMessage2}`;
1324
2462
  this.logger.error(errorLog);
1325
- return ToolResult.error(ToolErrorCodes.InternalError, errorLog);
2463
+ return ToolResult5.error(ToolErrorCodes5.InternalError, errorLog);
1326
2464
  }
1327
2465
  this.logger.info(`Using Studio governance file: ${validateOptions.governanceFilePath}`);
1328
- return ToolResult.success();
2466
+ return ToolResult5.success();
1329
2467
  }
1330
2468
  }
1331
2469
  // src/services/project-build-options-validator.ts
@@ -1337,22 +2475,22 @@ class ProjectBuildOptionsValidator extends PackagerParametersValidator {
1337
2475
  // src/services/project-loader.ts
1338
2476
  import {
1339
2477
  Path as Path2,
2478
+ ProjectTool,
1340
2479
  ProjectTypes,
1341
- translate as translate3
2480
+ translate as translate8
1342
2481
  } from "@uipath/solutionpackager-tool-core";
1343
2482
 
1344
2483
  class ProjectLoader {
1345
2484
  fileSystem;
1346
- static ProjectFileName = "project.uiproj";
1347
2485
  static WebAppManifestFileName = "webAppManifest.json";
1348
2486
  constructor(fileSystem) {
1349
2487
  this.fileSystem = fileSystem;
1350
2488
  }
1351
2489
  async loadProject(projectPath) {
1352
2490
  if (!projectPath) {
1353
- throw new Error(translate3.t("solutionpackager.projectLoader.errors.pathRequired"));
2491
+ throw new Error(translate8.t("solutionpackager.projectLoader.errors.pathRequired"));
1354
2492
  }
1355
- const projectFilePath = Path2.join(projectPath, ProjectLoader.ProjectFileName);
2493
+ const projectFilePath = Path2.join(projectPath, ProjectTool.ProjectFileName);
1356
2494
  const projectFileExists = await this.fileSystem.exists(projectFilePath);
1357
2495
  if (projectFileExists) {
1358
2496
  return await this.loadFromProjectFile(projectPath, projectFilePath);
@@ -1362,8 +2500,8 @@ class ProjectLoader {
1362
2500
  if (webAppManifestExists) {
1363
2501
  return this.loadFromWebAppManifest(projectPath, webAppManifestPath);
1364
2502
  }
1365
- throw new Error(translate3.t("solutionpackager.projectLoader.errors.noProjectFile", {
1366
- projectFile: ProjectLoader.ProjectFileName,
2503
+ throw new Error(translate8.t("solutionpackager.projectLoader.errors.noProjectFile", {
2504
+ projectFile: ProjectTool.ProjectFileName,
1367
2505
  manifestFile: ProjectLoader.WebAppManifestFileName,
1368
2506
  path: projectPath
1369
2507
  }));
@@ -1371,7 +2509,7 @@ class ProjectLoader {
1371
2509
  async loadFromProjectFile(projectPath, projectFilePath) {
1372
2510
  const fileContent = await this.fileSystem.readFile(projectFilePath);
1373
2511
  if (!fileContent) {
1374
- throw new Error(translate3.t("solutionpackager.projectLoader.errors.readFailed", {
2512
+ throw new Error(translate8.t("solutionpackager.projectLoader.errors.readFailed", {
1375
2513
  path: projectFilePath
1376
2514
  }));
1377
2515
  }
@@ -1379,7 +2517,7 @@ class ProjectLoader {
1379
2517
  const projectData = JSON.parse(json);
1380
2518
  const projectType = projectData?.ProjectType || projectData?.type;
1381
2519
  if (!projectData || !projectType) {
1382
- throw new Error(translate3.t("solutionpackager.projectLoader.errors.invalidProject", {
2520
+ throw new Error(translate8.t("solutionpackager.projectLoader.errors.invalidProject", {
1383
2521
  path: projectFilePath
1384
2522
  }));
1385
2523
  }
@@ -1407,9 +2545,9 @@ import {
1407
2545
  Path as Path3,
1408
2546
  TargetFramework,
1409
2547
  TemporaryStorageService,
1410
- ToolErrorCodes as ToolErrorCodes3,
1411
- ToolResult as ToolResult3,
1412
- translate as translate4,
2548
+ ToolErrorCodes as ToolErrorCodes7,
2549
+ ToolResult as ToolResult7,
2550
+ translate as translate9,
1413
2551
  ZipService
1414
2552
  } from "@uipath/solutionpackager-tool-core";
1415
2553
 
@@ -1456,7 +2594,7 @@ class ProjectPackOptionsBuilder {
1456
2594
  policyFilePath: parameters.validateOptions.governanceFilePath,
1457
2595
  policyFileType: parameters.validateOptions.governanceFileType,
1458
2596
  outputPath: parameters.outputPath,
1459
- outputType: undefined,
2597
+ outputType: parameters.outputType,
1460
2598
  projectType: project.type,
1461
2599
  package: packageInfo,
1462
2600
  skipDependencyOptimization: parameters.packOptions?.skipDependencyOptimization ?? false,
@@ -1479,8 +2617,8 @@ class ProjectPackOptionsValidator extends ProjectBuildOptionsValidator {
1479
2617
 
1480
2618
  // src/services/project-tool-executor.ts
1481
2619
  import {
1482
- ToolErrorCodes as ToolErrorCodes2,
1483
- ToolResult as ToolResult2
2620
+ ToolErrorCodes as ToolErrorCodes6,
2621
+ ToolResult as ToolResult6
1484
2622
  } from "@uipath/solutionpackager-tool-core";
1485
2623
  class ProjectToolExecutor {
1486
2624
  toolsFactory;
@@ -1538,12 +2676,12 @@ class ProjectToolExecutor {
1538
2676
  }
1539
2677
  }
1540
2678
  } catch (error) {
1541
- return ToolResult2.error(ToolErrorCodes2.InternalError, error instanceof Error ? error.message : String(error));
2679
+ return ToolResult6.error(ToolErrorCodes6.InternalError, error instanceof Error ? error.message : String(error));
1542
2680
  }
1543
2681
  }
1544
2682
  async signPackagesAsync(packages, signingInfo) {
1545
2683
  if (!this.packageSignService) {
1546
- return ToolResult2.error(ToolErrorCodes2.InternalError, "Package signing is required but signing service is not available. Package signing requires dotnet CLI to be installed in Node.js environment.");
2684
+ return ToolResult6.error(ToolErrorCodes6.InternalError, "Package signing is required but signing service is not available. Package signing requires dotnet CLI to be installed in Node.js environment.");
1547
2685
  }
1548
2686
  const certificatePath = signingInfo.certificatePath;
1549
2687
  const signResults = await Promise.all(packages.map((packagePath) => this.packageSignService?.signPackageAsync(packagePath, certificatePath, signingInfo.certificatePassword, signingInfo.timestampServer)));
@@ -1551,7 +2689,7 @@ class ProjectToolExecutor {
1551
2689
  if (failedResult) {
1552
2690
  return failedResult;
1553
2691
  }
1554
- return ToolResult2.success();
2692
+ return ToolResult6.success();
1555
2693
  }
1556
2694
  }
1557
2695
 
@@ -1630,10 +2768,6 @@ class ProjectPackager {
1630
2768
  this.projectLoader = new ProjectLoader(this.fileSystem);
1631
2769
  this.governancePolicyService = new GovernancePolicyService(this.fileSystem, this.temporaryStorage);
1632
2770
  }
1633
- async canPackProjectAsync(projectPath) {
1634
- const project = await this.projectLoader.loadProject(projectPath);
1635
- return this.repository.canHandleProject(project.type);
1636
- }
1637
2771
  async setupAsync(input, operationId) {
1638
2772
  this.telemetryService.setOperationId(operationId);
1639
2773
  await this.temporaryStorage.cleanup();
@@ -1708,7 +2842,7 @@ class ProjectPackager {
1708
2842
  policyFilePath: options.validateOptions.governanceFilePath,
1709
2843
  policyFileType: options.validateOptions.governanceFileType,
1710
2844
  outputPath: options.outputPath,
1711
- outputType: undefined,
2845
+ outputType: options.outputType,
1712
2846
  projectType: uiPathProject.Type
1713
2847
  };
1714
2848
  return await this.projectExecutor.buildAsync(buildOptions, uiPathProject, undefined, cancellationToken);
@@ -1738,7 +2872,7 @@ class ProjectPackager {
1738
2872
  result = await this.projectExecutor.packAsync(projectPackOptions, uiPathProject, context, options.signingInfo, cancellationToken);
1739
2873
  if (result.isSuccess && result.packages.length > 0) {
1740
2874
  const destinationPackages = await this.copyPackagesToDestination(result.packages, options.destinationPath, projectPackOptions.package);
1741
- result = new ToolResult3(ToolErrorCodes3.Success, undefined, destinationPackages);
2875
+ result = new ToolResult7(ToolErrorCodes7.Success, undefined, destinationPackages);
1742
2876
  }
1743
2877
  if (result.isSuccess) {
1744
2878
  this.logger.info(`Project pack completed successfully. Packages: ${result.packages.join(", ")}`);
@@ -1749,7 +2883,7 @@ class ProjectPackager {
1749
2883
  } catch (error) {
1750
2884
  const errorMessage2 = error instanceof Error ? error.message : String(error);
1751
2885
  this.logger.error(`Processing error: ${errorMessage2}`);
1752
- return ToolResult3.error(ToolErrorCodes3.InternalError, `Project pack failed: ${errorMessage2}`);
2886
+ return ToolResult7.error(ToolErrorCodes7.InternalError, `Project pack failed: ${errorMessage2}`);
1753
2887
  } finally {
1754
2888
  await this.temporaryStorage.cleanup();
1755
2889
  }
@@ -1757,7 +2891,7 @@ class ProjectPackager {
1757
2891
  }
1758
2892
  async getPackageStreamsAsync(result) {
1759
2893
  if (!result.isSuccess) {
1760
- throw new Error(translate4.t("solutionpackager.packager.errors.failedToGetStreams", {
2894
+ throw new Error(translate9.t("solutionpackager.packager.errors.failedToGetStreams", {
1761
2895
  errorCode: result.errorCode,
1762
2896
  message: result.message ?? ""
1763
2897
  }));
@@ -1769,7 +2903,7 @@ class ProjectPackager {
1769
2903
  for (const packagePath of result.packages) {
1770
2904
  const data = await this.fileSystem.readFile(packagePath);
1771
2905
  if (!data) {
1772
- throw new Error(translate4.t("solutionpackager.packager.errors.failedToReadPackage", {
2906
+ throw new Error(translate9.t("solutionpackager.packager.errors.failedToReadPackage", {
1773
2907
  path: packagePath
1774
2908
  }));
1775
2909
  }
@@ -1798,7 +2932,7 @@ class ProjectPackager {
1798
2932
  } catch (error) {
1799
2933
  const errorMessage2 = error instanceof Error ? error.message : String(error);
1800
2934
  this.logger.error(`Processing error: ${errorMessage2}`);
1801
- return ToolResult3.error(ToolErrorCodes3.InternalError, `Project ${operationName.toLowerCase()} failed: ${errorMessage2}`);
2935
+ return ToolResult7.error(ToolErrorCodes7.InternalError, `Project ${operationName.toLowerCase()} failed: ${errorMessage2}`);
1802
2936
  } finally {
1803
2937
  await this.temporaryStorage.cleanup();
1804
2938
  }
@@ -1827,7 +2961,7 @@ class ProjectPackager {
1827
2961
  const destPath = Path3.join(destinationPath, fileName);
1828
2962
  const data = await this.fileSystem.readFile(sourcePath);
1829
2963
  if (!data) {
1830
- throw new Error(translate4.t("solutionpackager.packager.errors.failedToReadPackage", { path: sourcePath }));
2964
+ throw new Error(translate9.t("solutionpackager.packager.errors.failedToReadPackage", { path: sourcePath }));
1831
2965
  }
1832
2966
  await this.fileSystem.writeFile(destPath, data);
1833
2967
  return destPath;
@@ -1876,10 +3010,13 @@ export {
1876
3010
  TelemetryService,
1877
3011
  TelemetryNames,
1878
3012
  RulesConfigFileType,
3013
+ PublishDestinationKind,
1879
3014
  ProjectValidateOptionsValidator,
1880
3015
  ProjectValidateOptions,
1881
3016
  ProjectToolExecutor,
1882
3017
  ProjectRestoreOptions,
3018
+ ProjectPublisher,
3019
+ ProjectPublishOptions,
1883
3020
  ProjectPackager,
1884
3021
  ProjectPackOptions,
1885
3022
  ProjectLoader,