@uipath/gov-tool 1.204.0-preview.254 → 1.205.0-preview.256

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 (2) hide show
  1. package/dist/tool.js +165 -50
  2. package/package.json +2 -2
package/dist/tool.js CHANGED
@@ -915,6 +915,16 @@ class NodeFileSystem {
915
915
  async rename(oldPath, newPath) {
916
916
  await fs6.rename(oldPath, newPath);
917
917
  }
918
+ async isSymbolicLink(filePath) {
919
+ try {
920
+ return (await fs6.lstat(filePath)).isSymbolicLink();
921
+ } catch (error) {
922
+ if (this.isEnoent(error) || this.hasErrnoCode(error, "ENOTDIR")) {
923
+ return false;
924
+ }
925
+ throw error;
926
+ }
927
+ }
918
928
  async realpath(filePath) {
919
929
  try {
920
930
  return await fs6.realpath(filePath);
@@ -7654,7 +7664,7 @@ var package_default = {
7654
7664
  name: "@uipath/gov-tool",
7655
7665
  author: "UiPath",
7656
7666
  license: "SEE LICENSE IN LICENSE.txt",
7657
- version: "1.204.0-preview.254",
7667
+ version: "1.205.0-preview.256",
7658
7668
  description: "Manage UiPath governance — AOps policies, Access policies, and compliance packs.",
7659
7669
  private: false,
7660
7670
  repository: {
@@ -7786,7 +7796,9 @@ var ErrorDimensions = {
7786
7796
  Result: "Result",
7787
7797
  ErrorCode: "ErrorCode",
7788
7798
  Retry: "Retry",
7789
- ErrorMessage: "ErrorMessage"
7799
+ ErrorMessage: "ErrorMessage",
7800
+ HttpStatus: "HttpStatus",
7801
+ UpstreamErrorCode: "UpstreamErrorCode"
7790
7802
  };
7791
7803
  var AuthDimensions = {
7792
7804
  AuthenticationMethod: "AuthenticationMethod",
@@ -8210,7 +8222,7 @@ var package_default2 = {
8210
8222
  name: "@uipath/authz-sdk",
8211
8223
  author: "UiPath",
8212
8224
  license: "SEE LICENSE IN LICENSE.txt",
8213
- version: "1.204.0",
8225
+ version: "1.205.0",
8214
8226
  description: "SDK for the UiPath Authorization Service API.",
8215
8227
  repository: {
8216
8228
  type: "git",
@@ -8921,22 +8933,12 @@ var resolveConfigAsync = async ({
8921
8933
  baseUrl = DEFAULT_BASE_URL;
8922
8934
  }
8923
8935
  baseUrl = normalizeAndValidateBaseUrl(baseUrl);
8924
- let clientId = customClientId;
8925
- if (!clientId && fileAuth.clientId) {
8926
- clientId = fileAuth.clientId;
8927
- }
8928
- if (!clientId) {
8929
- clientId = DEFAULT_CLIENT_ID;
8930
- }
8931
- let clientSecret = customClientSecret;
8932
- if (!clientSecret && fileAuth.clientSecret) {
8933
- clientSecret = fileAuth.clientSecret;
8934
- }
8935
- const isExternalAppAuth = clientId !== DEFAULT_CLIENT_ID && (Boolean(clientSecret) || Boolean(customClientAssertion));
8936
+ const clientId = customClientId || DEFAULT_CLIENT_ID;
8937
+ const isExternalAppAuth = clientId !== DEFAULT_CLIENT_ID && (Boolean(customClientSecret) || Boolean(customClientAssertion));
8936
8938
  const scopes = resolveScopes(isExternalAppAuth, customScopes, fileAuth.scopes);
8937
8939
  return {
8938
8940
  clientId,
8939
- clientSecret,
8941
+ clientSecret: customClientSecret,
8940
8942
  scopes,
8941
8943
  baseUrl,
8942
8944
  authorizationEndpoint: `${baseUrl}/identity_/connect/authorize`,
@@ -9111,6 +9113,16 @@ var resolveIdentityType = (claims, authFlow, email) => {
9111
9113
  }
9112
9114
  return;
9113
9115
  };
9116
+ var resolveApplicationSubtype = (claims, authFlow) => {
9117
+ switch (asString(claims?.sub_type)) {
9118
+ case "service.external":
9119
+ return "External";
9120
+ case "service.internal":
9121
+ return "Internal";
9122
+ default:
9123
+ return authFlow === "client_credentials" || authFlow === "federated_credentials" ? "External" : undefined;
9124
+ }
9125
+ };
9114
9126
  var looksLikeEmail = (value) => value?.includes("@") ?? false;
9115
9127
  var pickEmail = (claims) => {
9116
9128
  for (const candidate of [claims?.email, claims?.preferred_username]) {
@@ -9152,6 +9164,12 @@ var resolveSessionIdentity = (accessToken, authFlow) => {
9152
9164
  const clientId = asString(claims?.client_id);
9153
9165
  if (clientId)
9154
9166
  identity.clientId = clientId;
9167
+ const subType = asString(claims?.sub_type);
9168
+ if (subType)
9169
+ identity.subType = subType;
9170
+ const applicationSubtype = resolveApplicationSubtype(claims, authFlow);
9171
+ if (applicationSubtype)
9172
+ identity.applicationSubtype = applicationSubtype;
9155
9173
  return identity;
9156
9174
  };
9157
9175
  var readTokenScopes = (accessToken) => accessToken ? pickScopes(decodeClaims(accessToken)) : undefined;
@@ -9446,6 +9464,40 @@ var tryRobotClientFallback = async (options = {}) => {
9446
9464
  }
9447
9465
  };
9448
9466
 
9467
+ // ../../auth/src/tenantSelection.ts
9468
+ var LOGIN_STATUS_HINT = "Run 'uip login status' to see the organization the CLI is signed in to.";
9469
+ var organizationHint = (organizationId) => `The request used '${organizationId}' as the organization. ${LOGIN_STATUS_HINT}`;
9470
+ var IDENTIFIER_STATUSES = new Set([400, 403, 404]);
9471
+ var describeNonJsonResponse = (organizationId, response, parseError) => {
9472
+ if (response.redirected) {
9473
+ return `Could not find organization '${organizationId}': the request was ` + `redirected to a sign-in page instead of the organization's tenant ` + `list. ${LOGIN_STATUS_HINT}`;
9474
+ }
9475
+ const contentType = response.headers.get("content-type") ?? "unknown";
9476
+ return `The organization service returned a '${contentType}' response instead ` + `of JSON: ${parseError.message}. ${organizationHint(organizationId)}`;
9477
+ };
9478
+ var fetchTenantsAndOrganizations = async (baseUrl, accessToken, organizationId, signal) => {
9479
+ const url = `${baseUrl}/${organizationId}/portal_/api/filtering/leftnav/tenantsAndOrganizationInfo`;
9480
+ const response = await fetch(url, {
9481
+ headers: {
9482
+ Authorization: `Bearer ${accessToken}`
9483
+ },
9484
+ ...signal ? { signal } : {}
9485
+ });
9486
+ if (!response.ok) {
9487
+ if (response.status === 401) {
9488
+ throw new Error(`Unauthorized: the access token was rejected, it was not ` + `issued for organization '${organizationId}', or ` + `'${organizationId}' was not accepted as an organization ` + `URL segment in this environment. ` + LOGIN_STATUS_HINT);
9489
+ }
9490
+ const errorText = await response.text();
9491
+ const message = `Failed to get tenants and organizations: ${response.status} ${errorText}`;
9492
+ throw new Error(IDENTIFIER_STATUSES.has(response.status) ? `${message}. ${organizationHint(organizationId)}` : message);
9493
+ }
9494
+ const [parseError, data] = await catchError(response.json());
9495
+ if (parseError) {
9496
+ throw new Error(describeNonJsonResponse(organizationId, response, parseError));
9497
+ }
9498
+ return data;
9499
+ };
9500
+
9449
9501
  // ../../auth/src/tokenRefresh.ts
9450
9502
  var TOKEN_REFRESH_REAUTHENTICATE_MESSAGE = "Token refresh failed. Run 'uip login' to re-authenticate.";
9451
9503
 
@@ -9660,6 +9712,8 @@ var saveEnvFileAsync = async ({
9660
9712
  };
9661
9713
 
9662
9714
  // ../../auth/src/loginStatus.ts
9715
+ var defaultRobotTenantIdCache = new Map;
9716
+ var ROBOT_TENANT_LOOKUP_TIMEOUT_MS = 5000;
9663
9717
  var getLoginStatusAsync = async (options = {}) => {
9664
9718
  return getLoginStatusWithDeps(options);
9665
9719
  };
@@ -9672,12 +9726,20 @@ var getLoginStatusWithDeps = async (options = {}, deps = {}) => {
9672
9726
  refreshToken: refreshTokenFn = refreshAccessToken,
9673
9727
  resolveConfig = resolveConfigAsync,
9674
9728
  robotFallback = tryRobotClientFallback,
9729
+ fetchTenantsAndOrgs = fetchTenantsAndOrganizations,
9730
+ robotTenantIdCache = defaultRobotTenantIdCache,
9731
+ robotTenantLookupTimeoutMs = ROBOT_TENANT_LOOKUP_TIMEOUT_MS,
9675
9732
  loadBreaker = loadRefreshBreaker,
9676
9733
  saveBreaker = saveRefreshBreaker,
9677
9734
  clearBreaker = clearRefreshBreaker
9678
9735
  } = deps;
9736
+ const robotDeps = {
9737
+ fetchTenantsAndOrgs,
9738
+ cache: robotTenantIdCache,
9739
+ lookupTimeoutMs: robotTenantLookupTimeoutMs
9740
+ };
9679
9741
  if (isRobotAuthEnforced()) {
9680
- return resolveRobotEnforcedStatus(robotFallback);
9742
+ return resolveRobotEnforcedStatus(robotFallback, robotDeps);
9681
9743
  }
9682
9744
  if (isEnvAuthEnabled()) {
9683
9745
  return readAuthFromEnv();
@@ -9695,7 +9757,7 @@ var getLoginStatusWithDeps = async (options = {}, deps = {}) => {
9695
9757
  hint: `No credentials found for profile "${activeProfile}". Run 'uip login --profile ${activeProfile}' to authenticate this profile.`
9696
9758
  };
9697
9759
  }
9698
- return resolveBorrowedRobotStatus(robotFallback);
9760
+ return resolveBorrowedRobotStatus(robotFallback, robotDeps);
9699
9761
  }
9700
9762
  const loaded = await loadFileCredentials(loadEnvFile, absolutePath);
9701
9763
  if ("status" in loaded) {
@@ -9737,7 +9799,7 @@ var getLoginStatusWithDeps = async (options = {}, deps = {}) => {
9737
9799
  }
9738
9800
  return buildFileStatus(tokens, credentials, globalHint);
9739
9801
  };
9740
- async function resolveRobotEnforcedStatus(robotFallback) {
9802
+ async function resolveRobotEnforcedStatus(robotFallback, deps) {
9741
9803
  if (isEnvAuthEnabled()) {
9742
9804
  throw new EnvAuthConfigError(`${ENV_AUTH_ENABLE_VAR}=true and ${ENFORCE_ROBOT_AUTH_VAR}=true ` + `are mutually exclusive. Unset one of them and re-run.`);
9743
9805
  }
@@ -9748,11 +9810,11 @@ async function resolveRobotEnforcedStatus(robotFallback) {
9748
9810
  hint: `${ENFORCE_ROBOT_AUTH_VAR}=true but the UiPath Robot ` + `session is unavailable. Start and sign in to the Assistant, ` + `or unset ${ENFORCE_ROBOT_AUTH_VAR} to fall back to file or ` + `env-var authentication.`
9749
9811
  };
9750
9812
  }
9751
- return buildRobotStatus(robotCreds);
9813
+ return buildRobotStatus(robotCreds, deps);
9752
9814
  }
9753
- async function resolveBorrowedRobotStatus(robotFallback) {
9815
+ async function resolveBorrowedRobotStatus(robotFallback, deps) {
9754
9816
  const robotCreds = await robotFallback();
9755
- return robotCreds ? buildRobotStatus(robotCreds) : { loginStatus: "Not logged in" };
9817
+ return robotCreds ? buildRobotStatus(robotCreds, deps) : { loginStatus: "Not logged in" };
9756
9818
  }
9757
9819
  async function loadFileCredentials(loadEnvFile, absolutePath) {
9758
9820
  let credentials;
@@ -9887,9 +9949,10 @@ function identityFields(accessToken, credentials) {
9887
9949
  ...scopes ? { scopes } : {}
9888
9950
  };
9889
9951
  }
9890
- function buildRobotStatus(robotCreds) {
9952
+ async function buildRobotStatus(robotCreds, deps) {
9891
9953
  const identity = resolveSessionIdentity(robotCreds.accessToken);
9892
9954
  const scopes = readTokenScopes(robotCreds.accessToken);
9955
+ const tenant = robotCreds.tenantId ? { tenantId: robotCreds.tenantId } : await resolveRobotTenantId(robotCreds, deps);
9893
9956
  return {
9894
9957
  loginStatus: "Logged in",
9895
9958
  accessToken: robotCreds.accessToken,
@@ -9897,14 +9960,62 @@ function buildRobotStatus(robotCreds) {
9897
9960
  organizationName: robotCreds.organizationName,
9898
9961
  organizationId: robotCreds.organizationId,
9899
9962
  tenantName: robotCreds.tenantName,
9900
- tenantId: robotCreds.tenantId,
9963
+ tenantId: tenant.tenantId,
9901
9964
  issuer: robotCreds.issuer,
9902
9965
  expiration: getTokenExpiration(robotCreds.accessToken),
9903
9966
  source: "robot" /* Robot */,
9967
+ ...tenant.hint ? { hint: tenant.hint } : {},
9904
9968
  ...identity ? { identity } : {},
9905
9969
  ...scopes ? { scopes } : {}
9906
9970
  };
9907
9971
  }
9972
+ async function resolveRobotTenantId(robotCreds, deps) {
9973
+ const { baseUrl, accessToken, tenantName } = robotCreds;
9974
+ const organization = robotCreds.organizationName ?? robotCreds.organizationId;
9975
+ if (!tenantName || !organization) {
9976
+ return {};
9977
+ }
9978
+ const key = `${baseUrl}|${organization}|${tenantName}|${accessToken}`;
9979
+ let pending = deps.cache.get(key);
9980
+ if (!pending) {
9981
+ pending = catchError(lookupRobotTenantId({ baseUrl, accessToken, organization, tenantName }, deps)).then(([error, resolution]) => {
9982
+ const settled = error ? { hint: tenantLookupFailureHint(tenantName, error.message) } : resolution;
9983
+ if (!settled.tenantId) {
9984
+ deps.cache.delete(key);
9985
+ }
9986
+ return settled;
9987
+ });
9988
+ deps.cache.set(key, pending);
9989
+ }
9990
+ return pending;
9991
+ }
9992
+ async function lookupRobotTenantId(target, deps) {
9993
+ const { baseUrl, accessToken, organization, tenantName } = target;
9994
+ const [error, data] = await catchError(deps.fetchTenantsAndOrgs(baseUrl, accessToken, organization, AbortSignal.timeout(deps.lookupTimeoutMs)));
9995
+ if (error) {
9996
+ const reason = error.name === "TimeoutError" ? `the tenant list did not answer within ${deps.lookupTimeoutMs} ms.` : error.message;
9997
+ return { hint: tenantLookupFailureHint(tenantName, reason) };
9998
+ }
9999
+ const rows = data?.tenants;
10000
+ const tenants = Array.isArray(rows) ? rows.filter((tenant) => typeof tenant?.id === "string" && typeof tenant?.name === "string") : [];
10001
+ const wantedName = decodePathSegment(tenantName);
10002
+ const wanted = wantedName.toLowerCase();
10003
+ const match = tenants.find((tenant) => tenant.name === wantedName) ?? tenants.find((tenant) => tenant.name.toLowerCase() === wanted);
10004
+ if (!match) {
10005
+ const names = tenants.map((tenant) => tenant.name).join(", ");
10006
+ return {
10007
+ hint: `The Robot session targets tenant '${tenantName}', but ` + `organization '${organization}' lists no tenant of that name` + `${names ? ` (available: ${names})` : ""}. Commands that need ` + `the tenant id will fail until it can be resolved.`
10008
+ };
10009
+ }
10010
+ return { tenantId: match.id };
10011
+ }
10012
+ function tenantLookupFailureHint(tenantName, reason) {
10013
+ return `Could not resolve the id of tenant '${tenantName}' from the ` + `Robot session: ${reason} Commands that need the tenant id will ` + `fail until it can be resolved.`;
10014
+ }
10015
+ function decodePathSegment(segment) {
10016
+ const [error, decoded] = catchError(() => decodeURIComponent(segment));
10017
+ return error ? segment : decoded;
10018
+ }
9908
10019
  var isFileNotFoundError = (error) => {
9909
10020
  if (!(error instanceof Object))
9910
10021
  return false;
@@ -10148,8 +10259,6 @@ init_constants();
10148
10259
  // ../../auth/src/interactive.ts
10149
10260
  init_src();
10150
10261
  init_constants();
10151
- // ../../auth/src/tenantSelection.ts
10152
- var IDENTIFIER_STATUSES = new Set([400, 403, 404]);
10153
10262
 
10154
10263
  // ../../auth/src/selectTenant.ts
10155
10264
  var TENANT_SELECTION_REQUIRED_CODE = "TENANT_SELECTION_REQUIRED";
@@ -11160,7 +11269,7 @@ function setGlobalLogFilePath(path3) {
11160
11269
  function getGlobalLogFilePath() {
11161
11270
  return logFilePathSlot.get("");
11162
11271
  }
11163
- var DEFAULT_LOG_LEVEL = 3 /* ERROR */;
11272
+ var DEFAULT_LOG_LEVEL = 2 /* WARN */;
11164
11273
 
11165
11274
  class SimpleLogger {
11166
11275
  __brand = "SimpleLogger";
@@ -12267,7 +12376,9 @@ var CLI_ERROR_CODES = [
12267
12376
  "timeout",
12268
12377
  "server_error",
12269
12378
  "method_not_allowed",
12379
+ "not_supported",
12270
12380
  "configuration_error",
12381
+ "execution_failed",
12271
12382
  "unknown_error"
12272
12383
  ];
12273
12384
  var RETRY_HINTS = [
@@ -13224,7 +13335,9 @@ var OutputFormatter;
13224
13335
  [ErrorDimensions.Result]: data.Result,
13225
13336
  [ErrorDimensions.ErrorCode]: data.ErrorCode,
13226
13337
  [ErrorDimensions.Retry]: data.Retry,
13227
- [ErrorDimensions.ErrorMessage]: data.Message
13338
+ [ErrorDimensions.ErrorMessage]: data.Message,
13339
+ [ErrorDimensions.HttpStatus]: data.Context?.httpStatus?.toString(),
13340
+ [ErrorDimensions.UpstreamErrorCode]: data.Context?.errorCode
13228
13341
  });
13229
13342
  }
13230
13343
  logOutput(normalizeOutputKeys(envelope), getOutputFormat());
@@ -13984,6 +14097,8 @@ var BOOLEAN_FLAGS = new Set(HOST_GLOBAL_FLAGS);
13984
14097
  // ../../common/src/interactivity-context.ts
13985
14098
  var modeSlot = singleton("InteractivityMode");
13986
14099
  var interactiveFlagSlot = singleton("InteractiveFlag");
14100
+ // ../../common/src/json-option.ts
14101
+ init_src();
13987
14102
  // ../../common/src/mime-types.ts
13988
14103
  var MIME_TYPES_BY_EXTENSION = Object.freeze({
13989
14104
  pdf: "application/pdf",
@@ -14304,7 +14419,7 @@ var registerAccessPolicyCommand = (program2) => {
14304
14419
  "Use this to inspect the policy's selectors, rules, and enforcement before editing,",
14305
14420
  "or to seed a follow-up `access-policy update` (save the output, edit, then re-submit)."
14306
14421
  ].join(`
14307
- `)).argument("<policyId>", "Policy UUID. Obtain from `access-policy list` (the `id` field of each result).").examples(GET_EXAMPLES)).trackedAction(processContext, async (policyId, options) => {
14422
+ `)).argument("<policy-id>", "Policy UUID. Obtain from `access-policy list` (the `id` field of each result).").examples(GET_EXAMPLES)).trackedAction(processContext, async (policyId, options) => {
14308
14423
  const api = await getPapApi(options);
14309
14424
  if (!api)
14310
14425
  return;
@@ -14394,7 +14509,7 @@ var registerAccessPolicyCommand = (program2) => {
14394
14509
  "Pass multiple IDs space-separated to delete in a single request.",
14395
14510
  "Deletion is permanent — use `access-policy get <id>` first if you need a backup of the definition."
14396
14511
  ].join(`
14397
- `)).argument("<policyId...>", "One or more policy UUIDs. Obtain from `access-policy list`.").examples(DELETE_EXAMPLES)).trackedAction(processContext, async (policyIds, options) => {
14512
+ `)).argument("<policy-id...>", "One or more policy UUIDs. Obtain from `access-policy list`.").examples(DELETE_EXAMPLES)).trackedAction(processContext, async (policyIds, options) => {
14398
14513
  const api = await getPapApi(options);
14399
14514
  if (!api)
14400
14515
  return;
@@ -14748,7 +14863,7 @@ var package_default3 = {
14748
14863
  name: "@uipath/aops-policy-sdk",
14749
14864
  author: "UiPath",
14750
14865
  license: "SEE LICENSE IN LICENSE.txt",
14751
- version: "1.204.0-preview.254",
14866
+ version: "1.205.0-preview.256",
14752
14867
  description: "SDK for the UiPath AOps Governance API — policy management and deployment.",
14753
14868
  repository: {
14754
14869
  type: "git",
@@ -18391,7 +18506,7 @@ var registerDeployedPolicyCommands = (aopsPolicy) => {
18391
18506
  "Output: the resolved policy's data payload, or `{ Message: 'No policy applies.' }` when the service returns 204",
18392
18507
  "(no rule matches and no default exists). Use `deployed-policy list` to see every rule, not just the effective one."
18393
18508
  ].join(`
18394
- `)).argument("<license-type>", "License type (e.g. Attended, Unattended). Must match a name from `license-type list`.").argument("<product-name>", "Product name (e.g. StudioX). Must match a name from `product list`.").argument("<tenantIdentifier>", "Tenant GUID. From `deployment tenant list`.").option("--s2s-token <token>", "Service-to-service bearer token. Overrides the user token from 'uip login' for this call only. Still requires `uip login` for base URL / org context. For security, prefer setting the UIP_S2S_TOKEN environment variable — tokens passed as CLI arguments are visible in process listings (ps aux, /proc/*/cmdline).").option("--user-id <userId>", "Resolve the effective policy for this specific user (runs the full user→group→tenant walk). Requires --s2s-token.").option("--tenant-only", "Resolve the tenant-level policy only, ignoring user/group overrides. Requires --s2s-token.").option("--download [path]", "Write the resolved policy to a JSON file instead of printing it, exactly as the service returned it. [path] is the JSON file to write; a directory saves '<product name>-<policy name>.json' inside it, and leaving it off saves that name in the current directory.").option("--login-validity <minutes>", "Override the interactive-login token lifetime. Ignored when --s2s-token is set (the S2S token lifetime is controlled by the caller).", (v) => Number.parseInt(v, 10)).examples(GET_EXAMPLES2).trackedAction(processContext, async (licenseType, productName, tenantIdentifier, options) => {
18509
+ `)).argument("<license-type>", "License type (e.g. Attended, Unattended). Must match a name from `license-type list`.").argument("<product-name>", "Product name (e.g. StudioX). Must match a name from `product list`.").argument("<tenant-identifier>", "Tenant GUID. From `deployment tenant list`.").option("--s2s-token <token>", "Service-to-service bearer token. Overrides the user token from 'uip login' for this call only. Still requires `uip login` for base URL / org context. For security, prefer setting the UIP_S2S_TOKEN environment variable — tokens passed as CLI arguments are visible in process listings (ps aux, /proc/*/cmdline).").option("--user-id <userId>", "Resolve the effective policy for this specific user (runs the full user→group→tenant walk). Requires --s2s-token.").option("--tenant-only", "Resolve the tenant-level policy only, ignoring user/group overrides. Requires --s2s-token.").option("--download [path]", "Write the resolved policy to a JSON file instead of printing it, exactly as the service returned it. [path] is the JSON file to write; a directory saves '<product name>-<policy name>.json' inside it, and leaving it off saves that name in the current directory.").option("--login-validity <minutes>", "Override the interactive-login token lifetime. Ignored when --s2s-token is set (the S2S token lifetime is controlled by the caller).", (v) => Number.parseInt(v, 10)).examples(GET_EXAMPLES2).trackedAction(processContext, async (licenseType, productName, tenantIdentifier, options) => {
18395
18510
  const s2sToken = resolveS2sToken(options);
18396
18511
  const validationError = validateGetOptions(options, s2sToken);
18397
18512
  if (validationError) {
@@ -18490,7 +18605,7 @@ var registerDeployedPolicyCommands = (aopsPolicy) => {
18490
18605
  "user or use `deployed-policy get --s2s-token --user-id <id>` for the effective single policy.",
18491
18606
  "Returns an empty array when no rules apply."
18492
18607
  ].join(`
18493
- `)).argument("<license-type>", "License type (e.g. Attended, Unattended). Must match a name from `license-type list`.").argument("<product-name>", "Product name (e.g. StudioX). Must match a name from `product list`.").argument("<tenantIdentifier>", "Tenant GUID. From `deployment tenant list`.").option("--download [path]", "Write each applicable rule to its own JSON file, exactly as the service returned it, and pack them into a zip instead of printing them. Each entry is named '<product name>-<policy name>.json'. [path] is the zip file to write; a directory saves '<product name>-deployed-policies.zip' inside it, and leaving it off saves that name in the current directory.").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(LIST_EXAMPLES2).trackedAction(processContext, async (licenseType, productName, tenantIdentifier, options) => {
18608
+ `)).argument("<license-type>", "License type (e.g. Attended, Unattended). Must match a name from `license-type list`.").argument("<product-name>", "Product name (e.g. StudioX). Must match a name from `product list`.").argument("<tenant-identifier>", "Tenant GUID. From `deployment tenant list`.").option("--download [path]", "Write each applicable rule to its own JSON file, exactly as the service returned it, and pack them into a zip instead of printing them. Each entry is named '<product name>-<policy name>.json'. [path] is the zip file to write; a directory saves '<product name>-deployed-policies.zip' inside it, and leaving it off saves that name in the current directory.").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(LIST_EXAMPLES2).trackedAction(processContext, async (licenseType, productName, tenantIdentifier, options) => {
18494
18609
  const download = downloadTarget(options.download);
18495
18610
  const [error, result] = await catchError2((async () => {
18496
18611
  const api = await createApiClient2(PolicyApi, {
@@ -18681,7 +18796,7 @@ var registerDeploymentGroupCommands = (deployment) => {
18681
18796
  "Returns only group-level overrides — tenant inheritance is NOT resolved here.",
18682
18797
  "Returns an empty array when the group has no overrides."
18683
18798
  ].join(`
18684
- `)).argument("<groupIdentifier>", "Group GUID. From `deployment group list` (the `identifier` field).").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(GET_EXAMPLES3).trackedAction(processContext, async (groupIdentifier, options) => {
18799
+ `)).argument("<group-identifier>", "Group GUID. From `deployment group list` (the `identifier` field).").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(GET_EXAMPLES3).trackedAction(processContext, async (groupIdentifier, options) => {
18685
18800
  const [error, result] = await catchError2((async () => {
18686
18801
  const api = await createApiClient2(PolicyApi, {
18687
18802
  loginValidity: options.loginValidity
@@ -18731,7 +18846,7 @@ var registerDeploymentGroupCommands = (deployment) => {
18731
18846
  " policyIdentifier = null — pins 'No Policy' at group level (blocks tenant inheritance for members).",
18732
18847
  " policyIdentifier = GUID — pins that policy for this group + product."
18733
18848
  ].join(`
18734
- `)).argument("<groupIdentifier>", "Group GUID to configure. From `deployment group list`, or the upstream identity provider.").requiredOption("--group <group>", "Display name stored alongside the override (surfaced in audit logs / UI).").requiredOption("--input <path>", "Path to the JSON file holding the assignment array (see command description for the shape).").option("--source <source>", "Identity-provider source for the group (e.g. 'local', 'aad', 'cloud'). Defaults to 'local'. Used only on the upsert path (when the group already exists in governance); on first-time registration the server resolves source from CIS.", "local").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(CONFIGURE_EXAMPLES).trackedAction(processContext, async (groupIdentifier, options) => {
18849
+ `)).argument("<group-identifier>", "Group GUID to configure. From `deployment group list`, or the upstream identity provider.").requiredOption("--group <group>", "Display name stored alongside the override (surfaced in audit logs / UI).").requiredOption("--input <path>", "Path to the JSON file holding the assignment array (see command description for the shape).").option("--source <source>", "Identity-provider source for the group (e.g. 'local', 'aad', 'cloud'). Defaults to 'local'. Used only on the upsert path (when the group already exists in governance); on first-time registration the server resolves source from CIS.", "local").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(CONFIGURE_EXAMPLES).trackedAction(processContext, async (groupIdentifier, options) => {
18735
18850
  const [error, result] = await catchError2((async () => {
18736
18851
  const raw = await readJsonFile(options.input);
18737
18852
  const entries = parseGroupPolicyInput(raw);
@@ -18790,7 +18905,7 @@ var registerDeploymentGroupCommands = (deployment) => {
18790
18905
  "After deletion, the group's members fall back to user-level or tenant-level assignments.",
18791
18906
  "The group itself remains in the upstream identity provider — this only clears governance state."
18792
18907
  ].join(`
18793
- `)).argument("<groupIdentifier>", "Group GUID to delete. From `deployment group list`.").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(DELETE_EXAMPLES2).trackedAction(processContext, async (groupIdentifier, options) => {
18908
+ `)).argument("<group-identifier>", "Group GUID to delete. From `deployment group list`.").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(DELETE_EXAMPLES2).trackedAction(processContext, async (groupIdentifier, options) => {
18794
18909
  const [error, result] = await catchError2((async () => {
18795
18910
  const api = await createApiClient2(GroupApi, {
18796
18911
  loginValidity: options.loginValidity
@@ -18979,7 +19094,7 @@ var registerDeploymentTenantCommands = (deployment) => {
18979
19094
  "Fetch one tenant and the full list of its (productIdentifier, licenseTypeIdentifier, policyIdentifier)",
18980
19095
  "assignments. Use this to inspect current state before editing and re-submitting via `tenant configure`."
18981
19096
  ].join(`
18982
- `)).argument("<tenantIdentifier>", "Tenant GUID. Obtain from `deployment tenant list` (the `identifier` field).").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(GET_EXAMPLES4).trackedAction(processContext, async (tenantIdentifier, options) => {
19097
+ `)).argument("<tenant-identifier>", "Tenant GUID. Obtain from `deployment tenant list` (the `identifier` field).").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(GET_EXAMPLES4).trackedAction(processContext, async (tenantIdentifier, options) => {
18983
19098
  const [error, result] = await catchError2((async () => {
18984
19099
  const api = await createApiClient2(TenantApi, {
18985
19100
  loginValidity: options.loginValidity
@@ -19028,7 +19143,7 @@ var registerDeploymentTenantCommands = (deployment) => {
19028
19143
  " Set policyIdentifier to null — pins 'No Policy' at tenant level (blocks inheritance).",
19029
19144
  " Set policyIdentifier to a GUID — pins that policy for this (product, license type)."
19030
19145
  ].join(`
19031
- `)).argument("<tenantIdentifier>", "Tenant GUID to configure. From `deployment tenant list`.").requiredOption("--tenant-name <tenantName>", "Tenant display name. Must match the tenant's name in the governance service (from `tenant get`/`tenant list`).").requiredOption("--input <path>", "Path to the JSON file holding the assignment array (see command description for the shape).").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(CONFIGURE_EXAMPLES2).trackedAction(processContext, async (tenantIdentifier, options) => {
19146
+ `)).argument("<tenant-identifier>", "Tenant GUID to configure. From `deployment tenant list`.").requiredOption("--tenant-name <tenantName>", "Tenant display name. Must match the tenant's name in the governance service (from `tenant get`/`tenant list`).").requiredOption("--input <path>", "Path to the JSON file holding the assignment array (see command description for the shape).").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(CONFIGURE_EXAMPLES2).trackedAction(processContext, async (tenantIdentifier, options) => {
19032
19147
  const [error, result] = await catchError2((async () => {
19033
19148
  const raw = await readJsonFile(options.input);
19034
19149
  const entries = parseTenantPolicyInput(raw);
@@ -19085,7 +19200,7 @@ var registerDeploymentTenantCommands = (deployment) => {
19085
19200
  "",
19086
19201
  "Output includes both the removed entries and the new tenantPolicies snapshot so you can audit the change."
19087
19202
  ].join(`
19088
- `)).argument("<tenantIdentifier>", "Tenant GUID. From `deployment tenant list`.").requiredOption("--product-name <product-name>", "Product to unpin (e.g. StudioX). Matches the `productIdentifier` field on the tenant's saved entries.").option("--license-type <license-type>", "Narrow the removal to one license type. Omit to remove every license-type entry for the product.").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(REMOVE_EXAMPLES).trackedAction(processContext, async (tenantIdentifier, options) => {
19203
+ `)).argument("<tenant-identifier>", "Tenant GUID. From `deployment tenant list`.").requiredOption("--product-name <product-name>", "Product to unpin (e.g. StudioX). Matches the `productIdentifier` field on the tenant's saved entries.").option("--license-type <license-type>", "Narrow the removal to one license type. Omit to remove every license-type entry for the product.").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(REMOVE_EXAMPLES).trackedAction(processContext, async (tenantIdentifier, options) => {
19089
19204
  const [error, result] = await catchError2((async () => {
19090
19205
  const tenantApi = await createApiClient2(TenantApi, {
19091
19206
  loginValidity: options.loginValidity
@@ -19271,7 +19386,7 @@ var registerDeploymentUserCommands = (deployment) => {
19271
19386
  "For the effective policy that actually applies at runtime, use `deployed-policy get` with --user-id.",
19272
19387
  "Returns an empty array when the user has no overrides."
19273
19388
  ].join(`
19274
- `)).argument("<userIdentifier>", "User GUID. From `deployment user list` (the `identifier` field).").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(GET_EXAMPLES5).trackedAction(processContext, async (userIdentifier, options) => {
19389
+ `)).argument("<user-identifier>", "User GUID. From `deployment user list` (the `identifier` field).").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(GET_EXAMPLES5).trackedAction(processContext, async (userIdentifier, options) => {
19275
19390
  const [error, result] = await catchError2((async () => {
19276
19391
  const api = await createApiClient2(PolicyApi, {
19277
19392
  loginValidity: options.loginValidity
@@ -19321,7 +19436,7 @@ var registerDeploymentUserCommands = (deployment) => {
19321
19436
  " policyIdentifier = null — pins 'No Policy' at user level (blocks group/tenant inheritance).",
19322
19437
  " policyIdentifier = GUID — pins that policy for this user + product."
19323
19438
  ].join(`
19324
- `)).argument("<userIdentifier>", "User GUID to configure. From `deployment user list`, or the upstream identity provider.").requiredOption("--user <user>", "Display name stored alongside the override (surfaced in audit logs / UI).").requiredOption("--input <path>", "Path to the JSON file holding the assignment array (see command description for the shape).").option("--source <source>", "Identity-provider source for the user (e.g. 'local', 'aad', 'cloud'). Defaults to 'local'. Used only on the upsert path (when the user already exists in governance); on first-time registration the server resolves source from CIS.", "local").option("--email <email>", "Email used only when registering a brand-new user with the governance service. Ignored once the user is already known to governance. Defaults to --user when omitted.").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(CONFIGURE_EXAMPLES3).trackedAction(processContext, async (userIdentifier, options) => {
19439
+ `)).argument("<user-identifier>", "User GUID to configure. From `deployment user list`, or the upstream identity provider.").requiredOption("--user <user>", "Display name stored alongside the override (surfaced in audit logs / UI).").requiredOption("--input <path>", "Path to the JSON file holding the assignment array (see command description for the shape).").option("--source <source>", "Identity-provider source for the user (e.g. 'local', 'aad', 'cloud'). Defaults to 'local'. Used only on the upsert path (when the user already exists in governance); on first-time registration the server resolves source from CIS.", "local").option("--email <email>", "Email used only when registering a brand-new user with the governance service. Ignored once the user is already known to governance. Defaults to --user when omitted.").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(CONFIGURE_EXAMPLES3).trackedAction(processContext, async (userIdentifier, options) => {
19325
19440
  const [error, result] = await catchError2((async () => {
19326
19441
  const raw = await readJsonFile(options.input);
19327
19442
  const entries = parseUserPolicyInput(raw);
@@ -19380,7 +19495,7 @@ var registerDeploymentUserCommands = (deployment) => {
19380
19495
  "After deletion, the user falls back to group/tenant inheritance for all products.",
19381
19496
  "Equivalent to `user configure` with an empty array but doesn't require a JSON file."
19382
19497
  ].join(`
19383
- `)).argument("<userIdentifier>", "User GUID whose overrides should be cleared. From `deployment user list`.").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(DELETE_EXAMPLES3).trackedAction(processContext, async (userIdentifier, options) => {
19498
+ `)).argument("<user-identifier>", "User GUID whose overrides should be cleared. From `deployment user list`.").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(DELETE_EXAMPLES3).trackedAction(processContext, async (userIdentifier, options) => {
19384
19499
  const [error, result] = await catchError2((async () => {
19385
19500
  const api = await createApiClient2(UserApi, {
19386
19501
  loginValidity: options.loginValidity
@@ -19526,12 +19641,12 @@ var registerProductCommands = (aopsPolicy) => {
19526
19641
  "Inspect the catalog of products that publish governance templates to this organization.",
19527
19642
  "Products are read-only — they're registered by the governance service, not created via the CLI.",
19528
19643
  "Use these commands to discover valid values for the --product-name option on `policy create/update`,",
19529
- "the <productIdentifier> argument on `template get`, and `deployment tenant|user|group configure` entries."
19644
+ "the <product-identifier> argument on `template get`, and `deployment tenant|user|group configure` entries."
19530
19645
  ].join(`
19531
19646
  `));
19532
19647
  product.command("list").description([
19533
19648
  "List every product visible to the organization, with its name, label, and identifier.",
19534
- "The `name` field is what `policy create --product-name`, `template get <productIdentifier>`,",
19649
+ "The `name` field is what `policy create --product-name`, `template get <product-identifier>`,",
19535
19650
  "and `deployment … configure` entries expect. The `label` is the human-readable display name."
19536
19651
  ].join(`
19537
19652
  `)).option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(LIST_EXAMPLES7).trackedAction(processContext, async (options) => {
@@ -19556,7 +19671,7 @@ var registerProductCommands = (aopsPolicy) => {
19556
19671
  Data: result ?? []
19557
19672
  });
19558
19673
  });
19559
- product.command("get").description("Fetch a single product record (name, label, identifier, flags). Use to verify a name is valid before calling `policy create` or `template get`.").argument("<productIdentifier>", "Product name (e.g. StudioX) or GUID. Either the `name` or the `identifier` from `product list` is accepted.").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(GET_EXAMPLES6).trackedAction(processContext, async (productIdentifier, options) => {
19674
+ product.command("get").description("Fetch a single product record (name, label, identifier, flags). Use to verify a name is valid before calling `policy create` or `template get`.").argument("<product-identifier>", "Product name (e.g. StudioX) or GUID. Either the `name` or the `identifier` from `product list` is accepted.").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(GET_EXAMPLES6).trackedAction(processContext, async (productIdentifier, options) => {
19560
19675
  const [error, result] = await catchError2((async () => {
19561
19676
  const api = await createApiClient2(ProductApi, {
19562
19677
  loginValidity: options.loginValidity
@@ -21882,7 +21997,7 @@ var registerTemplateCommands = (aopsPolicy) => {
21882
21997
  " when creating or updating a policy."
21883
21998
  ].join(`
21884
21999
  `));
21885
- template.command("get").description("Fetch the active Form.io policy template for one product and emit policy artifacts. " + "Pass --output-form-data to write the fillable blueprint (the object you fill in and submit back on create/update); display-only components (hidden, button, submit, HTML, content) are skipped and missing leaves get type-appropriate defaults (false for checkbox, [] for editgrid, {} for selectboxes, null for text/select). " + "Pass --output-template-locale-resource to write a human-readable reference derived from the DTO: every product-scoped locale key is replaced with its English string (with a sibling `<prop>-key` preserving the original for traceability) and `defaultData.data` is replaced with a flat annotated map ({ value, type, label, description?, tooltip? }); cross-product prefixes (e.g. `AutomationOps.submit`) are left unresolved. " + "If neither --output flag is passed, the template and form-data are returned in the stdout Success payload (`Data.template` and `Data.formData`) for piping/scripting.").argument("<productIdentifier>", "Product name or identifier (e.g. StudioX, AITrustLayer). Use 'uip gov aops-policy product list' to list options.").option("--output-form-data <path>", "Write the fillable form-data blueprint JSON (the object you edit and submit back).").option("--output-template-locale-resource <path>", "Write the locale-resolved template reference JSON (open this to understand every field, option label, description, tooltip, and validation message).").option("--login-validity <minutes>", "Login token validity in minutes", (v) => Number.parseInt(v, 10)).examples(GET_EXAMPLES7).trackedAction(processContext, async (productIdentifier, options) => {
22000
+ template.command("get").description("Fetch the active Form.io policy template for one product and emit policy artifacts. " + "Pass --output-form-data to write the fillable blueprint (the object you fill in and submit back on create/update); display-only components (hidden, button, submit, HTML, content) are skipped and missing leaves get type-appropriate defaults (false for checkbox, [] for editgrid, {} for selectboxes, null for text/select). " + "Pass --output-template-locale-resource to write a human-readable reference derived from the DTO: every product-scoped locale key is replaced with its English string (with a sibling `<prop>-key` preserving the original for traceability) and `defaultData.data` is replaced with a flat annotated map ({ value, type, label, description?, tooltip? }); cross-product prefixes (e.g. `AutomationOps.submit`) are left unresolved. " + "If neither --output flag is passed, the template and form-data are returned in the stdout Success payload (`Data.template` and `Data.formData`) for piping/scripting.").argument("<product-identifier>", "Product name or identifier (e.g. StudioX, AITrustLayer). Use 'uip gov aops-policy product list' to list options.").option("--output-form-data <path>", "Write the fillable form-data blueprint JSON (the object you edit and submit back).").option("--output-template-locale-resource <path>", "Write the locale-resolved template reference JSON (open this to understand every field, option label, description, tooltip, and validation message).").option("--login-validity <minutes>", "Login token validity in minutes", (v) => Number.parseInt(v, 10)).examples(GET_EXAMPLES7).trackedAction(processContext, async (productIdentifier, options) => {
21886
22001
  const [templateError, dto] = await catchError2((async () => {
21887
22002
  const api = await createApiClient2(ContentApi, {
21888
22003
  loginValidity: options.loginValidity
@@ -22280,7 +22395,7 @@ var registerAopsPolicyCommand = (program2) => {
22280
22395
  "Use this to inspect what values were submitted, or to seed a follow-up `policy update`",
22281
22396
  "(edit the returned data, save it to a JSON file, pass it back via --input)."
22282
22397
  ].join(`
22283
- `)).argument("<policyIdentifier>", "Policy GUID. Obtain from `policy list` (the `identifier` field of each returned policy).").option("--download [path]", "Write the policy to a JSON file instead of printing it: the raw body of the service's download endpoint (GET /api/Policy/{id}/download) — { policy-name, description, availability, version, product-name, data }, form data included, keys exactly as the service sent them. [path] is the JSON file to write; a directory saves '<product name>-<policy name>.json' inside it, and leaving it off saves that name in the current directory.").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(GET_EXAMPLES8).trackedAction(processContext, async (policyIdentifier, options) => {
22398
+ `)).argument("<policy-identifier>", "Policy GUID. Obtain from `policy list` (the `identifier` field of each returned policy).").option("--download [path]", "Write the policy to a JSON file instead of printing it: the raw body of the service's download endpoint (GET /api/Policy/{id}/download) — { policy-name, description, availability, version, product-name, data }, form data included, keys exactly as the service sent them. [path] is the JSON file to write; a directory saves '<product name>-<policy name>.json' inside it, and leaving it off saves that name in the current directory.").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(GET_EXAMPLES8).trackedAction(processContext, async (policyIdentifier, options) => {
22284
22399
  const download = downloadTarget(options.download);
22285
22400
  if (download.requested) {
22286
22401
  const [downloadError, written] = await catchError2((async () => {
@@ -22421,7 +22536,7 @@ var registerAopsPolicyCommand = (program2) => {
22421
22536
  "`deployment tenant|user|group remove` (or `configure` with a filtered list) on every subject first,",
22422
22537
  "then retry delete."
22423
22538
  ].join(`
22424
- `)).argument("<policyIdentifier>", "Policy GUID to delete. From `policy list`.").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(DELETE_EXAMPLES4).trackedAction(processContext, async (policyIdentifier, options) => {
22539
+ `)).argument("<policy-identifier>", "Policy GUID to delete. From `policy list`.").option("--login-validity <minutes>", "Override the interactive-login token lifetime for this call. Rarely needed.", (v) => Number.parseInt(v, 10)).examples(DELETE_EXAMPLES4).trackedAction(processContext, async (policyIdentifier, options) => {
22425
22540
  const [error, result] = await catchError2((async () => {
22426
22541
  const api = await createApiClient2(PolicyApi, {
22427
22542
  loginValidity: options.loginValidity
@@ -22699,7 +22814,7 @@ var package_default4 = {
22699
22814
  name: "@uipath/compliance-packs-sdk",
22700
22815
  author: "UiPath",
22701
22816
  license: "SEE LICENSE IN LICENSE.txt",
22702
- version: "1.204.0",
22817
+ version: "1.205.0",
22703
22818
  description: "SDK for the UiPath Governance Server Compliance Packs API.",
22704
22819
  repository: {
22705
22820
  type: "git",
@@ -23913,4 +24028,4 @@ export {
23913
24028
  registerCommands
23914
24029
  };
23915
24030
 
23916
- //# debugId=7ED981E4F2C128D864756E2164756E21
24031
+ //# debugId=6E546F401684292F64756E2164756E21
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@uipath/gov-tool",
3
3
  "author": "UiPath",
4
4
  "license": "SEE LICENSE IN LICENSE.txt",
5
- "version": "1.204.0-preview.254",
5
+ "version": "1.205.0-preview.256",
6
6
  "description": "Manage UiPath governance — AOps policies, Access policies, and compliance packs.",
7
7
  "private": false,
8
8
  "repository": {
@@ -24,5 +24,5 @@
24
24
  "files": [
25
25
  "dist"
26
26
  ],
27
- "gitHead": "3ee79cdec05b36231a8da9e8de6bf0043585526a"
27
+ "gitHead": "63740c6cbb7ff282fa9118cc16a148eb030b245f"
28
28
  }