claude-use 11.12.0 → 11.13.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/cli.cjs CHANGED
@@ -34093,7 +34093,7 @@ var init_package = __esm({
34093
34093
  "package.json"() {
34094
34094
  package_default = {
34095
34095
  name: "claude-use",
34096
- version: "11.12.0",
34096
+ version: "11.13.0",
34097
34097
  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.",
34098
34098
  license: "MIT",
34099
34099
  author: "Joseph Mearman <joseph@mearman.co.uk>",
@@ -64152,7 +64152,7 @@ function quotaFreshnessMs(quota) {
64152
64152
  const lengths = quota.windows.flatMap((window) => window.periodMs === void 0 ? [] : [window.periodMs]);
64153
64153
  return lengths.length === 0 ? Number.POSITIVE_INFINITY : Math.min(...lengths) / PERCENT3;
64154
64154
  }
64155
- var ProviderQuotaError, MS_PER_SECOND6, SECONDS_PER_HOUR, HOURS_PER_DAY3, DAYS_PER_MONTH, PERCENT3, HTTP_OK, ZAI_SOURCE, ZAI_HOST, ZAI_QUOTA_URL, ZAI_UNIT_HOURS, ZAI_UNIT_MONTHS, ZAI_UNIT_MS, ZAI_MEASURES, ZaiLimitSchema, ZaiResponseSchema, zaiQuotaAdapter, OPENROUTER_SOURCE, OPENROUTER_HOST, OPENROUTER_KEY_URL, OPENROUTER_CREDITS_URL, HTTP_FORBIDDEN, MS_PER_DAY2, OpenRouterKeySchema, OpenRouterCreditsSchema, openRouterQuotaAdapter, ANTIGRAVITY_SOURCE, ANTIGRAVITY_HOST, ANTIGRAVITY_QUOTA_URL, GOOGLE_TOKENINFO_URL, FIVE_HOURS2, DAYS_PER_WEEK, FIVE_HOURS_MS, WEEK_MS, AntigravityBucketSchema, AntigravitySummarySchema, GoogleTokenInfoSchema, ANTIGRAVITY_WINDOW_MS, antigravityQuotaAdapter, PROVIDER_QUOTA_ADAPTERS;
64155
+ var ProviderQuotaError, MS_PER_SECOND6, SECONDS_PER_HOUR, HOURS_PER_DAY3, DAYS_PER_MONTH, PERCENT3, HTTP_OK, ZAI_SOURCE, ZAI_HOST, ZAI_QUOTA_URL, ZAI_UNIT_HOURS, ZAI_UNIT_MONTHS, ZAI_UNIT_MS, ZAI_MEASURES, ZaiLimitSchema, ZaiResponseSchema, zaiQuotaAdapter, OPENROUTER_SOURCE, OPENROUTER_HOST, OPENROUTER_KEY_URL, OPENROUTER_CREDITS_URL, HTTP_FORBIDDEN, MS_PER_DAY2, OpenRouterKeySchema, OpenRouterCreditsSchema, openRouterQuotaAdapter, ANTIGRAVITY_SOURCE, ANTIGRAVITY_HOST, ANTIGRAVITY_QUOTA_URL, ANTIGRAVITY_USER_URL, GOOGLE_TOKENINFO_URL, FIVE_HOURS2, DAYS_PER_WEEK, FIVE_HOURS_MS, WEEK_MS, AntigravityBucketSchema, AntigravitySummarySchema, GoogleTokenInfoSchema, AntigravityUserSchema, ANTIGRAVITY_WINDOW_MS, antigravityQuotaAdapter, PROVIDER_QUOTA_ADAPTERS;
64156
64156
  var init_providerQuota = __esm({
64157
64157
  "src/usage/providerQuota.ts"() {
64158
64158
  "use strict";
@@ -64274,6 +64274,7 @@ var init_providerQuota = __esm({
64274
64274
  ANTIGRAVITY_SOURCE = "Cloud Code";
64275
64275
  ANTIGRAVITY_HOST = "daily-cloudcode-pa.googleapis.com";
64276
64276
  ANTIGRAVITY_QUOTA_URL = `https://${ANTIGRAVITY_HOST}/v1internal:retrieveUserQuotaSummary`;
64277
+ ANTIGRAVITY_USER_URL = `https://${ANTIGRAVITY_HOST}/v1internal:loadCodeAssist`;
64277
64278
  GOOGLE_TOKENINFO_URL = "https://oauth2.googleapis.com/tokeninfo";
64278
64279
  FIVE_HOURS2 = 5;
64279
64280
  DAYS_PER_WEEK = 7;
@@ -64289,6 +64290,12 @@ var init_providerQuota = __esm({
64289
64290
  email: external_exports.string().optional(),
64290
64291
  sub: external_exports.string().optional()
64291
64292
  });
64293
+ AntigravityUserSchema = external_exports.object({
64294
+ /** The code-assist tier context, which defaults to the free tier for every account. */
64295
+ currentTier: external_exports.object({ name: external_exports.string().optional(), id: external_exports.string().optional() }).optional(),
64296
+ /** The account's paid subscription; absent when the account has none. */
64297
+ paidTier: external_exports.object({ name: external_exports.string().optional(), id: external_exports.string().optional() }).optional()
64298
+ });
64292
64299
  ANTIGRAVITY_WINDOW_MS = { "gemini-5h": FIVE_HOURS_MS, "3p-5h": FIVE_HOURS_MS, "gemini-weekly": WEEK_MS, "3p-weekly": WEEK_MS };
64293
64300
  antigravityQuotaAdapter = {
64294
64301
  source: ANTIGRAVITY_SOURCE,
@@ -64320,9 +64327,20 @@ var init_providerQuota = __esm({
64320
64327
  } catch {
64321
64328
  }
64322
64329
  }
64330
+ let level;
64331
+ const userResponse = await http8(ANTIGRAVITY_USER_URL, headers, signal, { method: "POST", body: "{}" });
64332
+ if (userResponse.status === HTTP_OK) {
64333
+ try {
64334
+ const tiers = AntigravityUserSchema.parse(JSON.parse(userResponse.text));
64335
+ const tier = tiers.paidTier ?? tiers.currentTier;
64336
+ level = tier?.name ?? tier?.id;
64337
+ } catch {
64338
+ }
64339
+ }
64323
64340
  return ProviderQuotaSchema.parse({
64324
64341
  observedAt: new Date(nowMs).toISOString(),
64325
64342
  source: ANTIGRAVITY_SOURCE,
64343
+ ...level === void 0 ? {} : { level },
64326
64344
  ...account === void 0 ? {} : { account },
64327
64345
  windows: parsed.data.groups.flatMap(
64328
64346
  (group) => group.buckets.map((bucket) => ({
@@ -133253,6 +133271,7 @@ function registerFrontDoorCommand(program2, deps) {
133253
133271
  var import_node_child_process7 = require("node:child_process");
133254
133272
  init_commandDeps();
133255
133273
  init_realPorts();
133274
+ init_account();
133256
133275
  init_read();
133257
133276
 
133258
133277
  // src/statusline/enrich.ts
@@ -133308,6 +133327,13 @@ function enrichStatuslinePayload(params) {
133308
133327
  identity,
133309
133328
  provider: params.env.AGENT_SHIM_PROVIDER === void 0 || params.env.AGENT_SHIM_PROVIDER === "" ? void 0 : params.env.AGENT_SHIM_PROVIDER,
133310
133329
  providerAccountEmail: void 0,
133330
+ providerAccountSub: void 0,
133331
+ providerPlan: void 0,
133332
+ loginAccountEmail: params.account?.emailAddress,
133333
+ loginRateLimitTier: params.account?.userRateLimitTier ?? params.account?.organizationRateLimitTier,
133334
+ loginOrganizationName: params.account?.organizationName,
133335
+ loginOrganizationType: params.account?.organizationType,
133336
+ loginSeatTier: params.account?.seatTier === "none" ? void 0 : params.account?.seatTier,
133311
133337
  fiveHourUsed: void 0,
133312
133338
  fiveHourResetAt: void 0,
133313
133339
  sevenDayUsed: void 0,
@@ -133318,13 +133344,24 @@ function enrichStatuslinePayload(params) {
133318
133344
  const scopedState = scopedName === void 0 ? void 0 : params.snapshot.providers[scopedName];
133319
133345
  const states = scopedState === void 0 ? Object.values(params.snapshot.providers) : [scopedState];
133320
133346
  let email3;
133347
+ let sub;
133348
+ let plan;
133321
133349
  for (const state of states) {
133322
- const candidate = state.quota?.account?.email;
133323
- if (email3 === void 0 && typeof candidate === "string" && candidate !== "") {
133324
- email3 = candidate;
133350
+ const account = state.quota?.account;
133351
+ const candidateEmail = account?.email;
133352
+ if (email3 === void 0 && typeof candidateEmail === "string" && candidateEmail !== "") {
133353
+ email3 = candidateEmail;
133354
+ }
133355
+ const candidateSub = account?.accountId;
133356
+ if (sub === void 0 && typeof candidateSub === "string" && candidateSub !== "") {
133357
+ sub = candidateSub;
133358
+ }
133359
+ const candidatePlan = state.quota?.level;
133360
+ if (plan === void 0 && typeof candidatePlan === "string" && candidatePlan !== "") {
133361
+ plan = candidatePlan;
133325
133362
  }
133326
133363
  }
133327
- summary = { ...summary, ...windowsOf(states), providerAccountEmail: email3 };
133364
+ summary = { ...summary, ...windowsOf(states), providerAccountEmail: email3, providerAccountSub: sub, providerPlan: plan };
133328
133365
  }
133329
133366
  if (typeof params.payload !== "object" || params.payload === null || Array.isArray(params.payload)) {
133330
133367
  return { payload: params.payload, summary };
@@ -133428,6 +133465,54 @@ function cacheShareText(view) {
133428
133465
  }
133429
133466
  return "";
133430
133467
  }
133468
+ function tierSuffixOf(tier) {
133469
+ const match = /_(\d+x)$/i.exec(tier ?? "");
133470
+ return match === null ? void 0 : match[1];
133471
+ }
133472
+ function accountPlanLabel(summary) {
133473
+ switch (summary.loginOrganizationType) {
133474
+ case void 0:
133475
+ return planLabelOf(summary.loginRateLimitTier);
133476
+ case "claude_max": {
133477
+ const tier = tierSuffixOf(summary.loginRateLimitTier);
133478
+ return tier === void 0 ? "Max" : `Max ${tier}`;
133479
+ }
133480
+ case "claude_pro":
133481
+ return "Pro";
133482
+ case "claude_team":
133483
+ if (summary.loginSeatTier === "team_standard") {
133484
+ return "Team Standard";
133485
+ }
133486
+ if (summary.loginSeatTier === "team_tier_1") {
133487
+ return "Team Premium";
133488
+ }
133489
+ return "Team";
133490
+ case "claude_enterprise":
133491
+ return "Enterprise";
133492
+ default:
133493
+ return summary.loginOrganizationType;
133494
+ }
133495
+ }
133496
+ function planLabelOf(tier) {
133497
+ if (tier === void 0 || tier === "") {
133498
+ return void 0;
133499
+ }
133500
+ const cleaned = tier.startsWith("default_") ? tier.slice("default_".length) : tier;
133501
+ if (cleaned === "free") {
133502
+ return "Free";
133503
+ }
133504
+ const maxWithMultiplier = /^claude_max_(\d+)x$/.exec(cleaned);
133505
+ if (maxWithMultiplier !== null) {
133506
+ return `Max ${maxWithMultiplier[1] ?? ""}x`;
133507
+ }
133508
+ if (cleaned === "claude_max") {
133509
+ return "Max";
133510
+ }
133511
+ if (cleaned === "claude_pro") {
133512
+ return "Pro";
133513
+ }
133514
+ return cleaned;
133515
+ }
133431
133516
  function secondsUntil(resetAt, nowMs) {
133432
133517
  if (resetAt === void 0) {
133433
133518
  return void 0;
@@ -133482,6 +133567,56 @@ function renderLineWithExtra(segments, maxWidth, separator, baseBarWidth) {
133482
133567
  }
133483
133568
  return segments.map((segment) => segment.render(baseBarWidth + (extraById.get(segment) ?? 0))).join(separator);
133484
133569
  }
133570
+ function justifySegments(segments, maxWidth, separator, baseBarWidth) {
133571
+ const rendered = segments.map((segment) => segment.render(baseBarWidth));
133572
+ if (segments.length < 2) {
133573
+ return rendered.join(separator);
133574
+ }
133575
+ const separatorLength = visibleLength(separator);
133576
+ const total = segments.reduce((sum, segment) => sum + segment.baseLength(baseBarWidth), 0) + separatorLength * (segments.length - 1);
133577
+ const spare = maxWidth - total;
133578
+ if (spare <= 0) {
133579
+ return rendered.join(separator);
133580
+ }
133581
+ const gaps = segments.length - 1;
133582
+ const extraPerGap = Math.floor(spare / gaps);
133583
+ let remainder = spare % gaps;
133584
+ const parts = [];
133585
+ segments.forEach((_, index) => {
133586
+ if (index > 0) {
133587
+ const extra = extraPerGap + (remainder > 0 ? 1 : 0);
133588
+ if (remainder > 0) {
133589
+ remainder -= 1;
133590
+ }
133591
+ const left = Math.floor(extra / 2);
133592
+ parts.push(`${" ".repeat(left + 1)}|${" ".repeat(extra - left + 1)}`);
133593
+ }
133594
+ parts.push(rendered[index] ?? "");
133595
+ });
133596
+ return parts.join("");
133597
+ }
133598
+ function packSegments(segments, maxWidth, separator, baseBarWidth, fillWrapped) {
133599
+ const separatorLength = visibleLength(separator);
133600
+ const lines = [];
133601
+ let current = [];
133602
+ let currentWidth = 0;
133603
+ for (const segment of segments) {
133604
+ const width = segment.baseLength(baseBarWidth);
133605
+ const added = current.length === 0 ? width : width + separatorLength;
133606
+ if (current.length > 0 && currentWidth + added > maxWidth) {
133607
+ lines.push(current);
133608
+ current = [segment];
133609
+ currentWidth = width;
133610
+ } else {
133611
+ current.push(segment);
133612
+ currentWidth += added;
133613
+ }
133614
+ }
133615
+ if (current.length > 0) {
133616
+ lines.push(current);
133617
+ }
133618
+ return lines.map((line) => fillWrapped ? renderLineWithExtra(line, maxWidth, separator, baseBarWidth) : justifySegments(line, maxWidth, separator, baseBarWidth));
133619
+ }
133485
133620
  function layoutGrouped(group1, group2, maxWidth, fillMode, separator, baseBarWidth) {
133486
133621
  const separatorLength = visibleLength(separator);
133487
133622
  const allSegments = [...group1, ...group2];
@@ -133495,7 +133630,7 @@ function layoutGrouped(group1, group2, maxWidth, fillMode, separator, baseBarWid
133495
133630
  if (fillUnwrapped) {
133496
133631
  return renderLineWithExtra(allSegments, maxWidth, separator, baseBarWidth);
133497
133632
  }
133498
- return allSegments.map((segment) => segment.render(baseBarWidth)).join(separator);
133633
+ return justifySegments(allSegments, maxWidth, separator, baseBarWidth);
133499
133634
  }
133500
133635
  const lines = [group1, group2].map((group) => {
133501
133636
  if (group.length === 0) {
@@ -133505,7 +133640,7 @@ function layoutGrouped(group1, group2, maxWidth, fillMode, separator, baseBarWid
133505
133640
  if (groupBase <= maxWidth) {
133506
133641
  return fillWrapped ? renderLineWithExtra(group, maxWidth, separator, baseBarWidth) : group.map((segment) => segment.render(baseBarWidth)).join(separator);
133507
133642
  }
133508
- return group.map((segment) => fillWrapped ? renderLineWithExtra([segment], maxWidth, separator, baseBarWidth) : segment.render(baseBarWidth)).join("\n");
133643
+ return packSegments(group, maxWidth, separator, baseBarWidth, fillWrapped).join("\n");
133509
133644
  });
133510
133645
  return lines.filter((line) => line !== "").join("\n");
133511
133646
  }
@@ -133514,6 +133649,21 @@ function renderStatuslineBlock(summary, view, terminalWidth, nowMs) {
133514
133649
  if (view.modelDisplayName !== void 0 && view.modelDisplayName !== "") {
133515
133650
  header.push(new Segment("static", view.modelDisplayName));
133516
133651
  }
133652
+ if (summary.provider !== void 0) {
133653
+ const account = [summary.providerAccountEmail, summary.providerPlan].filter((part) => part !== void 0);
133654
+ header.push(new Segment("static", account.length > 0 ? `${summary.provider} \xB7 ${account.join(" \xB7 ")}` : summary.provider));
133655
+ }
133656
+ const loginPlan = summary.provider === void 0 ? accountPlanLabel(summary) : void 0;
133657
+ const loginOrgName = summary.loginOrganizationType === "claude_team" || summary.loginOrganizationType === "claude_enterprise" ? summary.loginOrganizationName : void 0;
133658
+ const loginParts = [summary.loginAccountEmail, loginOrgName, loginPlan].filter((part) => part !== void 0);
133659
+ if (summary.loginAccountEmail !== void 0 && summary.loginAccountEmail !== summary.providerAccountEmail) {
133660
+ header.push(new Segment("static", loginParts.join(" \xB7 ")));
133661
+ } else if (summary.provider === void 0 && loginParts.length > 0) {
133662
+ header.push(new Segment("static", loginParts.join(" \xB7 ")));
133663
+ }
133664
+ if (summary.identity !== void 0 && summary.provider !== void 0 && summary.identity !== summary.providerAccountEmail && summary.identity !== summary.loginAccountEmail) {
133665
+ header.push(new Segment("static", summary.identity));
133666
+ }
133517
133667
  const contextGroup = [];
133518
133668
  if (view.contextUsedPercentage !== void 0) {
133519
133669
  const fraction = Math.max(0, Math.min(1, view.contextUsedPercentage / FULL_PERCENT2));
@@ -133534,13 +133684,10 @@ function renderStatuslineBlock(summary, view, terminalWidth, nowMs) {
133534
133684
  const color = statusColor(fraction, true);
133535
133685
  quotaGroup.push(new Segment("bar", "", "Wk ", ` ${color}${summary.sevenDayUsed.toFixed(1)}%${RESET} (${formatDuration(secondsUntil(summary.sevenDayResetAt, nowMs))})`, fraction, true));
133536
133686
  }
133537
- if (summary.provider !== void 0) {
133538
- quotaGroup.push(new Segment("static", summary.providerAccountEmail === void 0 ? summary.provider : `${summary.provider} \xB7 ${summary.providerAccountEmail}`));
133539
- }
133540
133687
  const width = Math.max(TWENTY, terminalWidth - RESERVED_COLUMNS);
133541
133688
  const lines = [];
133542
133689
  if (header.length > 0) {
133543
- lines.push(header.map((segment) => segment.render(BAR_WIDTH)).join(SEPARATOR2));
133690
+ lines.push(layoutGrouped(header, [], width, "never", SEPARATOR2, BAR_WIDTH));
133544
133691
  }
133545
133692
  const body = layoutGrouped(contextGroup, quotaGroup, width, "always", SEPARATOR2, BAR_WIDTH);
133546
133693
  if (body !== "") {
@@ -133599,14 +133746,20 @@ function registerStatuslineCommand(program2, deps) {
133599
133746
  }
133600
133747
  const identity = identityOf(process.env);
133601
133748
  let snapshot;
133749
+ let account;
133602
133750
  if (identity !== void 0) {
133603
133751
  try {
133604
133752
  snapshot = readUsageSnapshot(realFarmFs, deps.paths.usageSnapshotsDir, identity);
133605
133753
  } catch {
133606
133754
  snapshot = void 0;
133607
133755
  }
133756
+ try {
133757
+ account = readAccountMetadata(realFarmFs, deps.paths.identitiesDir, identity);
133758
+ } catch {
133759
+ account = void 0;
133760
+ }
133608
133761
  }
133609
- const { payload: enriched, summary } = enrichStatuslinePayload({ payload, env: process.env, snapshot });
133762
+ const { payload: enriched, summary } = enrichStatuslinePayload({ payload, env: process.env, snapshot, account });
133610
133763
  const renderer = process.env.AGENT_SHIM_STATUSLINE_CMD;
133611
133764
  if (renderer !== void 0 && renderer !== "") {
133612
133765
  const child = (0, import_node_child_process7.spawn)("/bin/sh", ["-c", renderer], { stdio: ["pipe", "inherit", "inherit"] });
package/dist/index.cjs CHANGED
@@ -2841,7 +2841,7 @@ var init_package = __esm({
2841
2841
  "package.json"() {
2842
2842
  package_default = {
2843
2843
  name: "claude-use",
2844
- version: "11.12.0",
2844
+ version: "11.13.0",
2845
2845
  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.",
2846
2846
  license: "MIT",
2847
2847
  author: "Joseph Mearman <joseph@mearman.co.uk>",
@@ -8724,7 +8724,7 @@ var init_cloudUpstream = __esm({
8724
8724
  });
8725
8725
 
8726
8726
  // src/usage/providerQuota.ts
8727
- var import_zod29, 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;
8727
+ var import_zod29, 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, ANTIGRAVITY_USER_URL, FIVE_HOURS2, DAYS_PER_WEEK, FIVE_HOURS_MS, WEEK_MS, AntigravityBucketSchema, AntigravitySummarySchema, GoogleTokenInfoSchema, AntigravityUserSchema;
8728
8728
  var init_providerQuota = __esm({
8729
8729
  "src/usage/providerQuota.ts"() {
8730
8730
  "use strict";
@@ -8774,6 +8774,7 @@ var init_providerQuota = __esm({
8774
8774
  OpenRouterCreditsSchema = import_zod29.z.object({ data: import_zod29.z.object({ total_credits: import_zod29.z.number().nonnegative(), total_usage: import_zod29.z.number().nonnegative() }) });
8775
8775
  ANTIGRAVITY_HOST = "daily-cloudcode-pa.googleapis.com";
8776
8776
  ANTIGRAVITY_QUOTA_URL = `https://${ANTIGRAVITY_HOST}/v1internal:retrieveUserQuotaSummary`;
8777
+ ANTIGRAVITY_USER_URL = `https://${ANTIGRAVITY_HOST}/v1internal:loadCodeAssist`;
8777
8778
  FIVE_HOURS2 = 5;
8778
8779
  DAYS_PER_WEEK = 7;
8779
8780
  FIVE_HOURS_MS = FIVE_HOURS2 * SECONDS_PER_HOUR * MS_PER_SECOND7;
@@ -8788,6 +8789,12 @@ var init_providerQuota = __esm({
8788
8789
  email: import_zod29.z.string().optional(),
8789
8790
  sub: import_zod29.z.string().optional()
8790
8791
  });
8792
+ AntigravityUserSchema = import_zod29.z.object({
8793
+ /** The code-assist tier context, which defaults to the free tier for every account. */
8794
+ currentTier: import_zod29.z.object({ name: import_zod29.z.string().optional(), id: import_zod29.z.string().optional() }).optional(),
8795
+ /** The account's paid subscription; absent when the account has none. */
8796
+ paidTier: import_zod29.z.object({ name: import_zod29.z.string().optional(), id: import_zod29.z.string().optional() }).optional()
8797
+ });
8791
8798
  }
8792
8799
  });
8793
8800
 
package/dist/index.mjs CHANGED
@@ -2817,7 +2817,7 @@ var init_package = __esm({
2817
2817
  "package.json"() {
2818
2818
  package_default = {
2819
2819
  name: "claude-use",
2820
- version: "11.12.0",
2820
+ version: "11.13.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>",
@@ -8696,7 +8696,7 @@ var init_cloudUpstream = __esm({
8696
8696
 
8697
8697
  // src/usage/providerQuota.ts
8698
8698
  import { z as z29 } from "zod";
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;
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, ANTIGRAVITY_USER_URL, FIVE_HOURS2, DAYS_PER_WEEK, FIVE_HOURS_MS, WEEK_MS, AntigravityBucketSchema, AntigravitySummarySchema, GoogleTokenInfoSchema, AntigravityUserSchema;
8700
8700
  var init_providerQuota = __esm({
8701
8701
  "src/usage/providerQuota.ts"() {
8702
8702
  "use strict";
@@ -8745,6 +8745,7 @@ var init_providerQuota = __esm({
8745
8745
  OpenRouterCreditsSchema = z29.object({ data: z29.object({ total_credits: z29.number().nonnegative(), total_usage: z29.number().nonnegative() }) });
8746
8746
  ANTIGRAVITY_HOST = "daily-cloudcode-pa.googleapis.com";
8747
8747
  ANTIGRAVITY_QUOTA_URL = `https://${ANTIGRAVITY_HOST}/v1internal:retrieveUserQuotaSummary`;
8748
+ ANTIGRAVITY_USER_URL = `https://${ANTIGRAVITY_HOST}/v1internal:loadCodeAssist`;
8748
8749
  FIVE_HOURS2 = 5;
8749
8750
  DAYS_PER_WEEK = 7;
8750
8751
  FIVE_HOURS_MS = FIVE_HOURS2 * SECONDS_PER_HOUR * MS_PER_SECOND7;
@@ -8759,6 +8760,12 @@ var init_providerQuota = __esm({
8759
8760
  email: z29.string().optional(),
8760
8761
  sub: z29.string().optional()
8761
8762
  });
8763
+ AntigravityUserSchema = z29.object({
8764
+ /** The code-assist tier context, which defaults to the free tier for every account. */
8765
+ currentTier: z29.object({ name: z29.string().optional(), id: z29.string().optional() }).optional(),
8766
+ /** The account's paid subscription; absent when the account has none. */
8767
+ paidTier: z29.object({ name: z29.string().optional(), id: z29.string().optional() }).optional()
8768
+ });
8762
8769
  }
8763
8770
  });
8764
8771
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-use",
3
- "version": "11.12.0",
3
+ "version": "11.13.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>",