claude-use 11.9.0 → 11.11.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.mjs CHANGED
@@ -324,10 +324,10 @@ var init_schema = __esm({
324
324
  ANTIGRAVITY_EFFORTS = ["none", "low", "medium", "high", "xhigh", "max"];
325
325
  ANTIGRAVITY_DEFAULT_MODE = "cloud";
326
326
  ANTIGRAVITY_DEFAULT_TIER_MODELS = Object.freeze({
327
- fable: "gemini-2.5-pro",
328
- opus: "gemini-2.5-pro",
329
- sonnet: "gemini-2.5-flash",
330
- haiku: "gemini-2.5-flash"
327
+ fable: "gemini-3.8-flash-high",
328
+ opus: "gemini-3.8-flash-high",
329
+ sonnet: "gemini-3.8-flash-medium",
330
+ haiku: "gemini-3.8-flash-low"
331
331
  });
332
332
  AntigravityProviderConfigSchema = z.strictObject({
333
333
  /** Operational mode: direct cloud endpoint or local ACP daemon. Defaults to `cloud`. */
@@ -2817,7 +2817,7 @@ var init_package = __esm({
2817
2817
  "package.json"() {
2818
2818
  package_default = {
2819
2819
  name: "claude-use",
2820
- version: "11.9.0",
2820
+ version: "11.11.0",
2821
2821
  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.",
2822
2822
  license: "MIT",
2823
2823
  author: "Joseph Mearman <joseph@mearman.co.uk>",
@@ -4645,7 +4645,7 @@ var init_identity = __esm({
4645
4645
 
4646
4646
  // src/usage/schema.ts
4647
4647
  import { z as z10 } from "zod";
4648
- var USAGE_SCHEMA_VERSION, VersionSchema, InstantSchema, TokenCountSchema, TokenUsageSchema, LIMIT_KINDS, LimitClassificationSchema, UsageRecordSchema, QuotaWindowSchema, ExtraUsageSpendSchema, UnifiedRateLimitSchema, RateLimitStateSchema, LimitEventSchema, ProviderQuotaWindowSchema, ProviderQuotaSchema, ProviderUsageStateSchema, AccountMetadataSchema, UsageSnapshotSchema;
4648
+ var USAGE_SCHEMA_VERSION, VersionSchema, InstantSchema, TokenCountSchema, TokenUsageSchema, LIMIT_KINDS, LimitClassificationSchema, UsageRecordSchema, QuotaWindowSchema, ExtraUsageSpendSchema, UnifiedRateLimitSchema, RateLimitStateSchema, LimitEventSchema, ProviderQuotaWindowSchema, ProviderAccountSchema, ProviderQuotaSchema, ProviderUsageStateSchema, AccountMetadataSchema, UsageSnapshotSchema;
4649
4649
  var init_schema2 = __esm({
4650
4650
  "src/usage/schema.ts"() {
4651
4651
  "use strict";
@@ -4776,12 +4776,18 @@ var init_schema2 = __esm({
4776
4776
  used: z10.number().nonnegative().optional(),
4777
4777
  remaining: z10.number().nonnegative().optional()
4778
4778
  });
4779
+ ProviderAccountSchema = z10.strictObject({
4780
+ email: z10.string().optional(),
4781
+ accountId: z10.string().optional()
4782
+ });
4779
4783
  ProviderQuotaSchema = z10.strictObject({
4780
4784
  observedAt: InstantSchema,
4781
4785
  /** Which usage endpoint produced it (`z.ai`). */
4782
4786
  source: z10.string(),
4783
4787
  /** The subscription level the endpoint reports, when it does. */
4784
4788
  level: z10.string().optional(),
4789
+ /** The account the provider's credential belongs to, when its endpoint reports it. */
4790
+ account: ProviderAccountSchema.optional(),
4785
4791
  windows: z10.array(ProviderQuotaWindowSchema)
4786
4792
  });
4787
4793
  ProviderUsageStateSchema = z10.strictObject({
@@ -6170,11 +6176,33 @@ function formatCredentialSummary(summary) {
6170
6176
  function describeCredential(credential) {
6171
6177
  return formatCredentialSummary(summariseCredential(credential));
6172
6178
  }
6179
+ function isRecord5(value) {
6180
+ return typeof value === "object" && value !== null && !Array.isArray(value);
6181
+ }
6182
+ function unpackKeyringToken(raw) {
6183
+ const trimmed = raw.trim();
6184
+ if (!trimmed.startsWith(GO_KEYRING_BASE64_PREFIX)) {
6185
+ return trimmed;
6186
+ }
6187
+ try {
6188
+ const base64Str = trimmed.slice(GO_KEYRING_BASE64_PREFIX.length);
6189
+ const decoded = Buffer.from(base64Str, "base64").toString("utf8");
6190
+ const parsed = JSON.parse(decoded);
6191
+ if (isRecord5(parsed) && isRecord5(parsed.token)) {
6192
+ const accessToken = parsed.token.access_token;
6193
+ if (typeof accessToken === "string" && accessToken.trim() !== "") {
6194
+ return accessToken.trim();
6195
+ }
6196
+ }
6197
+ } catch {
6198
+ }
6199
+ return trimmed;
6200
+ }
6173
6201
  function trySource(source, params) {
6174
6202
  const none = (reason, warn = false) => ({ ok: false, reason, warn });
6175
6203
  if ("env" in source) {
6176
6204
  const value = params.env[source.env];
6177
- return value === void 0 || value === "" ? none("is unset or empty") : { ok: true, token: value };
6205
+ return value === void 0 || value === "" ? none("is unset or empty") : { ok: true, token: unpackKeyringToken(value) };
6178
6206
  }
6179
6207
  if ("literal" in source) {
6180
6208
  return { ok: true, token: source.literal };
@@ -6190,7 +6218,7 @@ function trySource(source, params) {
6190
6218
  true
6191
6219
  );
6192
6220
  }
6193
- const token2 = read.content.trim();
6221
+ const token2 = unpackKeyringToken(read.content.trim());
6194
6222
  return token2 === "" ? none("is empty") : { ok: true, token: token2 };
6195
6223
  }
6196
6224
  const argv = commandArgv(source);
@@ -6208,7 +6236,7 @@ function trySource(source, params) {
6208
6236
  const outcome = result.status === null ? "could not be run or was killed by a signal" : `exited with status ${String(result.status)}`;
6209
6237
  return none(`${outcome}${stderr === "" ? "" : `: ${stderr}`}`);
6210
6238
  }
6211
- const token = result.stdout.trim();
6239
+ const token = unpackKeyringToken(result.stdout.trim());
6212
6240
  return token === "" ? none("printed no token") : { ok: true, token };
6213
6241
  }
6214
6242
  function warmCommandFor(subject) {
@@ -6252,7 +6280,7 @@ function credentialVariables(target, token) {
6252
6280
  CLAUDE_CODE_OAUTH_TOKEN: target === "oauthToken" ? token : void 0
6253
6281
  };
6254
6282
  }
6255
- var CREDENTIAL_UNAVAILABLE_EXIT, CREDENTIAL_COMMAND_TIMEOUT_MS, CREDENTIAL_INTERACTIVE_TIMEOUT_MS, GROUP_OTHER_PERMISSION_BITS, PERMISSION_BITS2, OCTAL_RADIX2;
6283
+ var CREDENTIAL_UNAVAILABLE_EXIT, CREDENTIAL_COMMAND_TIMEOUT_MS, CREDENTIAL_INTERACTIVE_TIMEOUT_MS, GROUP_OTHER_PERMISSION_BITS, PERMISSION_BITS2, OCTAL_RADIX2, GO_KEYRING_BASE64_PREFIX;
6256
6284
  var init_credential = __esm({
6257
6285
  "src/credential.ts"() {
6258
6286
  "use strict";
@@ -6263,6 +6291,7 @@ var init_credential = __esm({
6263
6291
  GROUP_OTHER_PERMISSION_BITS = 63;
6264
6292
  PERMISSION_BITS2 = 511;
6265
6293
  OCTAL_RADIX2 = 8;
6294
+ GO_KEYRING_BASE64_PREFIX = "go-keyring-base64:";
6266
6295
  }
6267
6296
  });
6268
6297
 
@@ -6275,14 +6304,14 @@ function providerJsonPath(paths, name) {
6275
6304
  function providerExists(paths, name) {
6276
6305
  return fs7.existsSync(providerJsonPath(paths, name));
6277
6306
  }
6278
- function isRecord5(value) {
6307
+ function isRecord6(value) {
6279
6308
  return typeof value === "object" && value !== null && !Array.isArray(value);
6280
6309
  }
6281
6310
  function legacyProviderConversion(raw) {
6282
- if (!isRecord5(raw) || "credential" in raw) {
6311
+ if (!isRecord6(raw) || "credential" in raw) {
6283
6312
  return void 0;
6284
6313
  }
6285
- const env = isRecord5(raw.env) ? raw.env : void 0;
6314
+ const env = isRecord6(raw.env) ? raw.env : void 0;
6286
6315
  const legacyEnvKeys = env === void 0 ? [] : Object.keys(env).filter((key) => LEGACY_ENV_CREDENTIAL_KEYS.includes(key));
6287
6316
  const fields = [...LEGACY_PROVIDER_FIELDS.filter((field) => field in raw), ...legacyEnvKeys.map((key) => `env.${key}`)];
6288
6317
  if (fields.length === 0) {
@@ -8658,12 +8687,20 @@ var init_identityClaude = __esm({
8658
8687
  }
8659
8688
  });
8660
8689
 
8690
+ // src/antigravity/cloudUpstream.ts
8691
+ var init_cloudUpstream = __esm({
8692
+ "src/antigravity/cloudUpstream.ts"() {
8693
+ "use strict";
8694
+ }
8695
+ });
8696
+
8661
8697
  // src/usage/providerQuota.ts
8662
8698
  import { z as z29 } from "zod";
8663
- var MS_PER_SECOND7, SECONDS_PER_HOUR, HOURS_PER_DAY4, DAYS_PER_MONTH, ZAI_HOST, ZAI_QUOTA_URL, ZAI_UNIT_HOURS, ZAI_UNIT_MONTHS, ZAI_UNIT_MS, ZaiLimitSchema, ZaiResponseSchema, OPENROUTER_HOST, OPENROUTER_KEY_URL, OPENROUTER_CREDITS_URL, MS_PER_DAY3, OpenRouterKeySchema, OpenRouterCreditsSchema;
8699
+ var MS_PER_SECOND7, SECONDS_PER_HOUR, HOURS_PER_DAY4, DAYS_PER_MONTH, ZAI_HOST, ZAI_QUOTA_URL, ZAI_UNIT_HOURS, ZAI_UNIT_MONTHS, ZAI_UNIT_MS, ZaiLimitSchema, ZaiResponseSchema, OPENROUTER_HOST, OPENROUTER_KEY_URL, OPENROUTER_CREDITS_URL, MS_PER_DAY3, OpenRouterKeySchema, OpenRouterCreditsSchema, ANTIGRAVITY_HOST, ANTIGRAVITY_QUOTA_URL, FIVE_HOURS2, DAYS_PER_WEEK, FIVE_HOURS_MS, WEEK_MS, AntigravityBucketSchema, AntigravitySummarySchema, GoogleTokenInfoSchema;
8664
8700
  var init_providerQuota = __esm({
8665
8701
  "src/usage/providerQuota.ts"() {
8666
8702
  "use strict";
8703
+ init_cloudUpstream();
8667
8704
  init_schema2();
8668
8705
  MS_PER_SECOND7 = 1e3;
8669
8706
  SECONDS_PER_HOUR = 3600;
@@ -8706,6 +8743,22 @@ var init_providerQuota = __esm({
8706
8743
  })
8707
8744
  });
8708
8745
  OpenRouterCreditsSchema = z29.object({ data: z29.object({ total_credits: z29.number().nonnegative(), total_usage: z29.number().nonnegative() }) });
8746
+ ANTIGRAVITY_HOST = "daily-cloudcode-pa.googleapis.com";
8747
+ ANTIGRAVITY_QUOTA_URL = `https://${ANTIGRAVITY_HOST}/v1internal:retrieveUserQuotaSummary`;
8748
+ FIVE_HOURS2 = 5;
8749
+ DAYS_PER_WEEK = 7;
8750
+ FIVE_HOURS_MS = FIVE_HOURS2 * SECONDS_PER_HOUR * MS_PER_SECOND7;
8751
+ WEEK_MS = DAYS_PER_WEEK * HOURS_PER_DAY4 * SECONDS_PER_HOUR * MS_PER_SECOND7;
8752
+ AntigravityBucketSchema = z29.object({
8753
+ bucketId: z29.string(),
8754
+ remainingFraction: z29.number().optional(),
8755
+ resetTime: z29.string().optional()
8756
+ });
8757
+ AntigravitySummarySchema = z29.object({ groups: z29.array(z29.object({ buckets: z29.array(AntigravityBucketSchema) })) });
8758
+ GoogleTokenInfoSchema = z29.object({
8759
+ email: z29.string().optional(),
8760
+ sub: z29.string().optional()
8761
+ });
8709
8762
  }
8710
8763
  });
8711
8764
 
@@ -15841,15 +15894,15 @@ function createQuotaExpiringPublisher(hub, deps) {
15841
15894
 
15842
15895
  // src/frontdoor/rcLiveUsage.ts
15843
15896
  var RC_RATE_LIMIT_EVENT_TYPE = "rate_limit_event";
15844
- function isRecord6(value) {
15897
+ function isRecord7(value) {
15845
15898
  return typeof value === "object" && value !== null && !Array.isArray(value);
15846
15899
  }
15847
15900
  function rcRateLimitInfoOf(event) {
15848
15901
  const payload = event.envelope.payload;
15849
- if (!isRecord6(payload) || payload.type !== RC_RATE_LIMIT_EVENT_TYPE) {
15902
+ if (!isRecord7(payload) || payload.type !== RC_RATE_LIMIT_EVENT_TYPE) {
15850
15903
  return void 0;
15851
15904
  }
15852
- if (!isRecord6(payload.rate_limit_info)) {
15905
+ if (!isRecord7(payload.rate_limit_info)) {
15853
15906
  return void 0;
15854
15907
  }
15855
15908
  const parsed = RcRateLimitInfoSchema.safeParse(payload.rate_limit_info);
@@ -15937,7 +15990,7 @@ function createSseParser() {
15937
15990
  }
15938
15991
  };
15939
15992
  }
15940
- function isRecord7(value) {
15993
+ function isRecord8(value) {
15941
15994
  return typeof value === "object" && value !== null && !Array.isArray(value);
15942
15995
  }
15943
15996
  function sequenceNumOf(value) {
@@ -15959,7 +16012,7 @@ function parseRcStreamEnvelope(parsed) {
15959
16012
  } catch {
15960
16013
  return void 0;
15961
16014
  }
15962
- if (!isRecord7(data)) {
16015
+ if (!isRecord8(data)) {
15963
16016
  return void 0;
15964
16017
  }
15965
16018
  const eventType = data.event_type;
@@ -16200,7 +16253,7 @@ init_capability();
16200
16253
  // src/frontdoor/rcSelfHostEndpoints.ts
16201
16254
  var RC_SOURCE_WORKER = "worker";
16202
16255
  var RC_SOURCE_CLIENT = "client";
16203
- function isRecord8(value) {
16256
+ function isRecord9(value) {
16204
16257
  return typeof value === "object" && value !== null && !Array.isArray(value);
16205
16258
  }
16206
16259
  function parseJsonObject2(body) {
@@ -16210,7 +16263,7 @@ function parseJsonObject2(body) {
16210
16263
  } catch {
16211
16264
  return void 0;
16212
16265
  }
16213
- return isRecord8(parsed) ? parsed : void 0;
16266
+ return isRecord9(parsed) ? parsed : void 0;
16214
16267
  }
16215
16268
  function nonEmptyString2(record, field) {
16216
16269
  const value = record === void 0 ? void 0 : record[field];
@@ -16284,7 +16337,7 @@ async function serveRcClientChannels(ctx, tail, method, maxBatchEvents) {
16284
16337
  }
16285
16338
  const results = [];
16286
16339
  for (const event of events) {
16287
- if (!isRecord8(event) || !isRecord8(event.payload)) {
16340
+ if (!isRecord9(event) || !isRecord9(event.payload)) {
16288
16341
  await ctx.answerJson(response, HTTP_STATUS.badRequest, { type: "error", error: { type: "invalid_request_error", message: "every event in a teleport write is an object carrying one payload object" } });
16289
16342
  return true;
16290
16343
  }
@@ -16384,7 +16437,7 @@ async function serveRcCompatSessions(ctx, pathname, compatPath) {
16384
16437
  // src/frontdoor/rcSelfHostConversations.ts
16385
16438
  var RC_CONVERSATIONS_PATH_PREFIX = "/v1/code/conversations";
16386
16439
  var RC_CONVERSATION_ID_PREFIX = "conv_";
16387
- function isRecord9(value) {
16440
+ function isRecord10(value) {
16388
16441
  return typeof value === "object" && value !== null && !Array.isArray(value);
16389
16442
  }
16390
16443
  function parseJsonObject3(body) {
@@ -16394,7 +16447,7 @@ function parseJsonObject3(body) {
16394
16447
  } catch {
16395
16448
  return void 0;
16396
16449
  }
16397
- return isRecord9(parsed) ? parsed : void 0;
16450
+ return isRecord10(parsed) ? parsed : void 0;
16398
16451
  }
16399
16452
  function nonEmptyString3(record, field) {
16400
16453
  const value = record === void 0 ? void 0 : record[field];
@@ -16448,7 +16501,7 @@ async function serveRcConversations(ctx, pathname, method) {
16448
16501
  }
16449
16502
  const results = [];
16450
16503
  for (const event of events) {
16451
- if (!isRecord9(event) || !isRecord9(event.payload)) {
16504
+ if (!isRecord10(event) || !isRecord10(event.payload)) {
16452
16505
  await ctx.answerJson(response, HTTP_STATUS.badRequest, { type: "error", error: { type: "invalid_request_error", message: "every event in a write is an object carrying one payload object" } });
16453
16506
  return;
16454
16507
  }
@@ -16480,7 +16533,7 @@ var RC_SELF_HOST_SCOPE_LIST = ["user:profile", "user:inference", "user:sessions:
16480
16533
  var RC_SELF_HOST_OAUTH_TOKEN_TTL_SECONDS = 3600;
16481
16534
  var MS_PER_SECOND5 = 1e3;
16482
16535
  var HTTP_SERVICE_UNAVAILABLE = 503;
16483
- function isRecord10(value) {
16536
+ function isRecord11(value) {
16484
16537
  return typeof value === "object" && value !== null && !Array.isArray(value);
16485
16538
  }
16486
16539
  function parseJsonObject4(body) {
@@ -16490,7 +16543,7 @@ function parseJsonObject4(body) {
16490
16543
  } catch {
16491
16544
  return void 0;
16492
16545
  }
16493
- return isRecord10(parsed) ? parsed : void 0;
16546
+ return isRecord11(parsed) ? parsed : void 0;
16494
16547
  }
16495
16548
  function growthBookFeatures() {
16496
16549
  return {
@@ -16844,7 +16897,7 @@ var RC_SELF_HOST_WORKER_EPOCH = 1;
16844
16897
  var RC_STREAM_EVENT_NAME2 = "client_event";
16845
16898
  var CONFLICT_REASON_HEADER2 = "x-ccr-conflict-reason";
16846
16899
  var CONFLICT_REASON_EPOCH_STALE = "epoch_stale";
16847
- function isRecord11(value) {
16900
+ function isRecord12(value) {
16848
16901
  return typeof value === "object" && value !== null && !Array.isArray(value);
16849
16902
  }
16850
16903
  function isWebSearchRefusal(value) {
@@ -16928,7 +16981,7 @@ function parseJsonObject5(body) {
16928
16981
  } catch {
16929
16982
  return void 0;
16930
16983
  }
16931
- return isRecord11(parsed) ? parsed : void 0;
16984
+ return isRecord12(parsed) ? parsed : void 0;
16932
16985
  }
16933
16986
  function mintWorkerJwt(randomToken, issuedAt) {
16934
16987
  const encode = (value) => Buffer.from(JSON.stringify(value), "utf8").toString("base64url");
@@ -17188,7 +17241,7 @@ data: ${JSON.stringify(envelope)}
17188
17241
  if (status !== void 0) {
17189
17242
  session.workerStatus = status;
17190
17243
  }
17191
- if (isRecord11(body?.external_metadata)) {
17244
+ if (isRecord12(body?.external_metadata)) {
17192
17245
  session.externalMetadata = body.external_metadata;
17193
17246
  }
17194
17247
  await answerJson2(response, HTTP_STATUS.ok, {});
@@ -17218,7 +17271,7 @@ data: ${JSON.stringify(envelope)}
17218
17271
  }
17219
17272
  const results = [];
17220
17273
  for (const event of events) {
17221
- if (!isRecord11(event) || !isRecord11(event.payload)) {
17274
+ if (!isRecord12(event) || !isRecord12(event.payload)) {
17222
17275
  await answerJson2(response, HTTP_STATUS.badRequest, { type: "error", error: { type: "invalid_request_error", message: "every event in a batch is an object carrying one payload object" } });
17223
17276
  return;
17224
17277
  }
@@ -17251,7 +17304,7 @@ data: ${JSON.stringify(envelope)}
17251
17304
  return;
17252
17305
  }
17253
17306
  for (const event of events) {
17254
- if (isRecord11(event)) {
17307
+ if (isRecord12(event)) {
17255
17308
  session.internalEvents.push({ eventId: deps.newUuid(), body: event });
17256
17309
  }
17257
17310
  }
@@ -17347,7 +17400,7 @@ data: ${JSON.stringify(envelope)}
17347
17400
  }
17348
17401
  const results = [];
17349
17402
  for (const event of events) {
17350
- if (!isRecord11(event) || !isRecord11(event.payload)) {
17403
+ if (!isRecord12(event) || !isRecord12(event.payload)) {
17351
17404
  await answerJson2(response, HTTP_STATUS.badRequest, { type: "error", error: { type: "invalid_request_error", message: "every event in a write is an object carrying one payload object" } });
17352
17405
  return;
17353
17406
  }
@@ -17484,7 +17537,7 @@ var RC_SELF_HOST_RECORD_DIR = "rc-selfhost";
17484
17537
  var RC_SELF_HOST_RECORD_FILE = "credential.json";
17485
17538
  var SELF_HOST_EMAIL = "selfhost@agent-shim.invalid";
17486
17539
  var SELF_HOST_SUBSCRIPTION_TYPE = "max";
17487
- function isRecord12(value) {
17540
+ function isRecord13(value) {
17488
17541
  return typeof value === "object" && value !== null && !Array.isArray(value);
17489
17542
  }
17490
17543
  function readJsonObject(fs13, file) {
@@ -17498,7 +17551,7 @@ function readJsonObject(fs13, file) {
17498
17551
  } catch {
17499
17552
  return void 0;
17500
17553
  }
17501
- return isRecord12(parsed) ? parsed : void 0;
17554
+ return isRecord13(parsed) ? parsed : void 0;
17502
17555
  }
17503
17556
  function readRcSelfHostRecord(fs13, frontdoorDir) {
17504
17557
  const parsed = readJsonObject(fs13, path33.join(frontdoorDir, RC_SELF_HOST_RECORD_DIR, RC_SELF_HOST_RECORD_FILE));
@@ -17522,7 +17575,7 @@ function mintRcSelfHostCredential(deps) {
17522
17575
  const recordFile = path33.join(recordDir, RC_SELF_HOST_RECORD_FILE);
17523
17576
  const previousRecord = readRcSelfHostRecord(deps.fs, deps.frontdoorDir);
17524
17577
  const existingCredentials = readJsonObject(deps.fs, credentialsFile);
17525
- const existingOauth = isRecord12(existingCredentials?.claudeAiOauth) ? existingCredentials.claudeAiOauth : void 0;
17578
+ const existingOauth = isRecord13(existingCredentials?.claudeAiOauth) ? existingCredentials.claudeAiOauth : void 0;
17526
17579
  const existingToken = typeof existingOauth?.accessToken === "string" && existingOauth.accessToken !== "" ? existingOauth.accessToken : void 0;
17527
17580
  const existingIsOwn = existingToken !== void 0 && previousRecord?.accessToken === existingToken;
17528
17581
  if (existingToken !== void 0 && !existingIsOwn && !deps.force) {
@@ -17539,7 +17592,7 @@ function mintRcSelfHostCredential(deps) {
17539
17592
  deps.fs.writeFilePrivate(credentialsFile, `${JSON.stringify({ ...existingCredentials, claudeAiOauth: { accessToken, refreshToken, expiresAt: null, scopes: [...RC_SELF_HOST_SCOPE_LIST], subscriptionType: SELF_HOST_SUBSCRIPTION_TYPE, rateLimitTier: null } }, null, 2)}
17540
17593
  `);
17541
17594
  const claudeJson = readJsonObject(deps.fs, claudeJsonFile) ?? {};
17542
- const existingBlock = (value) => isRecord12(value) ? value : {};
17595
+ const existingBlock = (value) => isRecord13(value) ? value : {};
17543
17596
  deps.fs.writeFilePrivate(claudeJsonFile, `${JSON.stringify({
17544
17597
  ...claudeJson,
17545
17598
  oauthAccount: {
@@ -5478,6 +5478,10 @@ declare const UsageSnapshotSchema: z.ZodObject<{
5478
5478
  observedAt: z.ZodISODateTime;
5479
5479
  source: z.ZodString;
5480
5480
  level: z.ZodOptional<z.ZodString>;
5481
+ account: z.ZodOptional<z.ZodObject<{
5482
+ email: z.ZodOptional<z.ZodString>;
5483
+ accountId: z.ZodOptional<z.ZodString>;
5484
+ }, z.core.$strict>>;
5481
5485
  windows: z.ZodArray<z.ZodObject<{
5482
5486
  measures: z.ZodString;
5483
5487
  periodMs: z.ZodOptional<z.ZodNumber>;
@@ -7772,6 +7776,10 @@ declare function createControlApiRouter(deps: ControlApiDeps): {
7772
7776
  observedAt: zod.ZodISODateTime;
7773
7777
  source: zod.ZodString;
7774
7778
  level: zod.ZodOptional<zod.ZodString>;
7779
+ account: zod.ZodOptional<zod.ZodObject<{
7780
+ email: zod.ZodOptional<zod.ZodString>;
7781
+ accountId: zod.ZodOptional<zod.ZodString>;
7782
+ }, zod_v4_core.$strict>>;
7775
7783
  windows: zod.ZodArray<zod.ZodObject<{
7776
7784
  measures: zod.ZodString;
7777
7785
  periodMs: zod.ZodOptional<zod.ZodNumber>;
@@ -9904,6 +9912,10 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
9904
9912
  observedAt: zod.ZodISODateTime;
9905
9913
  source: zod.ZodString;
9906
9914
  level: zod.ZodOptional<zod.ZodString>;
9915
+ account: zod.ZodOptional<zod.ZodObject<{
9916
+ email: zod.ZodOptional<zod.ZodString>;
9917
+ accountId: zod.ZodOptional<zod.ZodString>;
9918
+ }, zod_v4_core.$strict>>;
9907
9919
  windows: zod.ZodArray<zod.ZodObject<{
9908
9920
  measures: zod.ZodString;
9909
9921
  periodMs: zod.ZodOptional<zod.ZodNumber>;
@@ -12013,6 +12025,10 @@ declare const UsageListOutputSchema: z.ZodObject<{
12013
12025
  observedAt: z.ZodISODateTime;
12014
12026
  source: z.ZodString;
12015
12027
  level: z.ZodOptional<z.ZodString>;
12028
+ account: z.ZodOptional<z.ZodObject<{
12029
+ email: z.ZodOptional<z.ZodString>;
12030
+ accountId: z.ZodOptional<z.ZodString>;
12031
+ }, z.core.$strict>>;
12016
12032
  windows: z.ZodArray<z.ZodObject<{
12017
12033
  measures: z.ZodString;
12018
12034
  periodMs: z.ZodOptional<z.ZodNumber>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-use",
3
- "version": "11.9.0",
3
+ "version": "11.11.0",
4
4
  "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.",
5
5
  "license": "MIT",
6
6
  "author": "Joseph Mearman <joseph@mearman.co.uk>",