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/cli.cjs +698 -315
- package/dist/index.cjs +90 -37
- package/dist/index.mjs +90 -37
- package/dist/types/index.d.ts +16 -0
- package/package.json +1 -1
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-
|
|
328
|
-
opus: "gemini-
|
|
329
|
-
sonnet: "gemini-
|
|
330
|
-
haiku: "gemini-
|
|
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.
|
|
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
|
|
6307
|
+
function isRecord6(value) {
|
|
6279
6308
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
6280
6309
|
}
|
|
6281
6310
|
function legacyProviderConversion(raw) {
|
|
6282
|
-
if (!
|
|
6311
|
+
if (!isRecord6(raw) || "credential" in raw) {
|
|
6283
6312
|
return void 0;
|
|
6284
6313
|
}
|
|
6285
|
-
const env =
|
|
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
|
|
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 (!
|
|
15902
|
+
if (!isRecord7(payload) || payload.type !== RC_RATE_LIMIT_EVENT_TYPE) {
|
|
15850
15903
|
return void 0;
|
|
15851
15904
|
}
|
|
15852
|
-
if (!
|
|
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
|
|
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 (!
|
|
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
|
|
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
|
|
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 (!
|
|
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
|
|
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
|
|
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 (!
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 (
|
|
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 (!
|
|
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 (
|
|
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 (!
|
|
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
|
|
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
|
|
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 =
|
|
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) =>
|
|
17595
|
+
const existingBlock = (value) => isRecord13(value) ? value : {};
|
|
17543
17596
|
deps.fs.writeFilePrivate(claudeJsonFile, `${JSON.stringify({
|
|
17544
17597
|
...claudeJson,
|
|
17545
17598
|
oauthAccount: {
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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.
|
|
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>",
|