agent-shim 11.79.0 → 11.81.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.
package/dist/index.cjs CHANGED
@@ -183,7 +183,7 @@ function providerFilePath(directory, name, source) {
183
183
  }
184
184
  return import_node_path.default.join(directory, `${name}.json`);
185
185
  }
186
- var import_node_path, import_zod, FILESYSTEM_COMPONENT_BYTES, MAX_PID_DIGITS, UUID_CHARS, ATOMIC_WRITE_OVERHEAD_BYTES, FARM_SWAP_OVERHEAD_BYTES, MAX_NAME_BYTES, FILE_NAME_PATTERN, FILE_NAME, FILE_NAME_RULE, STORED_NAME_RULE, FileNameSchema, StoredNameSchema, UnsafeNameError, InvalidProviderNameError;
186
+ var import_node_path, import_zod, FILESYSTEM_COMPONENT_BYTES, MAX_PID_DIGITS, UUID_CHARS, ATOMIC_WRITE_OVERHEAD_BYTES, FARM_SWAP_OVERHEAD_BYTES, MAX_NAME_BYTES, FILE_NAME_PATTERN, FILE_NAME, FILE_NAME_RULE, STORED_NAME_RULE, FileNameSchema, StoredNameSchema, LABEL_FORBIDDEN, IDENTITY_LABEL_RULE, IdentityLabelSchema, UnsafeNameError, InvalidProviderNameError;
187
187
  var init_names = __esm({
188
188
  "src/config/names.ts"() {
189
189
  "use strict";
@@ -202,6 +202,9 @@ var init_names = __esm({
202
202
  STORED_NAME_RULE = `must be non-empty, at most ${String(MAX_NAME_BYTES)} bytes, not "." or "..", and contain no path separator or NUL`;
203
203
  FileNameSchema = import_zod.z.string().min(1).regex(FILE_NAME, FILE_NAME_RULE);
204
204
  StoredNameSchema = import_zod.z.string().min(1).max(MAX_NAME_BYTES).refine(isStoredName, STORED_NAME_RULE);
205
+ LABEL_FORBIDDEN = /[\p{Cc}\p{Zl}\p{Zp}]/u;
206
+ IDENTITY_LABEL_RULE = `must be non-empty single-line text of at most ${String(MAX_NAME_BYTES)} characters, with no control characters and no leading or trailing whitespace`;
207
+ IdentityLabelSchema = import_zod.z.string().min(1).max(MAX_NAME_BYTES).refine((label) => label === label.trim() && !LABEL_FORBIDDEN.test(label), IDENTITY_LABEL_RULE);
205
208
  UnsafeNameError = class extends CliError {
206
209
  constructor(attemptedName, kind, rule = STORED_NAME_RULE, source) {
207
210
  super(`${source === void 0 ? "" : `${source}: `}${JSON.stringify(attemptedName)} is not a valid ${kind} name: a name ${rule}.`);
@@ -1228,6 +1231,8 @@ var init_schema = __esm({
1228
1231
  IdentitySchema = import_zod3.z.strictObject({
1229
1232
  $schema: import_zod3.z.string().optional(),
1230
1233
  name: FileNameSchema,
1234
+ /** What the identity is for, in the person's words, drawn beside its name in `identity list` and `show`, the launch banner and the statusline. Display only: the name stays the key for lookup, paths, keychain service names and pools. */
1235
+ label: IdentityLabelSchema.optional(),
1231
1236
  defaultConfigProfile: StoredNameSchema.optional(),
1232
1237
  /** The provider this identity exists for: a launch on the identity routes through it unless `--provider`, `--no-provider` or a cascade layer's `launch.provider` says otherwise. Its sessions run on the provider's credential, so the identity needs no stored login. */
1233
1238
  provider: StoredNameSchema.optional(),
@@ -4764,7 +4769,7 @@ var init_package = __esm({
4764
4769
  "package.json"() {
4765
4770
  package_default = {
4766
4771
  name: "agent-shim",
4767
- version: "11.79.0",
4772
+ version: "11.81.0",
4768
4773
  description: "A profile manager and launcher for Claude Code that lets one person run multiple logins from one machine while controlling what gets shared between them.",
4769
4774
  license: "MIT",
4770
4775
  author: "Joseph Mearman <joseph@mearman.co.uk>",
@@ -7037,6 +7042,78 @@ var init_account = __esm({
7037
7042
  }
7038
7043
  });
7039
7044
 
7045
+ // src/usage/accountDescription.ts
7046
+ function describeAccountOrganisation(account) {
7047
+ const parts = [account.organizationName, account.organizationType].filter((part) => part !== void 0);
7048
+ return parts.length === 0 ? void 0 : parts.join(", ");
7049
+ }
7050
+ var init_accountDescription = __esm({
7051
+ "src/usage/accountDescription.ts"() {
7052
+ "use strict";
7053
+ }
7054
+ });
7055
+
7056
+ // src/identityAccounts.ts
7057
+ function readIdentityAccount(fs14, identitiesDir, identity) {
7058
+ try {
7059
+ const account = readAccountMetadata(fs14, identitiesDir, identity);
7060
+ return account === void 0 ? void 0 : { account };
7061
+ } catch (error) {
7062
+ if (error instanceof AccountMetadataError) {
7063
+ return { problem: error.message };
7064
+ }
7065
+ throw error;
7066
+ }
7067
+ }
7068
+ function summariseIdentityAccount(account) {
7069
+ const summary = {
7070
+ ...account.emailAddress === void 0 ? {} : { emailAddress: account.emailAddress },
7071
+ ...account.organizationName === void 0 ? {} : { organizationName: account.organizationName },
7072
+ ...account.organizationType === void 0 ? {} : { organizationType: account.organizationType },
7073
+ ...account.organizationRole === void 0 ? {} : { organizationRole: account.organizationRole },
7074
+ ...account.billingType === void 0 ? {} : { billingType: account.billingType },
7075
+ ...account.seatTier === void 0 ? {} : { seatTier: account.seatTier }
7076
+ };
7077
+ return Object.keys(summary).length === 0 ? void 0 : summary;
7078
+ }
7079
+ function loginKeyOf(account) {
7080
+ return account.accountUuid === void 0 ? void 0 : JSON.stringify([account.accountUuid, account.organizationUuid ?? null]);
7081
+ }
7082
+ function collectByLogin(items, loginOf) {
7083
+ const groups = /* @__PURE__ */ new Map();
7084
+ for (const item of items) {
7085
+ const key = loginOf(item) ?? /* @__PURE__ */ Symbol("no login");
7086
+ const group = groups.get(key);
7087
+ if (group === void 0) {
7088
+ groups.set(key, [item]);
7089
+ } else {
7090
+ group.push(item);
7091
+ }
7092
+ }
7093
+ return [...groups.values()];
7094
+ }
7095
+ function groupSharedLogins(items, loginOf) {
7096
+ return collectByLogin(items, loginOf).filter((group) => group.length > 1);
7097
+ }
7098
+ function joinNames(names) {
7099
+ const last = names.at(-1);
7100
+ return names.length < 2 || last === void 0 ? names.join("") : `${names.slice(0, -1).join(", ")} and ${last}`;
7101
+ }
7102
+ function describeAccountHolder(summary) {
7103
+ const organisation = describeAccountOrganisation(summary);
7104
+ if (summary.emailAddress === void 0) {
7105
+ return organisation;
7106
+ }
7107
+ return organisation === void 0 ? summary.emailAddress : `${summary.emailAddress} (${organisation})`;
7108
+ }
7109
+ var init_identityAccounts = __esm({
7110
+ "src/identityAccounts.ts"() {
7111
+ "use strict";
7112
+ init_account();
7113
+ init_accountDescription();
7114
+ }
7115
+ });
7116
+
7040
7117
  // src/usage/rateLimit.ts
7041
7118
  function epochSecondsToIso(value) {
7042
7119
  if (value === void 0) {
@@ -7404,6 +7481,9 @@ function assessRefusedNested(member, nested, nowMs) {
7404
7481
  };
7405
7482
  }
7406
7483
  function assess(member, nowMs) {
7484
+ if (member.sameLoginAs !== void 0) {
7485
+ return { candidate: { identity: member.identity, class: "ineligible", plan: planOf(member.account), reasons: [`same login as ${member.sameLoginAs}`] } };
7486
+ }
7407
7487
  const nested = member.nested;
7408
7488
  if (nested === void 0) {
7409
7489
  return assessIdentity(member, nowMs);
@@ -7876,6 +7956,29 @@ function loadPoolMembers(fs14, paths, identities, nowMs) {
7876
7956
  }
7877
7957
  });
7878
7958
  }
7959
+ function snapshotAgeKey(member) {
7960
+ return member.snapshot === void 0 ? Number.NEGATIVE_INFINITY : Date.parse(member.snapshot.updatedAt);
7961
+ }
7962
+ function collapseSharedLogins(members) {
7963
+ const groups = groupSharedLogins(members, (member) => member.nested === void 0 && member.account !== void 0 ? loginKeyOf(member.account) : void 0);
7964
+ const representativeOf = /* @__PURE__ */ new Map();
7965
+ for (const group of groups) {
7966
+ const representative = group.reduce((freshest, member) => snapshotAgeKey(member) > snapshotAgeKey(freshest) ? member : freshest);
7967
+ for (const member of group) {
7968
+ if (member !== representative) {
7969
+ representativeOf.set(member, representative.identity);
7970
+ }
7971
+ }
7972
+ }
7973
+ return members.map((member) => {
7974
+ const representative = representativeOf.get(member);
7975
+ return representative === void 0 ? member : { ...member, sameLoginAs: representative };
7976
+ });
7977
+ }
7978
+ function stickyOnRepresentative(sticky, members) {
7979
+ const twin = sticky === void 0 ? void 0 : members.find((member) => member.identity === sticky.identity && member.sameLoginAs !== void 0);
7980
+ return sticky === void 0 || twin?.sameLoginAs === void 0 ? sticky : { ...sticky, identity: twin.sameLoginAs };
7981
+ }
7879
7982
  function rankPoolGraph(input) {
7880
7983
  return rankNamedPool(input, input.poolName, [], input.sticky);
7881
7984
  }
@@ -7903,13 +8006,15 @@ function rankNamedPool(input, poolName, stack, sticky) {
7903
8006
  members.push(typeof entry === "string" ? nested.member : { ...nested.member, policy: entry.when });
7904
8007
  missing.push(...nested.missing);
7905
8008
  }
8009
+ const collapsed = collapseSharedLogins(members);
8010
+ const stickyPick = stickyOnRepresentative(sticky, collapsed);
7906
8011
  const ranking = rankPool({
7907
- members,
8012
+ members: collapsed,
7908
8013
  nowMs: input.nowMs,
7909
8014
  resuming: input.resuming,
7910
8015
  ...input.resumeContextTokens === void 0 ? {} : { resumeContextTokens: input.resumeContextTokens },
7911
8016
  ...input.committedContextTokens === void 0 ? {} : { committedContextTokens: input.committedContextTokens },
7912
- ...sticky === void 0 ? {} : { sticky },
8017
+ ...stickyPick === void 0 ? {} : { sticky: stickyPick },
7913
8018
  ...pool.preference === void 0 ? {} : { preference: pool.preference }
7914
8019
  });
7915
8020
  return { ranking, missing };
@@ -7997,6 +8102,7 @@ var init_poolPick = __esm({
7997
8102
  init_cliError();
7998
8103
  init_identity();
7999
8104
  init_schema();
8105
+ init_identityAccounts();
8000
8106
  init_account();
8001
8107
  init_pick();
8002
8108
  init_read();
@@ -11493,9 +11599,15 @@ function movedRows(facts) {
11493
11599
  }
11494
11600
  return [];
11495
11601
  }
11602
+ function identityText(facts) {
11603
+ if (facts.identity === void 0) {
11604
+ return "(none)";
11605
+ }
11606
+ return facts.identityLabel === void 0 ? facts.identity : `${facts.identity} (${facts.identityLabel})`;
11607
+ }
11496
11608
  function decisionRows(facts) {
11497
11609
  return [
11498
- { label: "identity", value: facts.identity ?? "(none)", detail: facts.identitySource },
11610
+ { label: "identity", value: identityText(facts), detail: facts.identitySource },
11499
11611
  ...facts.pool === void 0 ? [] : [
11500
11612
  {
11501
11613
  label: "pool",
@@ -12021,6 +12133,7 @@ function decideLaunch(params, readOnly) {
12021
12133
  return {
12022
12134
  parsedArgv,
12023
12135
  identityDecision,
12136
+ identityLabel: loadedIdentity?.config.label,
12024
12137
  poolPick,
12025
12138
  poolRanking,
12026
12139
  lastRanAs,
@@ -12051,6 +12164,7 @@ function prepareLaunch(params) {
12051
12164
  const rows = [
12052
12165
  ...decisionRows({
12053
12166
  identity: identityDecision.name,
12167
+ identityLabel: decided.identityLabel,
12054
12168
  identitySource: identityDecision.source,
12055
12169
  pool: poolPick,
12056
12170
  ranking: resolvedFlags.explain ? poolRanking : void 0,
@@ -17036,6 +17150,12 @@ function setIdentityProvider(paths, identityName, providerName) {
17036
17150
  }
17037
17151
  return applyPatch(identityJsonPath(paths, identityName), IdentitySchema, { provider: providerName });
17038
17152
  }
17153
+ function setIdentityLabel(paths, identityName, label) {
17154
+ if (!identityExists(paths, identityName)) {
17155
+ throw new IdentityNotFoundError(identityName);
17156
+ }
17157
+ return applyPatch(identityJsonPath(paths, identityName), IdentitySchema, { label });
17158
+ }
17039
17159
  function setAllowAmbientCredential(paths, identityName, allow) {
17040
17160
  if (!identityExists(paths, identityName)) {
17041
17161
  throw new IdentityNotFoundError(identityName);
@@ -17084,65 +17204,7 @@ init_realPorts();
17084
17204
  var import_node_fs10 = __toESM(require("node:fs"), 1);
17085
17205
  var import_node_path29 = __toESM(require("node:path"), 1);
17086
17206
  init_signIn();
17087
-
17088
- // src/identityAccounts.ts
17089
- init_account();
17090
-
17091
- // src/usage/accountDescription.ts
17092
- function describeAccountOrganisation(account) {
17093
- const parts = [account.organizationName, account.organizationType].filter((part) => part !== void 0);
17094
- return parts.length === 0 ? void 0 : parts.join(", ");
17095
- }
17096
-
17097
- // src/identityAccounts.ts
17098
- function readIdentityAccount(fs14, identitiesDir, identity) {
17099
- try {
17100
- const account = readAccountMetadata(fs14, identitiesDir, identity);
17101
- return account === void 0 ? void 0 : { account };
17102
- } catch (error) {
17103
- if (error instanceof AccountMetadataError) {
17104
- return { problem: error.message };
17105
- }
17106
- throw error;
17107
- }
17108
- }
17109
- function summariseIdentityAccount(account) {
17110
- const summary = {
17111
- ...account.emailAddress === void 0 ? {} : { emailAddress: account.emailAddress },
17112
- ...account.organizationName === void 0 ? {} : { organizationName: account.organizationName },
17113
- ...account.organizationType === void 0 ? {} : { organizationType: account.organizationType },
17114
- ...account.organizationRole === void 0 ? {} : { organizationRole: account.organizationRole },
17115
- ...account.billingType === void 0 ? {} : { billingType: account.billingType },
17116
- ...account.seatTier === void 0 ? {} : { seatTier: account.seatTier }
17117
- };
17118
- return Object.keys(summary).length === 0 ? void 0 : summary;
17119
- }
17120
- function loginKeyOf(account) {
17121
- return account.accountUuid === void 0 ? void 0 : JSON.stringify([account.accountUuid, account.organizationUuid ?? null]);
17122
- }
17123
- function collectByLogin(items, loginOf) {
17124
- const groups = /* @__PURE__ */ new Map();
17125
- for (const item of items) {
17126
- const key = loginOf(item) ?? /* @__PURE__ */ Symbol("no login");
17127
- const group = groups.get(key);
17128
- if (group === void 0) {
17129
- groups.set(key, [item]);
17130
- } else {
17131
- group.push(item);
17132
- }
17133
- }
17134
- return [...groups.values()];
17135
- }
17136
- function groupSharedLogins(items, loginOf) {
17137
- return collectByLogin(items, loginOf).filter((group) => group.length > 1);
17138
- }
17139
- function describeAccountHolder(summary) {
17140
- const organisation = describeAccountOrganisation(summary);
17141
- if (summary.emailAddress === void 0) {
17142
- return organisation;
17143
- }
17144
- return organisation === void 0 ? summary.emailAddress : `${summary.emailAddress} (${organisation})`;
17145
- }
17207
+ init_identityAccounts();
17146
17208
 
17147
17209
  // src/codex/siwcStore.ts
17148
17210
  var import_zod26 = require("zod");
@@ -17496,6 +17558,27 @@ init_providerAliases();
17496
17558
  init_providersStore();
17497
17559
  init_guard();
17498
17560
  init_identity();
17561
+
17562
+ // src/poolSharedLogins.ts
17563
+ init_identityAccounts();
17564
+ init_identity();
17565
+ function sharedLoginMembers(members, accountOf) {
17566
+ const known = members.flatMap((identity) => {
17567
+ const account = poolNameOf(identity) === void 0 ? accountOf(identity) : void 0;
17568
+ return account === void 0 ? [] : [{ identity, account }];
17569
+ });
17570
+ return groupSharedLogins(known, (entry) => loginKeyOf(entry.account)).flatMap((group) => {
17571
+ const first = group[0];
17572
+ return first === void 0 ? [] : [{ members: group.map((entry) => entry.identity), account: first.account }];
17573
+ });
17574
+ }
17575
+ function describeSharedLoginMembers(poolName, shared) {
17576
+ const summary = summariseIdentityAccount(shared.account);
17577
+ const holder = summary === void 0 ? void 0 : describeAccountHolder(summary);
17578
+ return `Pool "${poolName}" lists ${joinNames(shared.members)}, which hold the same login${holder === void 0 ? "" : ` (${holder})`}, so they share one quota window. A launch ranks them as one candidate and never fails over from one to another; keep one of them in the pool.`;
17579
+ }
17580
+
17581
+ // src/doctorReport.ts
17499
17582
  init_extends();
17500
17583
  var DOCTOR_SEVERITIES = ["pass", "warn", "fail"];
17501
17584
  var DOCTOR_SECTIONS = [
@@ -17518,10 +17601,6 @@ var DOCTOR_SECTIONS = [
17518
17601
  "frontdoor",
17519
17602
  "models"
17520
17603
  ];
17521
- function joinNames(names) {
17522
- const last = names.at(-1);
17523
- return names.length < 2 || last === void 0 ? names.join("") : `${names.slice(0, -1).join(", ")} and ${last}`;
17524
- }
17525
17604
  function refinePathShadow(status, ownExecutablePath, realpath) {
17526
17605
  if (status.status !== "shadowed") {
17527
17606
  return status;
@@ -17834,6 +17913,7 @@ function runDoctor(params) {
17834
17913
  }
17835
17914
  const validatedGlobalConfig = params.globalConfig.raw === void 0 ? void 0 : validateJson(GlobalConfigSchema, params.globalConfig);
17836
17915
  const pools = validatedGlobalConfig?.ok === true ? validatedGlobalConfig.data.pools ?? {} : {};
17916
+ const accountByIdentity = new Map(params.identities.flatMap((entry) => validIdentityNames.has(entry.name) && entry.account !== void 0 ? [[entry.name, entry.account]] : []));
17837
17917
  for (const [poolName, pool] of Object.entries(pools)) {
17838
17918
  const missing = pool.identities.filter((member) => poolNameOf(poolMemberIdentity(member)) === void 0 && !validIdentityNames.has(poolMemberIdentity(member)));
17839
17919
  const undefinedPools = pool.identities.flatMap((member) => {
@@ -17849,6 +17929,9 @@ function runDoctor(params) {
17849
17929
  ];
17850
17930
  push("pool", "fail", `Pool "${poolName}" names ${problems.join(" and ")}.`, poolName);
17851
17931
  }
17932
+ for (const shared of sharedLoginMembers(pool.identities.map(poolMemberIdentity), (identityName) => accountByIdentity.get(identityName))) {
17933
+ push("pool", "warn", describeSharedLoginMembers(poolName, shared), poolName);
17934
+ }
17852
17935
  }
17853
17936
  const reportedCycles = /* @__PURE__ */ new Set();
17854
17937
  for (const poolName of Object.keys(pools).sort()) {
@@ -18467,6 +18550,7 @@ init_providersStore();
18467
18550
  // src/frontdoor/configSchemas.ts
18468
18551
  var import_zod30 = require("zod");
18469
18552
  init_schema();
18553
+ init_names();
18470
18554
  init_statusline();
18471
18555
  var RemovalConfirmationSchema = import_zod30.z.boolean();
18472
18556
  var CredentialWriteSchema = (targets) => import_zod30.z.strictObject({
@@ -18492,6 +18576,7 @@ var mutationOutput = (kind, action) => import_zod30.z.strictObject({ action: imp
18492
18576
  var storedMutationOutput = (kind, action, value) => import_zod30.z.strictObject({ action: import_zod30.z.literal(action), kind: import_zod30.z.literal(kind), name: import_zod30.z.string(), value });
18493
18577
  var IdentityValueSchema = import_zod30.z.strictObject({
18494
18578
  name: import_zod30.z.string(),
18579
+ label: import_zod30.z.string().optional(),
18495
18580
  defaultConfigProfile: import_zod30.z.string().optional(),
18496
18581
  provider: import_zod30.z.string().optional(),
18497
18582
  allowAmbientCredential: import_zod30.z.boolean(),
@@ -18512,6 +18597,8 @@ var ConfigNameInputSchema = import_zod30.z.strictObject({ name: import_zod30.z.s
18512
18597
  var ConfigIdentityAddOutputSchema = storedMutationOutput("identity", "created", IdentityValueSchema);
18513
18598
  var ConfigIdentitySetInputSchema = import_zod30.z.strictObject({
18514
18599
  name: import_zod30.z.string().min(1),
18600
+ /** The identity's display label; `false` clears it. */
18601
+ label: import_zod30.z.union([IdentityLabelSchema, import_zod30.z.literal(false)]).optional(),
18515
18602
  defaultConfigProfile: import_zod30.z.union([import_zod30.z.string().min(1), import_zod30.z.literal(false)]).optional(),
18516
18603
  /** The provider the identity exists for; `false` clears it. */
18517
18604
  provider: import_zod30.z.union([import_zod30.z.string().min(1), import_zod30.z.literal(false)]).optional(),
@@ -18658,6 +18745,7 @@ function identityValue(name, paths) {
18658
18745
  }
18659
18746
  return {
18660
18747
  name: identity.name,
18748
+ ...identity.label === void 0 ? {} : { label: identity.label },
18661
18749
  ...identity.defaultConfigProfile === void 0 ? {} : { defaultConfigProfile: identity.defaultConfigProfile },
18662
18750
  ...identity.provider === void 0 ? {} : { provider: identity.provider },
18663
18751
  allowAmbientCredential: identity.allowAmbientCredential,
@@ -18692,9 +18780,9 @@ function createConfigApiRouter(deps) {
18692
18780
  return { action: "created", kind: "identity", name: input.name, value: identityValue(input.name, paths) };
18693
18781
  })
18694
18782
  ),
18695
- set: route("/rest/config/identity/set", "Update an identity's default profile, provider, ambient-credential setting, credential or anchors").input(ConfigIdentitySetInputSchema).output(ConfigIdentitySetOutputSchema).handler(
18783
+ set: route("/rest/config/identity/set", "Update an identity's label, default profile, provider, ambient-credential setting, credential or anchors").input(ConfigIdentitySetInputSchema).output(ConfigIdentitySetOutputSchema).handler(
18696
18784
  ({ input }) => guarded(() => {
18697
- requireChange(input.defaultConfigProfile !== void 0 || input.provider !== void 0 || input.allowAmbientCredential !== void 0 || input.credential !== void 0 || input.anchors !== void 0, "defaultConfigProfile, provider, allowAmbientCredential, credential or anchors");
18785
+ requireChange(input.label !== void 0 || input.defaultConfigProfile !== void 0 || input.provider !== void 0 || input.allowAmbientCredential !== void 0 || input.credential !== void 0 || input.anchors !== void 0, "label, defaultConfigProfile, provider, allowAmbientCredential, credential or anchors");
18698
18786
  if (!identityExists(paths, input.name)) {
18699
18787
  throw new IdentityNotFoundError(input.name);
18700
18788
  }
@@ -18704,6 +18792,9 @@ function createConfigApiRouter(deps) {
18704
18792
  if (typeof input.provider === "string") {
18705
18793
  requireProviderExists(paths, input.provider);
18706
18794
  }
18795
+ if (input.label !== void 0) {
18796
+ setIdentityLabel(paths, input.name, input.label === false ? void 0 : input.label);
18797
+ }
18707
18798
  if (input.defaultConfigProfile !== void 0) {
18708
18799
  setDefaultConfigProfile(paths, input.name, input.defaultConfigProfile === false ? void 0 : input.defaultConfigProfile);
18709
18800
  }