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/cli.cjs
CHANGED
|
@@ -27010,12 +27010,12 @@ var init_schema = __esm({
|
|
|
27010
27010
|
ANTIGRAVITY_TIERS = ["fable", "opus", "sonnet", "haiku"];
|
|
27011
27011
|
ANTIGRAVITY_EFFORTS = ["none", "low", "medium", "high", "xhigh", "max"];
|
|
27012
27012
|
ANTIGRAVITY_DEFAULT_MODE = "cloud";
|
|
27013
|
-
ANTIGRAVITY_DEFAULT_MODEL = "gemini-
|
|
27013
|
+
ANTIGRAVITY_DEFAULT_MODEL = "gemini-3.8-flash-high";
|
|
27014
27014
|
ANTIGRAVITY_DEFAULT_TIER_MODELS = Object.freeze({
|
|
27015
|
-
fable: "gemini-
|
|
27016
|
-
opus: "gemini-
|
|
27017
|
-
sonnet: "gemini-
|
|
27018
|
-
haiku: "gemini-
|
|
27015
|
+
fable: "gemini-3.8-flash-high",
|
|
27016
|
+
opus: "gemini-3.8-flash-high",
|
|
27017
|
+
sonnet: "gemini-3.8-flash-medium",
|
|
27018
|
+
haiku: "gemini-3.8-flash-low"
|
|
27019
27019
|
});
|
|
27020
27020
|
ANTIGRAVITY_DEFAULT_EFFORT = "low";
|
|
27021
27021
|
AntigravityProviderConfigSchema = external_exports.strictObject({
|
|
@@ -33419,7 +33419,7 @@ function isRateLimitHeader(name) {
|
|
|
33419
33419
|
const lower = name.toLowerCase();
|
|
33420
33420
|
return lower === "retry-after" || lower.startsWith("anthropic-ratelimit-") || lower.startsWith("x-ratelimit-") || lower.startsWith("ratelimit") || lower.startsWith("x-codex-");
|
|
33421
33421
|
}
|
|
33422
|
-
var USAGE_SCHEMA_VERSION, VersionSchema, InstantSchema, TokenCountSchema, TokenUsageSchema, LIMIT_KINDS, LimitClassificationSchema, UsageRecordSchema, QuotaWindowSchema, ExtraUsageSpendSchema, UnifiedRateLimitSchema, RateLimitStateSchema, LimitEventSchema, ProviderQuotaWindowSchema, ProviderQuotaSchema, ProviderUsageStateSchema, AccountMetadataSchema, UsageSnapshotSchema;
|
|
33422
|
+
var USAGE_SCHEMA_VERSION, VersionSchema, InstantSchema, TokenCountSchema, TokenUsageSchema, LIMIT_KINDS, LimitClassificationSchema, UsageRecordSchema, QuotaWindowSchema, ExtraUsageSpendSchema, UnifiedRateLimitSchema, RateLimitStateSchema, LimitEventSchema, ProviderQuotaWindowSchema, ProviderAccountSchema, ProviderQuotaSchema, ProviderUsageStateSchema, AccountMetadataSchema, UsageSnapshotSchema;
|
|
33423
33423
|
var init_schema2 = __esm({
|
|
33424
33424
|
"src/usage/schema.ts"() {
|
|
33425
33425
|
"use strict";
|
|
@@ -33551,12 +33551,18 @@ var init_schema2 = __esm({
|
|
|
33551
33551
|
used: external_exports.number().nonnegative().optional(),
|
|
33552
33552
|
remaining: external_exports.number().nonnegative().optional()
|
|
33553
33553
|
});
|
|
33554
|
+
ProviderAccountSchema = external_exports.strictObject({
|
|
33555
|
+
email: external_exports.string().optional(),
|
|
33556
|
+
accountId: external_exports.string().optional()
|
|
33557
|
+
});
|
|
33554
33558
|
ProviderQuotaSchema = external_exports.strictObject({
|
|
33555
33559
|
observedAt: InstantSchema,
|
|
33556
33560
|
/** Which usage endpoint produced it (`z.ai`). */
|
|
33557
33561
|
source: external_exports.string(),
|
|
33558
33562
|
/** The subscription level the endpoint reports, when it does. */
|
|
33559
33563
|
level: external_exports.string().optional(),
|
|
33564
|
+
/** The account the provider's credential belongs to, when its endpoint reports it. */
|
|
33565
|
+
account: ProviderAccountSchema.optional(),
|
|
33560
33566
|
windows: external_exports.array(ProviderQuotaWindowSchema)
|
|
33561
33567
|
});
|
|
33562
33568
|
ProviderUsageStateSchema = external_exports.strictObject({
|
|
@@ -33962,11 +33968,33 @@ function formatCredentialSummary(summary) {
|
|
|
33962
33968
|
function describeCredential(credential) {
|
|
33963
33969
|
return formatCredentialSummary(summariseCredential(credential));
|
|
33964
33970
|
}
|
|
33971
|
+
function isRecord2(value2) {
|
|
33972
|
+
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
33973
|
+
}
|
|
33974
|
+
function unpackKeyringToken(raw) {
|
|
33975
|
+
const trimmed = raw.trim();
|
|
33976
|
+
if (!trimmed.startsWith(GO_KEYRING_BASE64_PREFIX)) {
|
|
33977
|
+
return trimmed;
|
|
33978
|
+
}
|
|
33979
|
+
try {
|
|
33980
|
+
const base64Str = trimmed.slice(GO_KEYRING_BASE64_PREFIX.length);
|
|
33981
|
+
const decoded = Buffer.from(base64Str, "base64").toString("utf8");
|
|
33982
|
+
const parsed = JSON.parse(decoded);
|
|
33983
|
+
if (isRecord2(parsed) && isRecord2(parsed.token)) {
|
|
33984
|
+
const accessToken = parsed.token.access_token;
|
|
33985
|
+
if (typeof accessToken === "string" && accessToken.trim() !== "") {
|
|
33986
|
+
return accessToken.trim();
|
|
33987
|
+
}
|
|
33988
|
+
}
|
|
33989
|
+
} catch {
|
|
33990
|
+
}
|
|
33991
|
+
return trimmed;
|
|
33992
|
+
}
|
|
33965
33993
|
function trySource(source, params) {
|
|
33966
33994
|
const none = (reason, warn = false) => ({ ok: false, reason, warn });
|
|
33967
33995
|
if ("env" in source) {
|
|
33968
33996
|
const value2 = params.env[source.env];
|
|
33969
|
-
return value2 === void 0 || value2 === "" ? none("is unset or empty") : { ok: true, token: value2 };
|
|
33997
|
+
return value2 === void 0 || value2 === "" ? none("is unset or empty") : { ok: true, token: unpackKeyringToken(value2) };
|
|
33970
33998
|
}
|
|
33971
33999
|
if ("literal" in source) {
|
|
33972
34000
|
return { ok: true, token: source.literal };
|
|
@@ -33982,7 +34010,7 @@ function trySource(source, params) {
|
|
|
33982
34010
|
true
|
|
33983
34011
|
);
|
|
33984
34012
|
}
|
|
33985
|
-
const token2 = read.content.trim();
|
|
34013
|
+
const token2 = unpackKeyringToken(read.content.trim());
|
|
33986
34014
|
return token2 === "" ? none("is empty") : { ok: true, token: token2 };
|
|
33987
34015
|
}
|
|
33988
34016
|
const argv = commandArgv(source);
|
|
@@ -34000,7 +34028,7 @@ function trySource(source, params) {
|
|
|
34000
34028
|
const outcome = result.status === null ? "could not be run or was killed by a signal" : `exited with status ${String(result.status)}`;
|
|
34001
34029
|
return none(`${outcome}${stderr === "" ? "" : `: ${stderr}`}`);
|
|
34002
34030
|
}
|
|
34003
|
-
const token = result.stdout.trim();
|
|
34031
|
+
const token = unpackKeyringToken(result.stdout.trim());
|
|
34004
34032
|
return token === "" ? none("printed no token") : { ok: true, token };
|
|
34005
34033
|
}
|
|
34006
34034
|
function warmCommandFor(subject) {
|
|
@@ -34044,7 +34072,7 @@ function credentialVariables(target, token) {
|
|
|
34044
34072
|
CLAUDE_CODE_OAUTH_TOKEN: target === "oauthToken" ? token : void 0
|
|
34045
34073
|
};
|
|
34046
34074
|
}
|
|
34047
|
-
var CREDENTIAL_UNAVAILABLE_EXIT, CREDENTIAL_COMMAND_TIMEOUT_MS, CREDENTIAL_INTERACTIVE_TIMEOUT_MS, GROUP_OTHER_PERMISSION_BITS, PERMISSION_BITS2, OCTAL_RADIX2;
|
|
34075
|
+
var CREDENTIAL_UNAVAILABLE_EXIT, CREDENTIAL_COMMAND_TIMEOUT_MS, CREDENTIAL_INTERACTIVE_TIMEOUT_MS, GROUP_OTHER_PERMISSION_BITS, PERMISSION_BITS2, OCTAL_RADIX2, GO_KEYRING_BASE64_PREFIX;
|
|
34048
34076
|
var init_credential = __esm({
|
|
34049
34077
|
"src/credential.ts"() {
|
|
34050
34078
|
"use strict";
|
|
@@ -34055,6 +34083,7 @@ var init_credential = __esm({
|
|
|
34055
34083
|
GROUP_OTHER_PERMISSION_BITS = 63;
|
|
34056
34084
|
PERMISSION_BITS2 = 511;
|
|
34057
34085
|
OCTAL_RADIX2 = 8;
|
|
34086
|
+
GO_KEYRING_BASE64_PREFIX = "go-keyring-base64:";
|
|
34058
34087
|
}
|
|
34059
34088
|
});
|
|
34060
34089
|
|
|
@@ -34064,7 +34093,7 @@ var init_package = __esm({
|
|
|
34064
34093
|
"package.json"() {
|
|
34065
34094
|
package_default = {
|
|
34066
34095
|
name: "claude-use",
|
|
34067
|
-
version: "11.
|
|
34096
|
+
version: "11.11.0",
|
|
34068
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.",
|
|
34069
34098
|
license: "MIT",
|
|
34070
34099
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
|
@@ -34666,13 +34695,16 @@ function decoderFor(encoding) {
|
|
|
34666
34695
|
return void 0;
|
|
34667
34696
|
}
|
|
34668
34697
|
}
|
|
34669
|
-
function destinationOf(path59) {
|
|
34698
|
+
function destinationOf(path59, sessionProvider) {
|
|
34670
34699
|
const scoped = parseProviderPath(path59);
|
|
34671
|
-
|
|
34700
|
+
if (scoped !== void 0) {
|
|
34701
|
+
return { provider: scoped.provider, endpoint: scoped.rest };
|
|
34702
|
+
}
|
|
34703
|
+
return { provider: sessionProvider ?? ANTHROPIC_PROVIDER, endpoint: path59 };
|
|
34672
34704
|
}
|
|
34673
34705
|
function buildRecord(event, context) {
|
|
34674
34706
|
const { scan } = context;
|
|
34675
|
-
const { provider, endpoint } = destinationOf(event.path);
|
|
34707
|
+
const { provider, endpoint } = destinationOf(event.path, event.session.provider);
|
|
34676
34708
|
const rateLimitHeaders = rateLimitHeadersOf(event.headers);
|
|
34677
34709
|
const limit = classifyLimit({ status: event.status, headers: rateLimitHeaders ?? {}, error: scan?.error, nowMs: context.endedAt });
|
|
34678
34710
|
const requestId = headerValue(event.headers, "request-id");
|
|
@@ -35634,14 +35666,14 @@ function providerJsonPath(paths, name) {
|
|
|
35634
35666
|
function providerExists(paths, name) {
|
|
35635
35667
|
return import_node_fs10.default.existsSync(providerJsonPath(paths, name));
|
|
35636
35668
|
}
|
|
35637
|
-
function
|
|
35669
|
+
function isRecord3(value2) {
|
|
35638
35670
|
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
35639
35671
|
}
|
|
35640
35672
|
function legacyProviderConversion(raw) {
|
|
35641
|
-
if (!
|
|
35673
|
+
if (!isRecord3(raw) || "credential" in raw) {
|
|
35642
35674
|
return void 0;
|
|
35643
35675
|
}
|
|
35644
|
-
const env =
|
|
35676
|
+
const env = isRecord3(raw.env) ? raw.env : void 0;
|
|
35645
35677
|
const legacyEnvKeys = env === void 0 ? [] : Object.keys(env).filter((key) => LEGACY_ENV_CREDENTIAL_KEYS.includes(key));
|
|
35646
35678
|
const fields = [...LEGACY_PROVIDER_FIELDS.filter((field) => field in raw), ...legacyEnvKeys.map((key) => `env.${key}`)];
|
|
35647
35679
|
if (fields.length === 0) {
|
|
@@ -63958,6 +63990,125 @@ var init_identityClaude = __esm({
|
|
|
63958
63990
|
}
|
|
63959
63991
|
});
|
|
63960
63992
|
|
|
63993
|
+
// src/antigravity/cloudUpstream.ts
|
|
63994
|
+
function isCcpaEndpoint(endpoint) {
|
|
63995
|
+
return endpoint.includes("cloudcode-pa.googleapis.com");
|
|
63996
|
+
}
|
|
63997
|
+
function buildCloudUrl(config2, model) {
|
|
63998
|
+
const { cloud } = config2;
|
|
63999
|
+
if (cloud.projectId !== void 0 && cloud.location !== void 0) {
|
|
64000
|
+
const base2 = cloud.endpoint ?? `https://${cloud.location}-aiplatform.googleapis.com`;
|
|
64001
|
+
return `${base2}/v1/projects/${cloud.projectId}/locations/${cloud.location}/publishers/google/models/${encodeURIComponent(model)}:streamGenerateContent?alt=sse`;
|
|
64002
|
+
}
|
|
64003
|
+
const base = cloud.endpoint ?? CCPA_ENDPOINT;
|
|
64004
|
+
if (isCcpaEndpoint(base)) {
|
|
64005
|
+
return `${base}/v1internal:streamGenerateContent?alt=sse`;
|
|
64006
|
+
}
|
|
64007
|
+
return `${base}/v1beta/models/${encodeURIComponent(model)}:streamGenerateContent?alt=sse`;
|
|
64008
|
+
}
|
|
64009
|
+
function buildCloudHeaders(token, credentialTarget, endpoint) {
|
|
64010
|
+
const headers = {
|
|
64011
|
+
"Content-Type": "application/json",
|
|
64012
|
+
Accept: "text/event-stream"
|
|
64013
|
+
};
|
|
64014
|
+
const target = credentialTarget ?? "bearer";
|
|
64015
|
+
if (target === "apiKey") {
|
|
64016
|
+
headers["x-goog-api-key"] = token;
|
|
64017
|
+
} else {
|
|
64018
|
+
headers.Authorization = `Bearer ${token}`;
|
|
64019
|
+
}
|
|
64020
|
+
const base = endpoint ?? CCPA_ENDPOINT;
|
|
64021
|
+
if (isCcpaEndpoint(base)) {
|
|
64022
|
+
headers["User-Agent"] = CCPA_USER_AGENT;
|
|
64023
|
+
}
|
|
64024
|
+
return headers;
|
|
64025
|
+
}
|
|
64026
|
+
function buildCloudRequestBody(params) {
|
|
64027
|
+
const base = params.config.cloud.endpoint ?? CCPA_ENDPOINT;
|
|
64028
|
+
if (isCcpaEndpoint(base)) {
|
|
64029
|
+
return JSON.stringify({
|
|
64030
|
+
project: params.config.cloud.projectId ?? CCPA_DEFAULT_PROJECT_ID,
|
|
64031
|
+
requestId: `agent/${(0, import_node_crypto16.randomUUID)()}/${String(Date.now())}/1`,
|
|
64032
|
+
request: params.request,
|
|
64033
|
+
model: params.model,
|
|
64034
|
+
userAgent: "antigravity"
|
|
64035
|
+
});
|
|
64036
|
+
}
|
|
64037
|
+
return JSON.stringify(params.request);
|
|
64038
|
+
}
|
|
64039
|
+
function isRecord4(value2) {
|
|
64040
|
+
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
64041
|
+
}
|
|
64042
|
+
function isGeminiChunk(value2) {
|
|
64043
|
+
return isRecord4(value2);
|
|
64044
|
+
}
|
|
64045
|
+
async function* callCloudAntigravity(params, fetchFn = fetch) {
|
|
64046
|
+
const url2 = buildCloudUrl(params.config, params.model);
|
|
64047
|
+
const headers = buildCloudHeaders(params.token, params.credentialTarget, params.config.cloud.endpoint);
|
|
64048
|
+
const body = buildCloudRequestBody(params);
|
|
64049
|
+
const response = await fetchFn(url2, {
|
|
64050
|
+
method: "POST",
|
|
64051
|
+
headers,
|
|
64052
|
+
body,
|
|
64053
|
+
signal: params.signal
|
|
64054
|
+
});
|
|
64055
|
+
if (!response.ok) {
|
|
64056
|
+
const errorText = await response.text();
|
|
64057
|
+
const retryAfter = response.headers.get("retry-after");
|
|
64058
|
+
throw new AntigravityUpstreamError(response.status, errorText, retryAfter);
|
|
64059
|
+
}
|
|
64060
|
+
if (response.body === null) {
|
|
64061
|
+
return;
|
|
64062
|
+
}
|
|
64063
|
+
const decoder = new TextDecoder("utf-8");
|
|
64064
|
+
let buffer2 = "";
|
|
64065
|
+
const sseDataPrefix = "data:";
|
|
64066
|
+
for await (const rawChunk of response.body) {
|
|
64067
|
+
const chunk = rawChunk instanceof Uint8Array ? rawChunk : Buffer.from(String(rawChunk));
|
|
64068
|
+
buffer2 += decoder.decode(chunk, { stream: true });
|
|
64069
|
+
const lines = buffer2.split("\n");
|
|
64070
|
+
buffer2 = lines.pop() ?? "";
|
|
64071
|
+
for (const line of lines) {
|
|
64072
|
+
const trimmed = line.trim();
|
|
64073
|
+
if (trimmed.startsWith(sseDataPrefix)) {
|
|
64074
|
+
const jsonStr = trimmed.slice(sseDataPrefix.length).trim();
|
|
64075
|
+
if (jsonStr.length > 0) {
|
|
64076
|
+
try {
|
|
64077
|
+
const parsed = JSON.parse(jsonStr);
|
|
64078
|
+
if (isRecord4(parsed)) {
|
|
64079
|
+
const unwrapped = isRecord4(parsed.response) ? parsed.response : parsed;
|
|
64080
|
+
if (isGeminiChunk(unwrapped)) {
|
|
64081
|
+
yield unwrapped;
|
|
64082
|
+
}
|
|
64083
|
+
}
|
|
64084
|
+
} catch {
|
|
64085
|
+
}
|
|
64086
|
+
}
|
|
64087
|
+
}
|
|
64088
|
+
}
|
|
64089
|
+
}
|
|
64090
|
+
}
|
|
64091
|
+
var import_node_crypto16, CCPA_ENDPOINT, CCPA_DEFAULT_PROJECT_ID, CCPA_USER_AGENT, AntigravityUpstreamError;
|
|
64092
|
+
var init_cloudUpstream = __esm({
|
|
64093
|
+
"src/antigravity/cloudUpstream.ts"() {
|
|
64094
|
+
"use strict";
|
|
64095
|
+
import_node_crypto16 = require("node:crypto");
|
|
64096
|
+
CCPA_ENDPOINT = "https://daily-cloudcode-pa.googleapis.com";
|
|
64097
|
+
CCPA_DEFAULT_PROJECT_ID = "aicode-consumers";
|
|
64098
|
+
CCPA_USER_AGENT = "antigravity/cli/1.3.5 (aidev_client; os_type=darwin; arch=arm64; cl=998863838; auth_method=consumer)";
|
|
64099
|
+
AntigravityUpstreamError = class extends Error {
|
|
64100
|
+
status;
|
|
64101
|
+
retryAfter;
|
|
64102
|
+
constructor(status, message, retryAfter) {
|
|
64103
|
+
super(`Google Antigravity API error (${String(status)}): ${message}`);
|
|
64104
|
+
this.name = "AntigravityUpstreamError";
|
|
64105
|
+
this.status = status;
|
|
64106
|
+
this.retryAfter = retryAfter;
|
|
64107
|
+
}
|
|
64108
|
+
};
|
|
64109
|
+
}
|
|
64110
|
+
});
|
|
64111
|
+
|
|
63961
64112
|
// src/usage/providerQuota.ts
|
|
63962
64113
|
function zaiWindow(limit) {
|
|
63963
64114
|
const unitMs = ZAI_UNIT_MS.get(limit.unit);
|
|
@@ -64001,11 +64152,12 @@ function quotaFreshnessMs(quota) {
|
|
|
64001
64152
|
const lengths = quota.windows.flatMap((window) => window.periodMs === void 0 ? [] : [window.periodMs]);
|
|
64002
64153
|
return lengths.length === 0 ? Number.POSITIVE_INFINITY : Math.min(...lengths) / PERCENT3;
|
|
64003
64154
|
}
|
|
64004
|
-
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, 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, GOOGLE_TOKENINFO_URL, FIVE_HOURS2, DAYS_PER_WEEK, FIVE_HOURS_MS, WEEK_MS, AntigravityBucketSchema, AntigravitySummarySchema, GoogleTokenInfoSchema, ANTIGRAVITY_WINDOW_MS, antigravityQuotaAdapter, PROVIDER_QUOTA_ADAPTERS;
|
|
64005
64156
|
var init_providerQuota = __esm({
|
|
64006
64157
|
"src/usage/providerQuota.ts"() {
|
|
64007
64158
|
"use strict";
|
|
64008
64159
|
init_zod();
|
|
64160
|
+
init_cloudUpstream();
|
|
64009
64161
|
init_schema2();
|
|
64010
64162
|
ProviderQuotaError = class extends Error {
|
|
64011
64163
|
constructor(source, detail) {
|
|
@@ -64119,7 +64271,71 @@ var init_providerQuota = __esm({
|
|
|
64119
64271
|
});
|
|
64120
64272
|
}
|
|
64121
64273
|
};
|
|
64122
|
-
|
|
64274
|
+
ANTIGRAVITY_SOURCE = "Cloud Code";
|
|
64275
|
+
ANTIGRAVITY_HOST = "daily-cloudcode-pa.googleapis.com";
|
|
64276
|
+
ANTIGRAVITY_QUOTA_URL = `https://${ANTIGRAVITY_HOST}/v1internal:retrieveUserQuotaSummary`;
|
|
64277
|
+
GOOGLE_TOKENINFO_URL = "https://oauth2.googleapis.com/tokeninfo";
|
|
64278
|
+
FIVE_HOURS2 = 5;
|
|
64279
|
+
DAYS_PER_WEEK = 7;
|
|
64280
|
+
FIVE_HOURS_MS = FIVE_HOURS2 * SECONDS_PER_HOUR * MS_PER_SECOND6;
|
|
64281
|
+
WEEK_MS = DAYS_PER_WEEK * HOURS_PER_DAY3 * SECONDS_PER_HOUR * MS_PER_SECOND6;
|
|
64282
|
+
AntigravityBucketSchema = external_exports.object({
|
|
64283
|
+
bucketId: external_exports.string(),
|
|
64284
|
+
remainingFraction: external_exports.number().optional(),
|
|
64285
|
+
resetTime: external_exports.string().optional()
|
|
64286
|
+
});
|
|
64287
|
+
AntigravitySummarySchema = external_exports.object({ groups: external_exports.array(external_exports.object({ buckets: external_exports.array(AntigravityBucketSchema) })) });
|
|
64288
|
+
GoogleTokenInfoSchema = external_exports.object({
|
|
64289
|
+
email: external_exports.string().optional(),
|
|
64290
|
+
sub: external_exports.string().optional()
|
|
64291
|
+
});
|
|
64292
|
+
ANTIGRAVITY_WINDOW_MS = { "gemini-5h": FIVE_HOURS_MS, "3p-5h": FIVE_HOURS_MS, "gemini-weekly": WEEK_MS, "3p-weekly": WEEK_MS };
|
|
64293
|
+
antigravityQuotaAdapter = {
|
|
64294
|
+
source: ANTIGRAVITY_SOURCE,
|
|
64295
|
+
matches: (baseUrl) => URL.canParse(baseUrl) && new URL(baseUrl).hostname === ANTIGRAVITY_HOST,
|
|
64296
|
+
fetch: async (apiKey, http8, signal, nowMs) => {
|
|
64297
|
+
const headers = { authorization: `Bearer ${apiKey}`, "content-type": "application/json", "user-agent": CCPA_USER_AGENT };
|
|
64298
|
+
const summaryResponse = await http8(ANTIGRAVITY_QUOTA_URL, headers, signal, { method: "POST", body: JSON.stringify({ project: "aicode-consumers" }) });
|
|
64299
|
+
if (summaryResponse.status !== HTTP_OK) {
|
|
64300
|
+
throw new ProviderQuotaError(ANTIGRAVITY_SOURCE, `answered HTTP ${String(summaryResponse.status)}`);
|
|
64301
|
+
}
|
|
64302
|
+
let summaryBody;
|
|
64303
|
+
try {
|
|
64304
|
+
summaryBody = JSON.parse(summaryResponse.text);
|
|
64305
|
+
} catch {
|
|
64306
|
+
throw new ProviderQuotaError(ANTIGRAVITY_SOURCE, "answered something that is not JSON");
|
|
64307
|
+
}
|
|
64308
|
+
const parsed = AntigravitySummarySchema.safeParse(summaryBody);
|
|
64309
|
+
if (!parsed.success) {
|
|
64310
|
+
throw new ProviderQuotaError(ANTIGRAVITY_SOURCE, `answered an unexpected shape: ${parsed.error.issues.map((issue2) => `${issue2.path.join(".")}: ${issue2.message}`).join("; ")}`);
|
|
64311
|
+
}
|
|
64312
|
+
const tokenResponse = await http8(`${GOOGLE_TOKENINFO_URL}?access_token=${encodeURIComponent(apiKey)}`, { accept: "application/json" }, signal);
|
|
64313
|
+
let account;
|
|
64314
|
+
if (tokenResponse.status === HTTP_OK) {
|
|
64315
|
+
try {
|
|
64316
|
+
const tokenInfo = GoogleTokenInfoSchema.parse(JSON.parse(tokenResponse.text));
|
|
64317
|
+
if (tokenInfo.email !== void 0 || tokenInfo.sub !== void 0) {
|
|
64318
|
+
account = { ...tokenInfo.email === void 0 ? {} : { email: tokenInfo.email }, ...tokenInfo.sub === void 0 ? {} : { accountId: tokenInfo.sub } };
|
|
64319
|
+
}
|
|
64320
|
+
} catch {
|
|
64321
|
+
}
|
|
64322
|
+
}
|
|
64323
|
+
return ProviderQuotaSchema.parse({
|
|
64324
|
+
observedAt: new Date(nowMs).toISOString(),
|
|
64325
|
+
source: ANTIGRAVITY_SOURCE,
|
|
64326
|
+
...account === void 0 ? {} : { account },
|
|
64327
|
+
windows: parsed.data.groups.flatMap(
|
|
64328
|
+
(group) => group.buckets.map((bucket) => ({
|
|
64329
|
+
measures: bucket.bucketId,
|
|
64330
|
+
...ANTIGRAVITY_WINDOW_MS[bucket.bucketId] === void 0 ? {} : { periodMs: ANTIGRAVITY_WINDOW_MS[bucket.bucketId] },
|
|
64331
|
+
utilization: bucket.remainingFraction === void 0 ? 0 : 1 - bucket.remainingFraction,
|
|
64332
|
+
...bucket.resetTime === void 0 ? {} : { resetsAt: bucket.resetTime }
|
|
64333
|
+
}))
|
|
64334
|
+
)
|
|
64335
|
+
});
|
|
64336
|
+
}
|
|
64337
|
+
};
|
|
64338
|
+
PROVIDER_QUOTA_ADAPTERS = [zaiQuotaAdapter, openRouterQuotaAdapter, antigravityQuotaAdapter];
|
|
64123
64339
|
}
|
|
64124
64340
|
});
|
|
64125
64341
|
|
|
@@ -64194,11 +64410,15 @@ function createQuotaRefresher(deps) {
|
|
|
64194
64410
|
function createProviderLookup(ports) {
|
|
64195
64411
|
return (name) => {
|
|
64196
64412
|
const definition = loadProvider(ports.providersDir, name, ports.fs);
|
|
64197
|
-
if (definition === void 0
|
|
64413
|
+
if (definition === void 0) {
|
|
64414
|
+
return void 0;
|
|
64415
|
+
}
|
|
64416
|
+
const baseUrl = isAntigravityProvider(definition) ? "https://daily-cloudcode-pa.googleapis.com" : isHttpProvider(definition) ? definition.baseUrl : void 0;
|
|
64417
|
+
if (baseUrl === void 0) {
|
|
64198
64418
|
return void 0;
|
|
64199
64419
|
}
|
|
64200
64420
|
return {
|
|
64201
|
-
baseUrl
|
|
64421
|
+
baseUrl,
|
|
64202
64422
|
apiKey: () => {
|
|
64203
64423
|
const resolution = resolveCredential({ credential: definition.credential, env: ports.env, port: ports.credentials, subject: `provider ${name}` });
|
|
64204
64424
|
if (!resolution.ok) {
|
|
@@ -112646,7 +112866,7 @@ function registerCodexCommand(program2, deps) {
|
|
|
112646
112866
|
}
|
|
112647
112867
|
|
|
112648
112868
|
// src/frontdoor/commands.ts
|
|
112649
|
-
var
|
|
112869
|
+
var import_node_crypto24 = require("node:crypto");
|
|
112650
112870
|
var import_node_path51 = __toESM(require("node:path"), 1);
|
|
112651
112871
|
var import_node_fs19 = __toESM(require("node:fs"), 1);
|
|
112652
112872
|
init_commandDeps();
|
|
@@ -113929,11 +114149,11 @@ init_capability();
|
|
|
113929
114149
|
init_capture();
|
|
113930
114150
|
|
|
113931
114151
|
// src/frontdoor/connect.ts
|
|
113932
|
-
var
|
|
114152
|
+
var import_node_crypto18 = require("node:crypto");
|
|
113933
114153
|
var fs17 = __toESM(require("node:fs"), 1);
|
|
113934
114154
|
|
|
113935
114155
|
// src/frontdoor/x509.ts
|
|
113936
|
-
var
|
|
114156
|
+
var import_node_crypto17 = require("node:crypto");
|
|
113937
114157
|
var import_node_net = __toESM(require("node:net"), 1);
|
|
113938
114158
|
var TAG_BOOLEAN = 1;
|
|
113939
114159
|
var TAG_INTEGER = 2;
|
|
@@ -114085,7 +114305,7 @@ function ipBytes(address) {
|
|
|
114085
114305
|
return bytes;
|
|
114086
114306
|
}
|
|
114087
114307
|
function keyIdentifier(publicKey) {
|
|
114088
|
-
return (0,
|
|
114308
|
+
return (0, import_node_crypto17.createHash)("sha1").update(publicKey.export({ type: "pkcs1", format: "der" })).digest();
|
|
114089
114309
|
}
|
|
114090
114310
|
function readElement(buffer2, offset) {
|
|
114091
114311
|
const tag = buffer2[offset];
|
|
@@ -114131,7 +114351,7 @@ ${body.join("\n")}
|
|
|
114131
114351
|
`;
|
|
114132
114352
|
}
|
|
114133
114353
|
function randomSerial() {
|
|
114134
|
-
const bytes = (0,
|
|
114354
|
+
const bytes = (0, import_node_crypto17.randomBytes)(SERIAL_NUMBER_BYTES);
|
|
114135
114355
|
bytes[0] = (bytes[0] ?? 0) & BASE_128_PAYLOAD_MASK | HIGH_BIT >> 1;
|
|
114136
114356
|
return bytes;
|
|
114137
114357
|
}
|
|
@@ -114146,7 +114366,7 @@ function assemble(spec) {
|
|
|
114146
114366
|
spec.subjectPublicKey.export({ type: "spki", format: "der" }),
|
|
114147
114367
|
tlv(TAG_EXTENSIONS, sequence(...spec.extensions))
|
|
114148
114368
|
);
|
|
114149
|
-
const signature = (0,
|
|
114369
|
+
const signature = (0, import_node_crypto17.sign)("sha256", tbs, spec.signingKey);
|
|
114150
114370
|
return sequence(tbs, SIGNATURE_ALGORITHM, wholeBitString(signature));
|
|
114151
114371
|
}
|
|
114152
114372
|
function subjectKeyIdentifierExtension(publicKey) {
|
|
@@ -114156,7 +114376,7 @@ function basicConstraintsExtension(isCa) {
|
|
|
114156
114376
|
return extension(OID_BASIC_CONSTRAINTS, true, sequence(...isCa ? [boolean4(true)] : []));
|
|
114157
114377
|
}
|
|
114158
114378
|
function rsaKeyPair() {
|
|
114159
|
-
return (0,
|
|
114379
|
+
return (0, import_node_crypto17.generateKeyPairSync)("rsa", { modulusLength: RSA_MODULUS_BITS });
|
|
114160
114380
|
}
|
|
114161
114381
|
function keyPem(privateKey) {
|
|
114162
114382
|
return privateKey.export({ type: "pkcs8", format: "pem" });
|
|
@@ -114180,8 +114400,8 @@ function issueLeafCertificate(ca2, names, notBefore, notAfter) {
|
|
|
114180
114400
|
if (commonName === void 0) {
|
|
114181
114401
|
throw new Error("a leaf certificate needs at least one name");
|
|
114182
114402
|
}
|
|
114183
|
-
const caCertificate = new
|
|
114184
|
-
const caPrivateKey = (0,
|
|
114403
|
+
const caCertificate = new import_node_crypto17.X509Certificate(ca2.certPem);
|
|
114404
|
+
const caPrivateKey = (0, import_node_crypto17.createPrivateKey)(ca2.keyPem);
|
|
114185
114405
|
const { publicKey, privateKey } = rsaKeyPair();
|
|
114186
114406
|
const generalNames = names.map((name) => import_node_net.default.isIP(name) === 0 ? tlv(TAG_GENERAL_NAME_DNS, Buffer.from(name, "ascii")) : tlv(TAG_GENERAL_NAME_IP, ipBytes(name)));
|
|
114187
114407
|
const der = assemble({
|
|
@@ -114536,8 +114756,8 @@ function ensureCa(store, generate) {
|
|
|
114536
114756
|
}
|
|
114537
114757
|
function caParses(ca2) {
|
|
114538
114758
|
try {
|
|
114539
|
-
new
|
|
114540
|
-
(0,
|
|
114759
|
+
new import_node_crypto18.X509Certificate(ca2.certPem);
|
|
114760
|
+
(0, import_node_crypto18.createPrivateKey)(ca2.keyPem);
|
|
114541
114761
|
return true;
|
|
114542
114762
|
} catch {
|
|
114543
114763
|
return false;
|
|
@@ -114864,7 +115084,7 @@ var LiveTaskSchema = external_exports.strictObject({
|
|
|
114864
115084
|
observedAt: external_exports.number()
|
|
114865
115085
|
});
|
|
114866
115086
|
var SYSTEM_SUBTYPES = ["task_started", "task_progress", "task_updated", "task_notification", "background_tasks_changed"];
|
|
114867
|
-
function
|
|
115087
|
+
function isRecord5(value2) {
|
|
114868
115088
|
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
114869
115089
|
}
|
|
114870
115090
|
function stringField(record2, field) {
|
|
@@ -114881,7 +115101,7 @@ function booleanField(record2, field) {
|
|
|
114881
115101
|
}
|
|
114882
115102
|
function usageOf(record2) {
|
|
114883
115103
|
const raw = record2.usage;
|
|
114884
|
-
if (!
|
|
115104
|
+
if (!isRecord5(raw)) {
|
|
114885
115105
|
return void 0;
|
|
114886
115106
|
}
|
|
114887
115107
|
const totalTokens = numberField(raw, "total_tokens");
|
|
@@ -114913,7 +115133,7 @@ function bounded(book) {
|
|
|
114913
115133
|
return book;
|
|
114914
115134
|
}
|
|
114915
115135
|
function applyAgentTaskEvent(book, sessionId, payload, observedAt2) {
|
|
114916
|
-
if (!
|
|
115136
|
+
if (!isRecord5(payload) || payload.type !== "system") {
|
|
114917
115137
|
return book;
|
|
114918
115138
|
}
|
|
114919
115139
|
const subtype = payload.subtype;
|
|
@@ -114929,8 +115149,8 @@ function applyAgentTaskEvent(book, sessionId, payload, observedAt2) {
|
|
|
114929
115149
|
if (subtype === "background_tasks_changed") {
|
|
114930
115150
|
const tasks = Array.isArray(payload.tasks) ? payload.tasks : [];
|
|
114931
115151
|
for (const raw of tasks) {
|
|
114932
|
-
const taskId2 =
|
|
114933
|
-
if (
|
|
115152
|
+
const taskId2 = isRecord5(raw) ? stringField(raw, "task_id") : void 0;
|
|
115153
|
+
if (isRecord5(raw) && taskId2 !== void 0) {
|
|
114934
115154
|
upsert(taskId2, { runId: stringField(raw, "run_id"), taskType: stringField(raw, "task_type"), description: stringField(raw, "description") });
|
|
114935
115155
|
}
|
|
114936
115156
|
}
|
|
@@ -114953,7 +115173,7 @@ function applyAgentTaskEvent(book, sessionId, payload, observedAt2) {
|
|
|
114953
115173
|
} else if (subtype === "task_progress") {
|
|
114954
115174
|
upsert(taskId, { ...common, subagentType: stringField(payload, "subagent_type"), lastToolName: stringField(payload, "last_tool_name"), usage: usageOf(payload) });
|
|
114955
115175
|
} else if (subtype === "task_updated") {
|
|
114956
|
-
const patch =
|
|
115176
|
+
const patch = isRecord5(payload.patch) ? payload.patch : {};
|
|
114957
115177
|
upsert(taskId, { runId: stringField(payload, "run_id"), status: stringField(patch, "status") });
|
|
114958
115178
|
} else {
|
|
114959
115179
|
upsert(taskId, { ...common, status: stringField(payload, "status"), outputFile: stringField(payload, "output_file"), summary: stringField(payload, "summary"), usage: usageOf(payload) });
|
|
@@ -115035,7 +115255,7 @@ function sessionCreateId(body) {
|
|
|
115035
115255
|
const id2 = session.id;
|
|
115036
115256
|
return typeof id2 === "string" && id2.startsWith(RC_SESSION_ID_PREFIX) ? id2 : void 0;
|
|
115037
115257
|
}
|
|
115038
|
-
function
|
|
115258
|
+
function isRecord6(value2) {
|
|
115039
115259
|
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
115040
115260
|
}
|
|
115041
115261
|
function parseJsonObject(body) {
|
|
@@ -115045,7 +115265,7 @@ function parseJsonObject(body) {
|
|
|
115045
115265
|
} catch {
|
|
115046
115266
|
return void 0;
|
|
115047
115267
|
}
|
|
115048
|
-
return
|
|
115268
|
+
return isRecord6(parsed) ? parsed : void 0;
|
|
115049
115269
|
}
|
|
115050
115270
|
function nonEmptyString(record2, field) {
|
|
115051
115271
|
const value2 = record2 === void 0 ? void 0 : record2[field];
|
|
@@ -115066,11 +115286,11 @@ function payloadEventsOf(body) {
|
|
|
115066
115286
|
}
|
|
115067
115287
|
const payloads = [];
|
|
115068
115288
|
for (const event of events) {
|
|
115069
|
-
if (!
|
|
115289
|
+
if (!isRecord6(event)) {
|
|
115070
115290
|
continue;
|
|
115071
115291
|
}
|
|
115072
115292
|
const payload = event.payload;
|
|
115073
|
-
if (!
|
|
115293
|
+
if (!isRecord6(payload)) {
|
|
115074
115294
|
continue;
|
|
115075
115295
|
}
|
|
115076
115296
|
payloads.push(payload);
|
|
@@ -115085,7 +115305,7 @@ function pendingOfControlRequestPayload(payload) {
|
|
|
115085
115305
|
if (requestId === void 0) {
|
|
115086
115306
|
return void 0;
|
|
115087
115307
|
}
|
|
115088
|
-
const request7 =
|
|
115308
|
+
const request7 = isRecord6(payload.request) ? payload.request : void 0;
|
|
115089
115309
|
const subtype = nonEmptyString(request7, "subtype");
|
|
115090
115310
|
const type2 = subtype ?? "control_request";
|
|
115091
115311
|
let summary = "";
|
|
@@ -115102,7 +115322,7 @@ function answeredRequestIdsOfControlResponsePayload(payload) {
|
|
|
115102
115322
|
if (payload.type !== "control_response") {
|
|
115103
115323
|
return [];
|
|
115104
115324
|
}
|
|
115105
|
-
const response =
|
|
115325
|
+
const response = isRecord6(payload.response) ? payload.response : void 0;
|
|
115106
115326
|
const id2 = nonEmptyString(response, "request_id") ?? nonEmptyString(payload, "request_id") ?? nonEmptyString(payload, "uuid");
|
|
115107
115327
|
return id2 === void 0 ? [] : [id2];
|
|
115108
115328
|
}
|
|
@@ -115331,7 +115551,7 @@ function createRcSessionTracker(deps) {
|
|
|
115331
115551
|
return;
|
|
115332
115552
|
}
|
|
115333
115553
|
entry.sequenceNum = entry.sequenceNum === void 0 || event.sequence_num > entry.sequenceNum ? event.sequence_num : entry.sequenceNum;
|
|
115334
|
-
if (!
|
|
115554
|
+
if (!isRecord6(event.payload)) {
|
|
115335
115555
|
return;
|
|
115336
115556
|
}
|
|
115337
115557
|
entry.liveTasks = applyAgentTaskEvent(entry.liveTasks, sessionId, event.payload, deps.now());
|
|
@@ -120209,7 +120429,7 @@ var HTTP_METHODS_UP_TO_V31 = [
|
|
|
120209
120429
|
function operationFields(convert) {
|
|
120210
120430
|
return Object.fromEntries(HTTP_METHODS_UP_TO_V31.map((method) => [method, convert]));
|
|
120211
120431
|
}
|
|
120212
|
-
function
|
|
120432
|
+
function isRecord7(value2) {
|
|
120213
120433
|
if (typeof value2 !== "object" || value2 === null) {
|
|
120214
120434
|
return false;
|
|
120215
120435
|
}
|
|
@@ -120229,7 +120449,7 @@ function setOwn2(object3, key, value2) {
|
|
|
120229
120449
|
}
|
|
120230
120450
|
}
|
|
120231
120451
|
function cloneValue(value2, seen) {
|
|
120232
|
-
if (!(Array.isArray(value2) ||
|
|
120452
|
+
if (!(Array.isArray(value2) || isRecord7(value2))) {
|
|
120233
120453
|
return value2;
|
|
120234
120454
|
}
|
|
120235
120455
|
const existing = seen.get(value2);
|
|
@@ -120252,14 +120472,14 @@ function cloneValue(value2, seen) {
|
|
|
120252
120472
|
return out;
|
|
120253
120473
|
}
|
|
120254
120474
|
function deepClone(value2) {
|
|
120255
|
-
if (!(Array.isArray(value2) ||
|
|
120475
|
+
if (!(Array.isArray(value2) || isRecord7(value2))) {
|
|
120256
120476
|
return value2;
|
|
120257
120477
|
}
|
|
120258
120478
|
return cloneValue(value2, /* @__PURE__ */ new WeakMap());
|
|
120259
120479
|
}
|
|
120260
120480
|
var converting = /* @__PURE__ */ new WeakMap();
|
|
120261
120481
|
function convertRecord(value2, fields, finish) {
|
|
120262
|
-
if (!
|
|
120482
|
+
if (!isRecord7(value2)) {
|
|
120263
120483
|
return deepClone(value2);
|
|
120264
120484
|
}
|
|
120265
120485
|
const inProgress = converting.get(value2);
|
|
@@ -120285,7 +120505,7 @@ function convertRecord(value2, fields, finish) {
|
|
|
120285
120505
|
}
|
|
120286
120506
|
}
|
|
120287
120507
|
function mapRecord(value2, convert) {
|
|
120288
|
-
if (!
|
|
120508
|
+
if (!isRecord7(value2)) {
|
|
120289
120509
|
return deepClone(value2);
|
|
120290
120510
|
}
|
|
120291
120511
|
const out = {};
|
|
@@ -120304,7 +120524,7 @@ function mapArray(value2, convert) {
|
|
|
120304
120524
|
return value2.map((item) => convert(item)).filter((item) => item !== DROP);
|
|
120305
120525
|
}
|
|
120306
120526
|
function getRef(value2) {
|
|
120307
|
-
if (
|
|
120527
|
+
if (isRecord7(value2) && typeof value2.$ref === "string") {
|
|
120308
120528
|
return value2.$ref;
|
|
120309
120529
|
}
|
|
120310
120530
|
return void 0;
|
|
@@ -120510,7 +120730,7 @@ function convertSchema2(schema) {
|
|
|
120510
120730
|
if (schema === false) {
|
|
120511
120731
|
return { not: {} };
|
|
120512
120732
|
}
|
|
120513
|
-
if (
|
|
120733
|
+
if (isRecord7(schema) && typeof schema.$ref === "string" && Object.keys(schema).length === 1) {
|
|
120514
120734
|
return { $ref: schema.$ref };
|
|
120515
120735
|
}
|
|
120516
120736
|
return convertRecord(schema, SCHEMA_FIELDS, finishSchema);
|
|
@@ -120522,7 +120742,7 @@ function resolveSchemeType(name, schemes, seen) {
|
|
|
120522
120742
|
return void 0;
|
|
120523
120743
|
}
|
|
120524
120744
|
const scheme = schemes[name];
|
|
120525
|
-
if (!
|
|
120745
|
+
if (!isRecord7(scheme)) {
|
|
120526
120746
|
return void 0;
|
|
120527
120747
|
}
|
|
120528
120748
|
if (typeof scheme.type === "string") {
|
|
@@ -120539,11 +120759,11 @@ function resolveSchemeType(name, schemes, seen) {
|
|
|
120539
120759
|
return void 0;
|
|
120540
120760
|
}
|
|
120541
120761
|
function createContext(spec) {
|
|
120542
|
-
const components =
|
|
120543
|
-
const pathItems =
|
|
120544
|
-
const schemes =
|
|
120762
|
+
const components = isRecord7(spec) ? spec.components : void 0;
|
|
120763
|
+
const pathItems = isRecord7(components) ? components.pathItems : void 0;
|
|
120764
|
+
const schemes = isRecord7(components) ? components.securitySchemes : void 0;
|
|
120545
120765
|
const schemeTypes = /* @__PURE__ */ new Map();
|
|
120546
|
-
if (
|
|
120766
|
+
if (isRecord7(schemes)) {
|
|
120547
120767
|
for (const name of Object.keys(schemes)) {
|
|
120548
120768
|
const type2 = resolveSchemeType(name, schemes, /* @__PURE__ */ new Set());
|
|
120549
120769
|
if (type2 !== void 0) {
|
|
@@ -120553,7 +120773,7 @@ function createContext(spec) {
|
|
|
120553
120773
|
}
|
|
120554
120774
|
return {
|
|
120555
120775
|
inlining: /* @__PURE__ */ new Set(),
|
|
120556
|
-
pathItems:
|
|
120776
|
+
pathItems: isRecord7(pathItems) ? pathItems : void 0,
|
|
120557
120777
|
schemeTypes
|
|
120558
120778
|
};
|
|
120559
120779
|
}
|
|
@@ -120561,7 +120781,7 @@ function isMutualTls(name, context) {
|
|
|
120561
120781
|
return context.schemeTypes.get(name) === "mutualTLS";
|
|
120562
120782
|
}
|
|
120563
120783
|
function convertRequirement(value2, context) {
|
|
120564
|
-
if (!
|
|
120784
|
+
if (!isRecord7(value2)) {
|
|
120565
120785
|
return deepClone(value2);
|
|
120566
120786
|
}
|
|
120567
120787
|
const entries = Object.entries(value2);
|
|
@@ -120661,10 +120881,10 @@ function resolvePathItemRef(value2, context) {
|
|
|
120661
120881
|
return void 0;
|
|
120662
120882
|
}
|
|
120663
120883
|
const target = context.pathItems[name];
|
|
120664
|
-
return
|
|
120884
|
+
return isRecord7(target) ? [name, target] : void 0;
|
|
120665
120885
|
}
|
|
120666
120886
|
function convertPathItem(value2, context) {
|
|
120667
|
-
if (!
|
|
120887
|
+
if (!isRecord7(value2)) {
|
|
120668
120888
|
return deepClone(value2);
|
|
120669
120889
|
}
|
|
120670
120890
|
const resolved = resolvePathItemRef(value2, context);
|
|
@@ -120764,7 +120984,7 @@ function convertExample(value2) {
|
|
|
120764
120984
|
});
|
|
120765
120985
|
}
|
|
120766
120986
|
function isQuerystringParameter(value2) {
|
|
120767
|
-
return
|
|
120987
|
+
return isRecord7(value2) && value2.in === "querystring";
|
|
120768
120988
|
}
|
|
120769
120989
|
function isRemovedRef(value2, removed) {
|
|
120770
120990
|
const ref = getRef(value2);
|
|
@@ -120780,7 +121000,7 @@ function convertParameterOrHeader2(value2, context) {
|
|
|
120780
121000
|
style: (item) => item === "cookie" ? DROP : deepClone(item)
|
|
120781
121001
|
},
|
|
120782
121002
|
(out, parameter) => {
|
|
120783
|
-
const lostContent =
|
|
121003
|
+
const lostContent = isRecord7(parameter.content) && Object.keys(parameter.content).length > 0 && isRecord7(out.content) && Object.keys(out.content).length === 0;
|
|
120784
121004
|
return lostContent ? DROP : out;
|
|
120785
121005
|
}
|
|
120786
121006
|
);
|
|
@@ -120901,7 +121121,7 @@ function convertComponents2(value2, context) {
|
|
|
120901
121121
|
});
|
|
120902
121122
|
}
|
|
120903
121123
|
function losesEntireContent(value2, mediaTypes) {
|
|
120904
|
-
if (!(
|
|
121124
|
+
if (!(isRecord7(value2) && isRecord7(value2.content))) {
|
|
120905
121125
|
return false;
|
|
120906
121126
|
}
|
|
120907
121127
|
const entries = Object.values(value2.content);
|
|
@@ -120909,7 +121129,7 @@ function losesEntireContent(value2, mediaTypes) {
|
|
|
120909
121129
|
}
|
|
120910
121130
|
function indexRemovedComponentRefs(map2, prefix, mediaTypes, isDirectlyRemoved) {
|
|
120911
121131
|
const removed = /* @__PURE__ */ new Set();
|
|
120912
|
-
if (!
|
|
121132
|
+
if (!isRecord7(map2)) {
|
|
120913
121133
|
return removed;
|
|
120914
121134
|
}
|
|
120915
121135
|
const entries = Object.entries(map2);
|
|
@@ -120931,12 +121151,12 @@ function indexRemovedComponentRefs(map2, prefix, mediaTypes, isDirectlyRemoved)
|
|
|
120931
121151
|
return removed;
|
|
120932
121152
|
}
|
|
120933
121153
|
function createContext2(spec) {
|
|
120934
|
-
const components =
|
|
120935
|
-
const mediaTypes =
|
|
121154
|
+
const components = isRecord7(spec) ? spec.components : void 0;
|
|
121155
|
+
const mediaTypes = isRecord7(components) && isRecord7(components.mediaTypes) ? components.mediaTypes : void 0;
|
|
120936
121156
|
return {
|
|
120937
121157
|
mediaTypes,
|
|
120938
|
-
removedHeaderRefs: indexRemovedComponentRefs(
|
|
120939
|
-
removedParameterRefs: indexRemovedComponentRefs(
|
|
121158
|
+
removedHeaderRefs: indexRemovedComponentRefs(isRecord7(components) ? components.headers : void 0, HEADERS_REF_PREFIX, mediaTypes, () => false),
|
|
121159
|
+
removedParameterRefs: indexRemovedComponentRefs(isRecord7(components) ? components.parameters : void 0, PARAMETERS_REF_PREFIX, mediaTypes, isQuerystringParameter)
|
|
120940
121160
|
};
|
|
120941
121161
|
}
|
|
120942
121162
|
function convertJsonSchemaDialect(value2) {
|
|
@@ -126705,7 +126925,7 @@ var import_consumers = require("node:stream/consumers");
|
|
|
126705
126925
|
init_route();
|
|
126706
126926
|
|
|
126707
126927
|
// src/frontdoor/lineage.ts
|
|
126708
|
-
var
|
|
126928
|
+
var import_node_crypto19 = require("node:crypto");
|
|
126709
126929
|
var CACHE_MARKER_KEY = '"cache_control"';
|
|
126710
126930
|
var THREAD_MEMBER_KEYS = /* @__PURE__ */ new Set(['"model"', '"system"', '"tools"']);
|
|
126711
126931
|
var MESSAGES_KEY = '"messages"';
|
|
@@ -126782,8 +127002,8 @@ function nextToken(body, from) {
|
|
|
126782
127002
|
return SCALAR;
|
|
126783
127003
|
}
|
|
126784
127004
|
function walk(body, hashing, parentAfter) {
|
|
126785
|
-
const thread = (0,
|
|
126786
|
-
const messages = (0,
|
|
127005
|
+
const thread = (0, import_node_crypto19.createHash)("sha256");
|
|
127006
|
+
const messages = (0, import_node_crypto19.createHash)("sha256");
|
|
126787
127007
|
let parentDigest;
|
|
126788
127008
|
let elements = 0;
|
|
126789
127009
|
let depth = 0;
|
|
@@ -126904,7 +127124,7 @@ function lineageOf(body) {
|
|
|
126904
127124
|
}
|
|
126905
127125
|
const parentAfter = counted.elements > MESSAGES_PER_TURN ? counted.elements - MESSAGES_PER_TURN : void 0;
|
|
126906
127126
|
const hashed = walk(body, true, parentAfter);
|
|
126907
|
-
const combine = (messagesDigest) => (0,
|
|
127127
|
+
const combine = (messagesDigest) => (0, import_node_crypto19.createHash)("sha256").update(hashed.threadDigest).update(messagesDigest).digest("hex");
|
|
126908
127128
|
return { ownKey: combine(hashed.messagesDigest), parentKey: hashed.parentDigest === void 0 ? void 0 : combine(hashed.parentDigest) };
|
|
126909
127129
|
}
|
|
126910
127130
|
|
|
@@ -127289,7 +127509,7 @@ init_load();
|
|
|
127289
127509
|
init_schema();
|
|
127290
127510
|
|
|
127291
127511
|
// src/codex/translate.ts
|
|
127292
|
-
var
|
|
127512
|
+
var import_node_crypto20 = require("node:crypto");
|
|
127293
127513
|
init_schema();
|
|
127294
127514
|
|
|
127295
127515
|
// src/codex/anthropic.ts
|
|
@@ -127404,7 +127624,7 @@ function shortToolName(name, names) {
|
|
|
127404
127624
|
if (name.length <= CODEX_TOOL_NAME_LIMIT) {
|
|
127405
127625
|
return name;
|
|
127406
127626
|
}
|
|
127407
|
-
const hash2 = (0,
|
|
127627
|
+
const hash2 = (0, import_node_crypto20.createHash)("sha256").update(name).digest("hex").slice(0, TOOL_NAME_HASH_CHARS);
|
|
127408
127628
|
const shortened = `${name.slice(0, CODEX_TOOL_NAME_LIMIT - TOOL_NAME_HASH_CHARS - 1)}_${hash2}`;
|
|
127409
127629
|
names.set(shortened, name);
|
|
127410
127630
|
return shortened;
|
|
@@ -127529,7 +127749,25 @@ function translateRequest(body, config2) {
|
|
|
127529
127749
|
}
|
|
127530
127750
|
|
|
127531
127751
|
// src/antigravity/translate.ts
|
|
127532
|
-
var
|
|
127752
|
+
var import_node_crypto21 = require("node:crypto");
|
|
127753
|
+
|
|
127754
|
+
// src/antigravity/signatures.ts
|
|
127755
|
+
var MAX_REMEMBERED = 1024;
|
|
127756
|
+
var signatures = /* @__PURE__ */ new Map();
|
|
127757
|
+
function rememberToolCallSignature(toolUseId, signature) {
|
|
127758
|
+
signatures.set(toolUseId, signature);
|
|
127759
|
+
if (signatures.size > MAX_REMEMBERED) {
|
|
127760
|
+
const oldest = signatures.keys().next();
|
|
127761
|
+
if (oldest.done !== true) {
|
|
127762
|
+
signatures.delete(oldest.value);
|
|
127763
|
+
}
|
|
127764
|
+
}
|
|
127765
|
+
}
|
|
127766
|
+
function toolCallSignatureOf(toolUseId) {
|
|
127767
|
+
return signatures.get(toolUseId);
|
|
127768
|
+
}
|
|
127769
|
+
|
|
127770
|
+
// src/antigravity/translate.ts
|
|
127533
127771
|
init_schema();
|
|
127534
127772
|
function resolveAntigravityConfig(config2) {
|
|
127535
127773
|
const overrides = config2?.models;
|
|
@@ -127596,7 +127834,7 @@ function shortToolName2(name, names) {
|
|
|
127596
127834
|
if (sanitized.length <= ANTIGRAVITY_TOOL_NAME_LIMIT) {
|
|
127597
127835
|
result = sanitized;
|
|
127598
127836
|
} else {
|
|
127599
|
-
const hash2 = (0,
|
|
127837
|
+
const hash2 = (0, import_node_crypto21.createHash)("sha256").update(name).digest("hex").slice(0, TOOL_NAME_HASH_CHARS2);
|
|
127600
127838
|
const prefix = sanitized.slice(0, ANTIGRAVITY_TOOL_NAME_LIMIT - TOOL_NAME_HASH_CHARS2 - 1);
|
|
127601
127839
|
result = `${prefix}_${hash2}`;
|
|
127602
127840
|
}
|
|
@@ -127625,7 +127863,7 @@ function turnBlocks2(message) {
|
|
|
127625
127863
|
}
|
|
127626
127864
|
return blocks.map((block2) => isTextBlock(block2) ? { ...block2, text: systemReminder2(block2.text) } : block2);
|
|
127627
127865
|
}
|
|
127628
|
-
function
|
|
127866
|
+
function isRecord8(value2) {
|
|
127629
127867
|
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
127630
127868
|
}
|
|
127631
127869
|
function messagesToGeminiContents(messages, names, toolIdToName) {
|
|
@@ -127667,11 +127905,14 @@ function messagesToGeminiContents(messages, names, toolIdToName) {
|
|
|
127667
127905
|
} else if (isToolUseBlock(block2)) {
|
|
127668
127906
|
const sanitizedName = shortToolName2(block2.name, names);
|
|
127669
127907
|
toolIdToName.set(block2.id, sanitizedName);
|
|
127908
|
+
const signature = toolCallSignatureOf(block2.id);
|
|
127670
127909
|
ensureRole("model").push({
|
|
127671
127910
|
functionCall: {
|
|
127672
127911
|
name: sanitizedName,
|
|
127673
|
-
args:
|
|
127674
|
-
}
|
|
127912
|
+
args: isRecord8(block2.input) ? block2.input : {}
|
|
127913
|
+
},
|
|
127914
|
+
// The relay remembered the signature the backend attached to this exact call; echoing it back is what the backend requires of a repeated function call.
|
|
127915
|
+
...signature === void 0 ? {} : { thoughtSignature: signature }
|
|
127675
127916
|
});
|
|
127676
127917
|
} else if (isToolResultBlock(block2)) {
|
|
127677
127918
|
const toolName = toolIdToName.get(block2.tool_use_id) ?? "unknown_tool";
|
|
@@ -127688,21 +127929,110 @@ function messagesToGeminiContents(messages, names, toolIdToName) {
|
|
|
127688
127929
|
return contents;
|
|
127689
127930
|
}
|
|
127690
127931
|
var EMPTY_SCHEMA = { type: "object", properties: {} };
|
|
127932
|
+
var GEMINI_SCHEMA_KEYS = /* @__PURE__ */ new Set(["type", "format", "description", "nullable", "enum", "anyOf", "items", "properties", "required", "minimum", "maximum", "minItems", "maxItems"]);
|
|
127933
|
+
function describeSchemaValue(node2) {
|
|
127934
|
+
if (!isRecord8(node2)) {
|
|
127935
|
+
return "any value";
|
|
127936
|
+
}
|
|
127937
|
+
const type2 = node2.type;
|
|
127938
|
+
const name = typeof type2 === "string" ? type2 : Array.isArray(type2) && typeof type2[0] === "string" ? type2[0] : "value";
|
|
127939
|
+
if (name === "array") {
|
|
127940
|
+
return `a list of ${describeSchemaValue(node2.items)}`;
|
|
127941
|
+
}
|
|
127942
|
+
return name === "object" ? "an object" : `a ${name}`;
|
|
127943
|
+
}
|
|
127944
|
+
function toGeminiSchema(node2) {
|
|
127945
|
+
if (!isRecord8(node2)) {
|
|
127946
|
+
return node2;
|
|
127947
|
+
}
|
|
127948
|
+
const out = {};
|
|
127949
|
+
const notes = [];
|
|
127950
|
+
let nullable2 = false;
|
|
127951
|
+
for (const [key, value2] of Object.entries(node2)) {
|
|
127952
|
+
if (key === "type" && Array.isArray(value2)) {
|
|
127953
|
+
const named = value2.filter((entry) => entry !== "null");
|
|
127954
|
+
if (named.length > 0 && typeof named[0] === "string") {
|
|
127955
|
+
out.type = named[0];
|
|
127956
|
+
}
|
|
127957
|
+
nullable2 = value2.includes("null");
|
|
127958
|
+
continue;
|
|
127959
|
+
}
|
|
127960
|
+
if (!GEMINI_SCHEMA_KEYS.has(key)) {
|
|
127961
|
+
if (key === "additionalProperties" && value2 !== false) {
|
|
127962
|
+
notes.push(`Each value is ${describeSchemaValue(value2)}.`);
|
|
127963
|
+
} else if (key === "propertyNames" && isRecord8(value2) && typeof value2.pattern === "string") {
|
|
127964
|
+
notes.push(`Keys match ${value2.pattern}.`);
|
|
127965
|
+
}
|
|
127966
|
+
continue;
|
|
127967
|
+
}
|
|
127968
|
+
out[key] = value2;
|
|
127969
|
+
}
|
|
127970
|
+
if (out.type === "null") {
|
|
127971
|
+
delete out.type;
|
|
127972
|
+
}
|
|
127973
|
+
if (nullable2 && out.type !== void 0) {
|
|
127974
|
+
out.nullable = true;
|
|
127975
|
+
}
|
|
127976
|
+
if (notes.length > 0) {
|
|
127977
|
+
const description = typeof out.description === "string" ? out.description : "";
|
|
127978
|
+
out.description = `${description}${description === "" ? "" : " "}${notes.join(" ")}`;
|
|
127979
|
+
}
|
|
127980
|
+
if ("properties" in out && isRecord8(out.properties)) {
|
|
127981
|
+
out.properties = Object.fromEntries(Object.entries(out.properties).map(([name, child]) => [name, toGeminiSchema(child)]));
|
|
127982
|
+
}
|
|
127983
|
+
if ("items" in out) {
|
|
127984
|
+
out.items = toGeminiSchema(out.items);
|
|
127985
|
+
} else if (out.type === "array") {
|
|
127986
|
+
out.items = {};
|
|
127987
|
+
}
|
|
127988
|
+
if (Array.isArray(out.anyOf)) {
|
|
127989
|
+
out.anyOf = out.anyOf.map(toGeminiSchema);
|
|
127990
|
+
}
|
|
127991
|
+
return out;
|
|
127992
|
+
}
|
|
127691
127993
|
function mapTools2(tools, names) {
|
|
127692
127994
|
if (tools === void 0 || tools.length === 0) {
|
|
127693
127995
|
return void 0;
|
|
127694
127996
|
}
|
|
127695
|
-
const declarations = tools.map((tool) =>
|
|
127696
|
-
|
|
127697
|
-
|
|
127698
|
-
|
|
127699
|
-
|
|
127997
|
+
const declarations = tools.map((tool) => {
|
|
127998
|
+
const converted = tool.input_schema === void 0 ? void 0 : toGeminiSchema(tool.input_schema);
|
|
127999
|
+
return {
|
|
128000
|
+
name: shortToolName2(tool.name, names),
|
|
128001
|
+
description: tool.description,
|
|
128002
|
+
parameters: isRecord8(converted) ? converted : EMPTY_SCHEMA
|
|
128003
|
+
};
|
|
128004
|
+
});
|
|
127700
128005
|
return [{ functionDeclarations: declarations }];
|
|
127701
128006
|
}
|
|
128007
|
+
var EFFORT_SUFFIXES = /* @__PURE__ */ new Set(["low", "medium", "high"]);
|
|
128008
|
+
function effortSuffixOf(level) {
|
|
128009
|
+
if (level === "medium") {
|
|
128010
|
+
return "medium";
|
|
128011
|
+
}
|
|
128012
|
+
return level === "none" || level === "low" ? "low" : "high";
|
|
128013
|
+
}
|
|
128014
|
+
function splitEffortSuffix(model) {
|
|
128015
|
+
const index = model.lastIndexOf("-");
|
|
128016
|
+
if (index === -1) {
|
|
128017
|
+
return void 0;
|
|
128018
|
+
}
|
|
128019
|
+
const suffix = model.slice(index + 1);
|
|
128020
|
+
return EFFORT_SUFFIXES.has(suffix) ? { base: model.slice(0, index), suffix } : void 0;
|
|
128021
|
+
}
|
|
128022
|
+
function completeEffortSuffix(model, request7, config2) {
|
|
128023
|
+
if (splitEffortSuffix(model) !== void 0) {
|
|
128024
|
+
return model;
|
|
128025
|
+
}
|
|
128026
|
+
const configured = [config2.defaultModel, ...Object.values(config2.models)];
|
|
128027
|
+
const effort = request7.output_config?.effort;
|
|
128028
|
+
const level = ANTIGRAVITY_EFFORTS.find((candidate) => candidate === effort) ?? config2.effort;
|
|
128029
|
+
const suffixed = `${model}-${effortSuffixOf(level)}`;
|
|
128030
|
+
return configured.some((entry) => entry === suffixed || splitEffortSuffix(entry)?.base === model) ? suffixed : model;
|
|
128031
|
+
}
|
|
127702
128032
|
function translateRequest2(request7, config2) {
|
|
127703
128033
|
const toolNames = /* @__PURE__ */ new Map();
|
|
127704
128034
|
const toolIdToName = /* @__PURE__ */ new Map();
|
|
127705
|
-
const model = mapModel2(request7.model ?? "", config2);
|
|
128035
|
+
const model = completeEffortSuffix(mapModel2(request7.model ?? "", config2), request7, config2);
|
|
127706
128036
|
const thinkingBudget = mapEffort2(request7, config2);
|
|
127707
128037
|
const systemInstruction = systemToInstruction(request7.system);
|
|
127708
128038
|
const contents = messagesToGeminiContents(request7.messages, toolNames, toolIdToName);
|
|
@@ -127720,6 +128050,190 @@ function translateRequest2(request7, config2) {
|
|
|
127720
128050
|
};
|
|
127721
128051
|
}
|
|
127722
128052
|
|
|
128053
|
+
// src/antigravity/quota.ts
|
|
128054
|
+
init_cloudUpstream();
|
|
128055
|
+
var MS_PER_SECOND8 = 1e3;
|
|
128056
|
+
var DEFAULT_RETRY_AFTER_SECONDS = 60;
|
|
128057
|
+
var PERCENT_MULTIPLIER = 100;
|
|
128058
|
+
var EXHAUSTED_PERCENT = "100";
|
|
128059
|
+
var GEMINI_5H_KEYS = ["gemini-5h", "gemini_5h", "gemini"];
|
|
128060
|
+
var GEMINI_WEEKLY_KEYS = ["gemini-weekly", "gemini_weekly"];
|
|
128061
|
+
var THIRD_PARTY_5H_KEYS = ["3p-5h", "claude-5h", "3p_5h", "claude_5h", "claude"];
|
|
128062
|
+
var THIRD_PARTY_WEEKLY_KEYS = ["3p-weekly", "claude-weekly", "3p_weekly", "claude_weekly"];
|
|
128063
|
+
function findBucket(quota, keys) {
|
|
128064
|
+
for (const key of keys) {
|
|
128065
|
+
const bucket = quota[key];
|
|
128066
|
+
if (bucket !== void 0) {
|
|
128067
|
+
return bucket;
|
|
128068
|
+
}
|
|
128069
|
+
}
|
|
128070
|
+
return void 0;
|
|
128071
|
+
}
|
|
128072
|
+
function calculateUtilization(remainingFraction) {
|
|
128073
|
+
if (remainingFraction === void 0 || !Number.isFinite(remainingFraction)) {
|
|
128074
|
+
return void 0;
|
|
128075
|
+
}
|
|
128076
|
+
const clampedRem = Math.max(0, Math.min(1, remainingFraction));
|
|
128077
|
+
const used = Math.max(0, 1 - clampedRem);
|
|
128078
|
+
return String(Math.round(used * PERCENT_MULTIPLIER));
|
|
128079
|
+
}
|
|
128080
|
+
function calculateResetTimestamp(nowSec, resetInSeconds) {
|
|
128081
|
+
if (resetInSeconds === void 0 || !Number.isFinite(resetInSeconds) || resetInSeconds < 0) {
|
|
128082
|
+
return void 0;
|
|
128083
|
+
}
|
|
128084
|
+
return String(nowSec + Math.ceil(resetInSeconds));
|
|
128085
|
+
}
|
|
128086
|
+
function parseRetryAfterSeconds(raw, defaultSeconds = DEFAULT_RETRY_AFTER_SECONDS) {
|
|
128087
|
+
if (raw === null || raw === void 0 || raw.trim() === "") {
|
|
128088
|
+
return defaultSeconds;
|
|
128089
|
+
}
|
|
128090
|
+
const numeric = Number(raw);
|
|
128091
|
+
if (Number.isFinite(numeric) && numeric > 0) {
|
|
128092
|
+
return Math.ceil(numeric);
|
|
128093
|
+
}
|
|
128094
|
+
const parsedDate = Date.parse(raw);
|
|
128095
|
+
if (!Number.isNaN(parsedDate)) {
|
|
128096
|
+
const diffSec = Math.ceil((parsedDate - Date.now()) / MS_PER_SECOND8);
|
|
128097
|
+
return Math.max(1, diffSec);
|
|
128098
|
+
}
|
|
128099
|
+
return defaultSeconds;
|
|
128100
|
+
}
|
|
128101
|
+
function unifiedAntigravityQuotaHeaders(params) {
|
|
128102
|
+
const rejected = params.rejected === true;
|
|
128103
|
+
const nowSec = Math.floor(params.nowMs / MS_PER_SECOND8);
|
|
128104
|
+
const headers = {
|
|
128105
|
+
"anthropic-ratelimit-unified-status": rejected ? "rejected" : "allowed"
|
|
128106
|
+
};
|
|
128107
|
+
const modelLower = (params.model ?? "").toLowerCase();
|
|
128108
|
+
const isGemini = modelLower.includes("gemini");
|
|
128109
|
+
const fiveHourKeys = isGemini ? GEMINI_5H_KEYS : THIRD_PARTY_5H_KEYS;
|
|
128110
|
+
const weeklyKeys = isGemini ? GEMINI_WEEKLY_KEYS : THIRD_PARTY_WEEKLY_KEYS;
|
|
128111
|
+
const quota = params.quota ?? {};
|
|
128112
|
+
const b5h = findBucket(quota, fiveHourKeys);
|
|
128113
|
+
const bWk = findBucket(quota, weeklyKeys);
|
|
128114
|
+
const used5h = calculateUtilization(b5h?.remaining_fraction);
|
|
128115
|
+
const reset5h = calculateResetTimestamp(nowSec, b5h?.reset_in_seconds);
|
|
128116
|
+
const used7d = calculateUtilization(bWk?.remaining_fraction);
|
|
128117
|
+
const reset7d = calculateResetTimestamp(nowSec, bWk?.reset_in_seconds);
|
|
128118
|
+
let earliestResetSec;
|
|
128119
|
+
if (used5h !== void 0 && reset5h !== void 0) {
|
|
128120
|
+
headers["anthropic-ratelimit-unified-5h-utilization"] = used5h;
|
|
128121
|
+
headers["anthropic-ratelimit-unified-5h-reset"] = reset5h;
|
|
128122
|
+
earliestResetSec = Number(reset5h);
|
|
128123
|
+
}
|
|
128124
|
+
if (used7d !== void 0 && reset7d !== void 0) {
|
|
128125
|
+
headers["anthropic-ratelimit-unified-7d-utilization"] = used7d;
|
|
128126
|
+
headers["anthropic-ratelimit-unified-7d-reset"] = reset7d;
|
|
128127
|
+
const reset7dSec = Number(reset7d);
|
|
128128
|
+
earliestResetSec = earliestResetSec === void 0 ? reset7dSec : Math.min(earliestResetSec, reset7dSec);
|
|
128129
|
+
}
|
|
128130
|
+
if (rejected) {
|
|
128131
|
+
const retrySec = params.retryAfterSeconds ?? DEFAULT_RETRY_AFTER_SECONDS;
|
|
128132
|
+
const fallbackReset = String(nowSec + retrySec);
|
|
128133
|
+
if (headers["anthropic-ratelimit-unified-5h-utilization"] === void 0) {
|
|
128134
|
+
headers["anthropic-ratelimit-unified-5h-utilization"] = EXHAUSTED_PERCENT;
|
|
128135
|
+
headers["anthropic-ratelimit-unified-5h-reset"] = fallbackReset;
|
|
128136
|
+
}
|
|
128137
|
+
if (headers["anthropic-ratelimit-unified-7d-utilization"] === void 0) {
|
|
128138
|
+
headers["anthropic-ratelimit-unified-7d-utilization"] = EXHAUSTED_PERCENT;
|
|
128139
|
+
headers["anthropic-ratelimit-unified-7d-reset"] = fallbackReset;
|
|
128140
|
+
}
|
|
128141
|
+
earliestResetSec = earliestResetSec === void 0 ? nowSec + retrySec : Math.min(earliestResetSec, nowSec + retrySec);
|
|
128142
|
+
}
|
|
128143
|
+
if (earliestResetSec !== void 0) {
|
|
128144
|
+
headers["anthropic-ratelimit-unified-reset"] = String(earliestResetSec);
|
|
128145
|
+
}
|
|
128146
|
+
return headers;
|
|
128147
|
+
}
|
|
128148
|
+
function isRecord9(value2) {
|
|
128149
|
+
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
128150
|
+
}
|
|
128151
|
+
function bucketToEntry(bucket, nowMs) {
|
|
128152
|
+
if (!isRecord9(bucket) || typeof bucket.bucketId !== "string") {
|
|
128153
|
+
return void 0;
|
|
128154
|
+
}
|
|
128155
|
+
const remainingFraction = typeof bucket.remainingFraction === "number" && Number.isFinite(bucket.remainingFraction) ? bucket.remainingFraction : void 0;
|
|
128156
|
+
const resetMs = typeof bucket.resetTime === "string" ? Date.parse(bucket.resetTime) : Number.NaN;
|
|
128157
|
+
const resetInSeconds = Number.isNaN(resetMs) ? void 0 : Math.max(0, Math.ceil((resetMs - nowMs) / MS_PER_SECOND8));
|
|
128158
|
+
if (remainingFraction === void 0 && resetInSeconds === void 0) {
|
|
128159
|
+
return void 0;
|
|
128160
|
+
}
|
|
128161
|
+
return {
|
|
128162
|
+
key: bucket.bucketId,
|
|
128163
|
+
entry: {
|
|
128164
|
+
...remainingFraction === void 0 ? {} : { remaining_fraction: remainingFraction },
|
|
128165
|
+
...resetInSeconds === void 0 ? {} : { reset_in_seconds: resetInSeconds }
|
|
128166
|
+
}
|
|
128167
|
+
};
|
|
128168
|
+
}
|
|
128169
|
+
async function fetchAntigravityQuotaSummary(params) {
|
|
128170
|
+
const fetchFn = params.fetchFn ?? fetch;
|
|
128171
|
+
let response;
|
|
128172
|
+
try {
|
|
128173
|
+
response = await fetchFn(`${params.endpoint ?? CCPA_ENDPOINT}/v1internal:retrieveUserQuotaSummary`, {
|
|
128174
|
+
method: "POST",
|
|
128175
|
+
headers: {
|
|
128176
|
+
"Content-Type": "application/json",
|
|
128177
|
+
Authorization: `Bearer ${params.token}`,
|
|
128178
|
+
"User-Agent": CCPA_USER_AGENT
|
|
128179
|
+
},
|
|
128180
|
+
body: JSON.stringify({ project: params.projectId ?? CCPA_DEFAULT_PROJECT_ID })
|
|
128181
|
+
});
|
|
128182
|
+
} catch {
|
|
128183
|
+
return void 0;
|
|
128184
|
+
}
|
|
128185
|
+
if (!response.ok) {
|
|
128186
|
+
return void 0;
|
|
128187
|
+
}
|
|
128188
|
+
let parsed;
|
|
128189
|
+
try {
|
|
128190
|
+
parsed = await response.json();
|
|
128191
|
+
} catch {
|
|
128192
|
+
return void 0;
|
|
128193
|
+
}
|
|
128194
|
+
if (!isRecord9(parsed) || !Array.isArray(parsed.groups)) {
|
|
128195
|
+
return void 0;
|
|
128196
|
+
}
|
|
128197
|
+
const map2 = {};
|
|
128198
|
+
for (const group of parsed.groups) {
|
|
128199
|
+
if (!isRecord9(group) || !Array.isArray(group.buckets)) {
|
|
128200
|
+
continue;
|
|
128201
|
+
}
|
|
128202
|
+
for (const bucket of group.buckets) {
|
|
128203
|
+
const read = bucketToEntry(bucket, params.nowMs);
|
|
128204
|
+
if (read !== void 0) {
|
|
128205
|
+
map2[read.key] = read.entry;
|
|
128206
|
+
}
|
|
128207
|
+
}
|
|
128208
|
+
}
|
|
128209
|
+
return Object.keys(map2).length > 0 ? map2 : void 0;
|
|
128210
|
+
}
|
|
128211
|
+
var ANTIGRAVITY_QUOTA_REFRESH_MS = 6e4;
|
|
128212
|
+
function createCachedAntigravityQuotaSource(params) {
|
|
128213
|
+
let cachedAt = Number.NEGATIVE_INFINITY;
|
|
128214
|
+
let cached2;
|
|
128215
|
+
let refresh;
|
|
128216
|
+
const refreshMs = params.refreshMs ?? ANTIGRAVITY_QUOTA_REFRESH_MS;
|
|
128217
|
+
const run = async () => {
|
|
128218
|
+
const nowMs = params.now();
|
|
128219
|
+
const read = await params.fetchSummary(nowMs);
|
|
128220
|
+
if (read !== void 0) {
|
|
128221
|
+
cached2 = read;
|
|
128222
|
+
}
|
|
128223
|
+
cachedAt = params.now();
|
|
128224
|
+
};
|
|
128225
|
+
return () => {
|
|
128226
|
+
const nowMs = params.now();
|
|
128227
|
+
if (nowMs - cachedAt < refreshMs) {
|
|
128228
|
+
return cached2;
|
|
128229
|
+
}
|
|
128230
|
+
refresh ??= run().finally(() => {
|
|
128231
|
+
refresh = void 0;
|
|
128232
|
+
});
|
|
128233
|
+
return cached2;
|
|
128234
|
+
};
|
|
128235
|
+
}
|
|
128236
|
+
|
|
127723
128237
|
// src/frontdoor/providerRoute.ts
|
|
127724
128238
|
init_credential();
|
|
127725
128239
|
init_providersStore();
|
|
@@ -127856,10 +128370,10 @@ function quotaHeaders(upstream) {
|
|
|
127856
128370
|
}
|
|
127857
128371
|
return headers;
|
|
127858
128372
|
}
|
|
127859
|
-
var
|
|
128373
|
+
var EXHAUSTED_PERCENT2 = "100";
|
|
127860
128374
|
function unifiedQuotaHeaders(upstream, rejected, quotaError) {
|
|
127861
128375
|
const headers = { "anthropic-ratelimit-unified-status": rejected ? "rejected" : "allowed" };
|
|
127862
|
-
const used7d = upstream.get("x-codex-primary-used-percent") ?? (rejected ?
|
|
128376
|
+
const used7d = upstream.get("x-codex-primary-used-percent") ?? (rejected ? EXHAUSTED_PERCENT2 : null);
|
|
127863
128377
|
const reset7d = upstream.get("x-codex-primary-reset-at") ?? (quotaError?.resets_at === void 0 ? null : String(quotaError.resets_at));
|
|
127864
128378
|
if (used7d !== null && reset7d !== null) {
|
|
127865
128379
|
headers["anthropic-ratelimit-unified-7d-utilization"] = used7d;
|
|
@@ -127880,17 +128394,17 @@ function unifiedQuotaHeaders(upstream, rejected, quotaError) {
|
|
|
127880
128394
|
}
|
|
127881
128395
|
return headers;
|
|
127882
128396
|
}
|
|
127883
|
-
var
|
|
128397
|
+
var MS_PER_SECOND9 = 1e3;
|
|
127884
128398
|
function buildUsageSnapshot(upstream, quotaError, nowMs) {
|
|
127885
|
-
const used7 = upstream.get("x-codex-primary-used-percent") ?? (quotaError === void 0 ? null :
|
|
128399
|
+
const used7 = upstream.get("x-codex-primary-used-percent") ?? (quotaError === void 0 ? null : EXHAUSTED_PERCENT2);
|
|
127886
128400
|
const reset7 = upstream.get("x-codex-primary-reset-at") ?? (quotaError?.resets_at === void 0 ? null : String(quotaError.resets_at));
|
|
127887
|
-
const sevenDay = used7 !== null && reset7 !== null ? { used_percentage: Number(used7), resets_at: new Date(Number(reset7) *
|
|
128401
|
+
const sevenDay = used7 !== null && reset7 !== null ? { used_percentage: Number(used7), resets_at: new Date(Number(reset7) * MS_PER_SECOND9).toISOString() } : void 0;
|
|
127888
128402
|
let fiveHour;
|
|
127889
128403
|
if (Number(upstream.get("x-codex-secondary-window-minutes")) > 0) {
|
|
127890
128404
|
const used5 = upstream.get("x-codex-secondary-used-percent");
|
|
127891
128405
|
const reset5 = upstream.get("x-codex-secondary-reset-at");
|
|
127892
128406
|
if (used5 !== null && reset5 !== null) {
|
|
127893
|
-
fiveHour = { used_percentage: Number(used5), resets_at: new Date(Number(reset5) *
|
|
128407
|
+
fiveHour = { used_percentage: Number(used5), resets_at: new Date(Number(reset5) * MS_PER_SECOND9).toISOString() };
|
|
127894
128408
|
}
|
|
127895
128409
|
}
|
|
127896
128410
|
if (sevenDay === void 0 && fiveHour === void 0) {
|
|
@@ -128313,7 +128827,7 @@ function createCodexRouteMount(ports, upstreamBase, provider) {
|
|
|
128313
128827
|
}
|
|
128314
128828
|
|
|
128315
128829
|
// src/antigravity/route.ts
|
|
128316
|
-
var
|
|
128830
|
+
var import_node_crypto22 = require("node:crypto");
|
|
128317
128831
|
init_route();
|
|
128318
128832
|
|
|
128319
128833
|
// src/antigravity/relay.ts
|
|
@@ -128384,7 +128898,7 @@ function createAntigravityRelay(params) {
|
|
|
128384
128898
|
const candidate = chunk.candidates?.[0];
|
|
128385
128899
|
if (candidate?.content?.parts !== void 0) {
|
|
128386
128900
|
for (const part of candidate.content.parts) {
|
|
128387
|
-
if ("text" in part && typeof part.text === "string" && part.text.length > 0) {
|
|
128901
|
+
if ("text" in part && typeof part.text === "string" && (part.thoughtSignature === void 0 || part.text.length > 0)) {
|
|
128388
128902
|
if (activeBlockType !== "text") {
|
|
128389
128903
|
closeActiveBlock();
|
|
128390
128904
|
currentBlockIndex += 1;
|
|
@@ -128414,6 +128928,9 @@ function createAntigravityRelay(params) {
|
|
|
128414
128928
|
const callName = part.functionCall.name;
|
|
128415
128929
|
const originalName = params.toolNames.get(callName) ?? callName;
|
|
128416
128930
|
const callId = params.fallbackId();
|
|
128931
|
+
if (typeof part.thoughtSignature === "string") {
|
|
128932
|
+
rememberToolCallSignature(callId, part.thoughtSignature);
|
|
128933
|
+
}
|
|
128417
128934
|
frames.push({
|
|
128418
128935
|
event: "content_block_start",
|
|
128419
128936
|
data: {
|
|
@@ -128487,81 +129004,8 @@ function createAntigravityRelay(params) {
|
|
|
128487
129004
|
return { pushChunk, finish };
|
|
128488
129005
|
}
|
|
128489
129006
|
|
|
128490
|
-
// src/antigravity/
|
|
128491
|
-
|
|
128492
|
-
function buildCloudUrl(config2, model) {
|
|
128493
|
-
const { cloud } = config2;
|
|
128494
|
-
if (cloud.projectId !== void 0 && cloud.location !== void 0) {
|
|
128495
|
-
const base2 = cloud.endpoint ?? `https://${cloud.location}-aiplatform.googleapis.com`;
|
|
128496
|
-
return `${base2}/v1/projects/${cloud.projectId}/locations/${cloud.location}/publishers/google/models/${encodeURIComponent(model)}:streamGenerateContent?alt=sse`;
|
|
128497
|
-
}
|
|
128498
|
-
const base = cloud.endpoint ?? GEMINI_API_BASE_URL;
|
|
128499
|
-
return `${base}/v1beta/models/${encodeURIComponent(model)}:streamGenerateContent?alt=sse`;
|
|
128500
|
-
}
|
|
128501
|
-
function buildCloudHeaders(token, credentialTarget) {
|
|
128502
|
-
const headers = {
|
|
128503
|
-
"Content-Type": "application/json",
|
|
128504
|
-
Accept: "text/event-stream"
|
|
128505
|
-
};
|
|
128506
|
-
if (credentialTarget === "apiKey") {
|
|
128507
|
-
headers["x-goog-api-key"] = token;
|
|
128508
|
-
} else {
|
|
128509
|
-
headers.Authorization = `Bearer ${token}`;
|
|
128510
|
-
}
|
|
128511
|
-
return headers;
|
|
128512
|
-
}
|
|
128513
|
-
var AntigravityUpstreamError = class extends Error {
|
|
128514
|
-
status;
|
|
128515
|
-
retryAfter;
|
|
128516
|
-
constructor(status, message, retryAfter) {
|
|
128517
|
-
super(`Google Antigravity API error (${String(status)}): ${message}`);
|
|
128518
|
-
this.name = "AntigravityUpstreamError";
|
|
128519
|
-
this.status = status;
|
|
128520
|
-
this.retryAfter = retryAfter;
|
|
128521
|
-
}
|
|
128522
|
-
};
|
|
128523
|
-
async function* callCloudAntigravity(params, fetchFn = fetch) {
|
|
128524
|
-
const url2 = buildCloudUrl(params.config, params.model);
|
|
128525
|
-
const headers = buildCloudHeaders(params.token, params.credentialTarget);
|
|
128526
|
-
const response = await fetchFn(url2, {
|
|
128527
|
-
method: "POST",
|
|
128528
|
-
headers,
|
|
128529
|
-
body: JSON.stringify(params.request),
|
|
128530
|
-
signal: params.signal
|
|
128531
|
-
});
|
|
128532
|
-
if (!response.ok) {
|
|
128533
|
-
const errorText = await response.text();
|
|
128534
|
-
const retryAfter = response.headers.get("retry-after");
|
|
128535
|
-
throw new AntigravityUpstreamError(response.status, errorText, retryAfter);
|
|
128536
|
-
}
|
|
128537
|
-
if (response.body === null) {
|
|
128538
|
-
return;
|
|
128539
|
-
}
|
|
128540
|
-
const decoder = new TextDecoder("utf-8");
|
|
128541
|
-
let buffer2 = "";
|
|
128542
|
-
const sseDataPrefix = "data:";
|
|
128543
|
-
for await (const rawChunk of response.body) {
|
|
128544
|
-
const chunk = rawChunk instanceof Uint8Array ? rawChunk : Buffer.from(String(rawChunk));
|
|
128545
|
-
buffer2 += decoder.decode(chunk, { stream: true });
|
|
128546
|
-
const lines = buffer2.split("\n");
|
|
128547
|
-
buffer2 = lines.pop() ?? "";
|
|
128548
|
-
for (const line of lines) {
|
|
128549
|
-
const trimmed = line.trim();
|
|
128550
|
-
if (trimmed.startsWith(sseDataPrefix)) {
|
|
128551
|
-
const jsonStr = trimmed.slice(sseDataPrefix.length).trim();
|
|
128552
|
-
if (jsonStr.length > 0) {
|
|
128553
|
-
try {
|
|
128554
|
-
const parsed = JSON.parse(jsonStr);
|
|
128555
|
-
if (typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)) {
|
|
128556
|
-
yield parsed;
|
|
128557
|
-
}
|
|
128558
|
-
} catch {
|
|
128559
|
-
}
|
|
128560
|
-
}
|
|
128561
|
-
}
|
|
128562
|
-
}
|
|
128563
|
-
}
|
|
128564
|
-
}
|
|
129007
|
+
// src/antigravity/route.ts
|
|
129008
|
+
init_cloudUpstream();
|
|
128565
129009
|
|
|
128566
129010
|
// src/antigravity/localUpstream.ts
|
|
128567
129011
|
var import_node_child_process6 = require("node:child_process");
|
|
@@ -128631,7 +129075,7 @@ var AcpStreamMessageSchema = external_exports.looseObject({
|
|
|
128631
129075
|
chunk: external_exports.looseObject({}).optional()
|
|
128632
129076
|
}).optional()
|
|
128633
129077
|
});
|
|
128634
|
-
function
|
|
129078
|
+
function isRecord10(value2) {
|
|
128635
129079
|
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
128636
129080
|
}
|
|
128637
129081
|
function normalizeFinishReason(reason) {
|
|
@@ -128656,7 +129100,7 @@ function parseJsonRecord(raw) {
|
|
|
128656
129100
|
}
|
|
128657
129101
|
try {
|
|
128658
129102
|
const parsed = JSON.parse(raw);
|
|
128659
|
-
if (
|
|
129103
|
+
if (isRecord10(parsed)) {
|
|
128660
129104
|
return parsed;
|
|
128661
129105
|
}
|
|
128662
129106
|
} catch {
|
|
@@ -128742,104 +129186,9 @@ async function* callLocalAntigravity(params) {
|
|
|
128742
129186
|
}
|
|
128743
129187
|
}
|
|
128744
129188
|
|
|
128745
|
-
// src/antigravity/quota.ts
|
|
128746
|
-
var MS_PER_SECOND9 = 1e3;
|
|
128747
|
-
var DEFAULT_RETRY_AFTER_SECONDS = 60;
|
|
128748
|
-
var PERCENT_MULTIPLIER = 100;
|
|
128749
|
-
var EXHAUSTED_PERCENT2 = "100";
|
|
128750
|
-
var GEMINI_5H_KEYS = ["gemini-5h", "gemini_5h", "gemini"];
|
|
128751
|
-
var GEMINI_WEEKLY_KEYS = ["gemini-weekly", "gemini_weekly"];
|
|
128752
|
-
var THIRD_PARTY_5H_KEYS = ["3p-5h", "claude-5h", "3p_5h", "claude_5h", "claude"];
|
|
128753
|
-
var THIRD_PARTY_WEEKLY_KEYS = ["3p-weekly", "claude-weekly", "3p_weekly", "claude_weekly"];
|
|
128754
|
-
function findBucket(quota, keys) {
|
|
128755
|
-
for (const key of keys) {
|
|
128756
|
-
const bucket = quota[key];
|
|
128757
|
-
if (bucket !== void 0) {
|
|
128758
|
-
return bucket;
|
|
128759
|
-
}
|
|
128760
|
-
}
|
|
128761
|
-
return void 0;
|
|
128762
|
-
}
|
|
128763
|
-
function calculateUtilization(remainingFraction) {
|
|
128764
|
-
if (remainingFraction === void 0 || !Number.isFinite(remainingFraction)) {
|
|
128765
|
-
return void 0;
|
|
128766
|
-
}
|
|
128767
|
-
const clampedRem = Math.max(0, Math.min(1, remainingFraction));
|
|
128768
|
-
const used = Math.max(0, 1 - clampedRem);
|
|
128769
|
-
return String(Math.round(used * PERCENT_MULTIPLIER));
|
|
128770
|
-
}
|
|
128771
|
-
function calculateResetTimestamp(nowSec, resetInSeconds) {
|
|
128772
|
-
if (resetInSeconds === void 0 || !Number.isFinite(resetInSeconds) || resetInSeconds < 0) {
|
|
128773
|
-
return void 0;
|
|
128774
|
-
}
|
|
128775
|
-
return String(nowSec + Math.ceil(resetInSeconds));
|
|
128776
|
-
}
|
|
128777
|
-
function parseRetryAfterSeconds(raw, defaultSeconds = DEFAULT_RETRY_AFTER_SECONDS) {
|
|
128778
|
-
if (raw === null || raw === void 0 || raw.trim() === "") {
|
|
128779
|
-
return defaultSeconds;
|
|
128780
|
-
}
|
|
128781
|
-
const numeric = Number(raw);
|
|
128782
|
-
if (Number.isFinite(numeric) && numeric > 0) {
|
|
128783
|
-
return Math.ceil(numeric);
|
|
128784
|
-
}
|
|
128785
|
-
const parsedDate = Date.parse(raw);
|
|
128786
|
-
if (!Number.isNaN(parsedDate)) {
|
|
128787
|
-
const diffSec = Math.ceil((parsedDate - Date.now()) / MS_PER_SECOND9);
|
|
128788
|
-
return Math.max(1, diffSec);
|
|
128789
|
-
}
|
|
128790
|
-
return defaultSeconds;
|
|
128791
|
-
}
|
|
128792
|
-
function unifiedAntigravityQuotaHeaders(params) {
|
|
128793
|
-
const rejected = params.rejected === true;
|
|
128794
|
-
const nowSec = Math.floor(params.nowMs / MS_PER_SECOND9);
|
|
128795
|
-
const headers = {
|
|
128796
|
-
"anthropic-ratelimit-unified-status": rejected ? "rejected" : "allowed"
|
|
128797
|
-
};
|
|
128798
|
-
const modelLower = (params.model ?? "").toLowerCase();
|
|
128799
|
-
const isGemini = modelLower.includes("gemini");
|
|
128800
|
-
const fiveHourKeys = isGemini ? GEMINI_5H_KEYS : THIRD_PARTY_5H_KEYS;
|
|
128801
|
-
const weeklyKeys = isGemini ? GEMINI_WEEKLY_KEYS : THIRD_PARTY_WEEKLY_KEYS;
|
|
128802
|
-
const quota = params.quota ?? {};
|
|
128803
|
-
const b5h = findBucket(quota, fiveHourKeys);
|
|
128804
|
-
const bWk = findBucket(quota, weeklyKeys);
|
|
128805
|
-
const used5h = calculateUtilization(b5h?.remaining_fraction);
|
|
128806
|
-
const reset5h = calculateResetTimestamp(nowSec, b5h?.reset_in_seconds);
|
|
128807
|
-
const used7d = calculateUtilization(bWk?.remaining_fraction);
|
|
128808
|
-
const reset7d = calculateResetTimestamp(nowSec, bWk?.reset_in_seconds);
|
|
128809
|
-
let earliestResetSec;
|
|
128810
|
-
if (used5h !== void 0 && reset5h !== void 0) {
|
|
128811
|
-
headers["anthropic-ratelimit-unified-5h-utilization"] = used5h;
|
|
128812
|
-
headers["anthropic-ratelimit-unified-5h-reset"] = reset5h;
|
|
128813
|
-
earliestResetSec = Number(reset5h);
|
|
128814
|
-
}
|
|
128815
|
-
if (used7d !== void 0 && reset7d !== void 0) {
|
|
128816
|
-
headers["anthropic-ratelimit-unified-7d-utilization"] = used7d;
|
|
128817
|
-
headers["anthropic-ratelimit-unified-7d-reset"] = reset7d;
|
|
128818
|
-
const reset7dSec = Number(reset7d);
|
|
128819
|
-
earliestResetSec = earliestResetSec === void 0 ? reset7dSec : Math.min(earliestResetSec, reset7dSec);
|
|
128820
|
-
}
|
|
128821
|
-
if (rejected) {
|
|
128822
|
-
const retrySec = params.retryAfterSeconds ?? DEFAULT_RETRY_AFTER_SECONDS;
|
|
128823
|
-
const fallbackReset = String(nowSec + retrySec);
|
|
128824
|
-
if (headers["anthropic-ratelimit-unified-5h-utilization"] === void 0) {
|
|
128825
|
-
headers["anthropic-ratelimit-unified-5h-utilization"] = EXHAUSTED_PERCENT2;
|
|
128826
|
-
headers["anthropic-ratelimit-unified-5h-reset"] = fallbackReset;
|
|
128827
|
-
}
|
|
128828
|
-
if (headers["anthropic-ratelimit-unified-7d-utilization"] === void 0) {
|
|
128829
|
-
headers["anthropic-ratelimit-unified-7d-utilization"] = EXHAUSTED_PERCENT2;
|
|
128830
|
-
headers["anthropic-ratelimit-unified-7d-reset"] = fallbackReset;
|
|
128831
|
-
}
|
|
128832
|
-
earliestResetSec = earliestResetSec === void 0 ? nowSec + retrySec : Math.min(earliestResetSec, nowSec + retrySec);
|
|
128833
|
-
}
|
|
128834
|
-
if (earliestResetSec !== void 0) {
|
|
128835
|
-
headers["anthropic-ratelimit-unified-reset"] = String(earliestResetSec);
|
|
128836
|
-
}
|
|
128837
|
-
return headers;
|
|
128838
|
-
}
|
|
128839
|
-
|
|
128840
129189
|
// src/antigravity/route.ts
|
|
128841
129190
|
function createAntigravityRoute(ports) {
|
|
128842
|
-
const fallbackId = ports.fallbackId ?? (() => (0,
|
|
129191
|
+
const fallbackId = ports.fallbackId ?? (() => (0, import_node_crypto22.randomUUID)());
|
|
128843
129192
|
return async (request7) => {
|
|
128844
129193
|
await Promise.resolve();
|
|
128845
129194
|
if (request7.method !== "POST") {
|
|
@@ -129240,9 +129589,43 @@ async function scanRequestHead(request7, wholeBody = false) {
|
|
|
129240
129589
|
}
|
|
129241
129590
|
|
|
129242
129591
|
// src/frontdoor/providerRoute.ts
|
|
129592
|
+
var isRcSelfHostPath = (path59) => path59 === "/v1/code/sessions" || path59.startsWith("/v1/code/sessions/") || path59 === "/v1/sessions" || path59.startsWith("/v1/sessions/");
|
|
129593
|
+
function scopeSessionProviderPath(request7) {
|
|
129594
|
+
if (request7.session.provider === void 0) {
|
|
129595
|
+
return request7;
|
|
129596
|
+
}
|
|
129597
|
+
const path59 = new URL(request7.url, "http://127.0.0.1").pathname;
|
|
129598
|
+
if (!path59.startsWith("/v1/") || isRcSelfHostPath(path59)) {
|
|
129599
|
+
return request7;
|
|
129600
|
+
}
|
|
129601
|
+
return { ...request7, url: `${PROVIDER_PATH_PREFIX}${encodeURIComponent(request7.session.provider)}${request7.url}` };
|
|
129602
|
+
}
|
|
129243
129603
|
function createProviderRouteResolver(deps) {
|
|
129244
|
-
const isRcSelfHostPath = (path59) => path59 === "/v1/code/sessions" || path59.startsWith("/v1/code/sessions/") || path59 === "/v1/sessions" || path59.startsWith("/v1/sessions/");
|
|
129245
129604
|
const oauthRoute = createPassthroughRoute("anthropic", { baseUrl: `https://${CONNECT_INTERCEPT_HOST}:${String(HTTPS_PORT)}`, stripPrefix: void 0, headroomUpstream: void 0 });
|
|
129605
|
+
const antigravityQuotaSources = /* @__PURE__ */ new Map();
|
|
129606
|
+
const antigravityQuotaOf = (provider, definition, config2) => {
|
|
129607
|
+
const existing = antigravityQuotaSources.get(provider);
|
|
129608
|
+
if (existing !== void 0) {
|
|
129609
|
+
return existing;
|
|
129610
|
+
}
|
|
129611
|
+
const source = createCachedAntigravityQuotaSource({
|
|
129612
|
+
now: () => Date.now(),
|
|
129613
|
+
fetchSummary: async (nowMs) => {
|
|
129614
|
+
const res = resolveCredential({ credential: definition.credential, env: deps.env, port: deps.credentials, subject: `provider ${provider}` });
|
|
129615
|
+
if (!res.ok) {
|
|
129616
|
+
return void 0;
|
|
129617
|
+
}
|
|
129618
|
+
return fetchAntigravityQuotaSummary({
|
|
129619
|
+
token: res.credential.token,
|
|
129620
|
+
endpoint: config2.cloud.endpoint ?? void 0,
|
|
129621
|
+
projectId: config2.cloud.projectId ?? void 0,
|
|
129622
|
+
nowMs
|
|
129623
|
+
});
|
|
129624
|
+
}
|
|
129625
|
+
});
|
|
129626
|
+
antigravityQuotaSources.set(provider, source);
|
|
129627
|
+
return source;
|
|
129628
|
+
};
|
|
129246
129629
|
const passthroughByTarget = /* @__PURE__ */ new Map();
|
|
129247
129630
|
const passthroughFor = (name, target) => {
|
|
129248
129631
|
const key = `${name}\0${target.baseUrl}\0${target.stripPrefix ?? ""}\0${target.headroomUpstream ?? ""}`;
|
|
@@ -129261,9 +129644,6 @@ function createProviderRouteResolver(deps) {
|
|
|
129261
129644
|
if (deps.rcSelfHostRoute !== void 0 && isRcSelfHostPath(path59)) {
|
|
129262
129645
|
return { ok: true, route: deps.rcSelfHostRoute };
|
|
129263
129646
|
}
|
|
129264
|
-
if (request7.session.provider !== void 0 && path59.startsWith("/v1/") && !isRcSelfHostPath(path59)) {
|
|
129265
|
-
return resolve2({ ...request7, url: `${PROVIDER_PATH_PREFIX}${encodeURIComponent(request7.session.provider)}${request7.url}` });
|
|
129266
|
-
}
|
|
129267
129647
|
return path59.startsWith("/v1/") ? { ok: true, route: oauthRoute } : { ok: false, status: HTTP_STATUS.notFound, message: `no such endpoint: ${path59}` };
|
|
129268
129648
|
}
|
|
129269
129649
|
const { provider } = scoped;
|
|
@@ -129313,7 +129693,8 @@ function createProviderRouteResolver(deps) {
|
|
|
129313
129693
|
token: res.credential.token,
|
|
129314
129694
|
credentialTarget: antigravityProvider.credential.target
|
|
129315
129695
|
};
|
|
129316
|
-
}
|
|
129696
|
+
},
|
|
129697
|
+
quotaSource: antigravityQuotaOf(provider, antigravityProvider, config2)
|
|
129317
129698
|
},
|
|
129318
129699
|
directOrigin2(deps.directPort()),
|
|
129319
129700
|
provider
|
|
@@ -129343,7 +129724,9 @@ function createProviderRouteResolver(deps) {
|
|
|
129343
129724
|
}
|
|
129344
129725
|
});
|
|
129345
129726
|
return async (request7) => {
|
|
129346
|
-
|
|
129727
|
+
const scopedRequest = scopeSessionProviderPath(request7);
|
|
129728
|
+
const serveScoped = (resolution) => scopedRequest === request7 ? resolution : { ok: true, route: servingRewritten(resolution.route, scopedRequest) };
|
|
129729
|
+
let current = scopedRequest;
|
|
129347
129730
|
let replay;
|
|
129348
129731
|
const visited = /* @__PURE__ */ new Set();
|
|
129349
129732
|
for (; ; ) {
|
|
@@ -129365,7 +129748,7 @@ function createProviderRouteResolver(deps) {
|
|
|
129365
129748
|
}
|
|
129366
129749
|
if (routes === void 0 || routes.length === 0) {
|
|
129367
129750
|
const resolution = resolve2(current);
|
|
129368
|
-
return resolution.ok && replay !== void 0 ? { ok: true, route: servingRewritten(resolution.route, { ...replay, url: current.url }) } : resolution;
|
|
129751
|
+
return resolution.ok && replay !== void 0 ? { ok: true, route: servingRewritten(resolution.route, { ...replay, url: current.url }) } : resolution.ok ? serveScoped(resolution) : resolution;
|
|
129369
129752
|
}
|
|
129370
129753
|
const whole = routes.some((entry) => entry.model !== void 0 || referencesFact(entry.when, "request.hasImage"));
|
|
129371
129754
|
const snapshot = deps.usageSnapshotOf?.(current.session.identity);
|
|
@@ -129377,7 +129760,7 @@ function createProviderRouteResolver(deps) {
|
|
|
129377
129760
|
const scan = await scanRequestHead(current, whole);
|
|
129378
129761
|
if (scan.replayed === void 0) {
|
|
129379
129762
|
const resolution = resolve2(current);
|
|
129380
|
-
return resolution.ok && replay !== void 0 ? { ok: true, route: servingRewritten(resolution.route, { ...replay, url: current.url }) } : resolution;
|
|
129763
|
+
return resolution.ok && replay !== void 0 ? { ok: true, route: servingRewritten(resolution.route, { ...replay, url: current.url }) } : resolution.ok ? serveScoped(resolution) : resolution;
|
|
129381
129764
|
}
|
|
129382
129765
|
replay = scan.replayed;
|
|
129383
129766
|
const requestFacts = {
|
|
@@ -129439,7 +129822,7 @@ function attachingProviderCredential(route, deps) {
|
|
|
129439
129822
|
init_realFrontDoorPort();
|
|
129440
129823
|
|
|
129441
129824
|
// src/frontdoor/rcCommands.ts
|
|
129442
|
-
var
|
|
129825
|
+
var import_node_crypto23 = require("node:crypto");
|
|
129443
129826
|
init_commandDeps();
|
|
129444
129827
|
init_cliError();
|
|
129445
129828
|
init_realPorts();
|
|
@@ -129478,15 +129861,15 @@ function readFrontDoorControlMaterial(fsPort, paths, purpose) {
|
|
|
129478
129861
|
|
|
129479
129862
|
// src/frontdoor/rcLiveUsage.ts
|
|
129480
129863
|
var RC_RATE_LIMIT_EVENT_TYPE = "rate_limit_event";
|
|
129481
|
-
function
|
|
129864
|
+
function isRecord11(value2) {
|
|
129482
129865
|
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
129483
129866
|
}
|
|
129484
129867
|
function rcRateLimitInfoOf(event) {
|
|
129485
129868
|
const payload = event.envelope.payload;
|
|
129486
|
-
if (!
|
|
129869
|
+
if (!isRecord11(payload) || payload.type !== RC_RATE_LIMIT_EVENT_TYPE) {
|
|
129487
129870
|
return void 0;
|
|
129488
129871
|
}
|
|
129489
|
-
if (!
|
|
129872
|
+
if (!isRecord11(payload.rate_limit_info)) {
|
|
129490
129873
|
return void 0;
|
|
129491
129874
|
}
|
|
129492
129875
|
const parsed = RcRateLimitInfoSchema.safeParse(payload.rate_limit_info);
|
|
@@ -129522,7 +129905,7 @@ var RC_SELF_HOST_SCOPE_LIST = ["user:profile", "user:inference", "user:sessions:
|
|
|
129522
129905
|
var RC_SELF_HOST_OAUTH_TOKEN_TTL_SECONDS = 3600;
|
|
129523
129906
|
var MS_PER_SECOND10 = 1e3;
|
|
129524
129907
|
var HTTP_SERVICE_UNAVAILABLE = 503;
|
|
129525
|
-
function
|
|
129908
|
+
function isRecord12(value2) {
|
|
129526
129909
|
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
129527
129910
|
}
|
|
129528
129911
|
function parseJsonObject2(body) {
|
|
@@ -129532,7 +129915,7 @@ function parseJsonObject2(body) {
|
|
|
129532
129915
|
} catch {
|
|
129533
129916
|
return void 0;
|
|
129534
129917
|
}
|
|
129535
|
-
return
|
|
129918
|
+
return isRecord12(parsed) ? parsed : void 0;
|
|
129536
129919
|
}
|
|
129537
129920
|
function growthBookFeatures() {
|
|
129538
129921
|
return {
|
|
@@ -129626,7 +130009,7 @@ var RC_SELF_HOST_RECORD_DIR = "rc-selfhost";
|
|
|
129626
130009
|
var RC_SELF_HOST_RECORD_FILE = "credential.json";
|
|
129627
130010
|
var SELF_HOST_EMAIL = "selfhost@agent-shim.invalid";
|
|
129628
130011
|
var SELF_HOST_SUBSCRIPTION_TYPE = "max";
|
|
129629
|
-
function
|
|
130012
|
+
function isRecord13(value2) {
|
|
129630
130013
|
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
129631
130014
|
}
|
|
129632
130015
|
function readJsonObject(fs24, file2) {
|
|
@@ -129640,7 +130023,7 @@ function readJsonObject(fs24, file2) {
|
|
|
129640
130023
|
} catch {
|
|
129641
130024
|
return void 0;
|
|
129642
130025
|
}
|
|
129643
|
-
return
|
|
130026
|
+
return isRecord13(parsed) ? parsed : void 0;
|
|
129644
130027
|
}
|
|
129645
130028
|
function readRcSelfHostRecord(fs24, frontdoorDir) {
|
|
129646
130029
|
const parsed = readJsonObject(fs24, import_node_path49.default.join(frontdoorDir, RC_SELF_HOST_RECORD_DIR, RC_SELF_HOST_RECORD_FILE));
|
|
@@ -129664,7 +130047,7 @@ function mintRcSelfHostCredential(deps) {
|
|
|
129664
130047
|
const recordFile = import_node_path49.default.join(recordDir, RC_SELF_HOST_RECORD_FILE);
|
|
129665
130048
|
const previousRecord = readRcSelfHostRecord(deps.fs, deps.frontdoorDir);
|
|
129666
130049
|
const existingCredentials = readJsonObject(deps.fs, credentialsFile);
|
|
129667
|
-
const existingOauth =
|
|
130050
|
+
const existingOauth = isRecord13(existingCredentials?.claudeAiOauth) ? existingCredentials.claudeAiOauth : void 0;
|
|
129668
130051
|
const existingToken = typeof existingOauth?.accessToken === "string" && existingOauth.accessToken !== "" ? existingOauth.accessToken : void 0;
|
|
129669
130052
|
const existingIsOwn = existingToken !== void 0 && previousRecord?.accessToken === existingToken;
|
|
129670
130053
|
if (existingToken !== void 0 && !existingIsOwn && !deps.force) {
|
|
@@ -129681,7 +130064,7 @@ function mintRcSelfHostCredential(deps) {
|
|
|
129681
130064
|
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)}
|
|
129682
130065
|
`);
|
|
129683
130066
|
const claudeJson = readJsonObject(deps.fs, claudeJsonFile) ?? {};
|
|
129684
|
-
const existingBlock = (value2) =>
|
|
130067
|
+
const existingBlock = (value2) => isRecord13(value2) ? value2 : {};
|
|
129685
130068
|
deps.fs.writeFilePrivate(claudeJsonFile, `${JSON.stringify({
|
|
129686
130069
|
...claudeJson,
|
|
129687
130070
|
oauthAccount: {
|
|
@@ -130046,8 +130429,8 @@ function registerRcCommand(frontdoor, paths) {
|
|
|
130046
130429
|
identitiesDir: paths.identitiesDir,
|
|
130047
130430
|
frontdoorDir: paths.frontdoorDir,
|
|
130048
130431
|
identity,
|
|
130049
|
-
newUuid:
|
|
130050
|
-
randomToken: () => (0,
|
|
130432
|
+
newUuid: import_node_crypto23.randomUUID,
|
|
130433
|
+
randomToken: () => (0, import_node_crypto23.randomBytes)(MINTED_TOKEN_RANDOM_BYTES).toString("base64url"),
|
|
130051
130434
|
force: options.force === true,
|
|
130052
130435
|
now: () => Date.now()
|
|
130053
130436
|
});
|
|
@@ -130068,11 +130451,11 @@ var import_node_path50 = __toESM(require("node:path"), 1);
|
|
|
130068
130451
|
function isSafeSessionId(sessionId) {
|
|
130069
130452
|
return /^[A-Za-z0-9_-]+$/.test(sessionId);
|
|
130070
130453
|
}
|
|
130071
|
-
function
|
|
130454
|
+
function isRecord14(value2) {
|
|
130072
130455
|
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
130073
130456
|
}
|
|
130074
130457
|
function credentialOfJson(parsed) {
|
|
130075
|
-
if (!
|
|
130458
|
+
if (!isRecord14(parsed)) {
|
|
130076
130459
|
return void 0;
|
|
130077
130460
|
}
|
|
130078
130461
|
const { authorization, anthropicVersion, anthropicClientPlatform } = parsed;
|
|
@@ -130102,7 +130485,7 @@ function createRcCredentialStore(fs24, dir) {
|
|
|
130102
130485
|
} catch {
|
|
130103
130486
|
return void 0;
|
|
130104
130487
|
}
|
|
130105
|
-
return
|
|
130488
|
+
return isRecord14(parsed) ? parsed : void 0;
|
|
130106
130489
|
};
|
|
130107
130490
|
return {
|
|
130108
130491
|
read: (sessionId) => {
|
|
@@ -130670,7 +131053,7 @@ init_capability();
|
|
|
130670
131053
|
// src/frontdoor/rcSelfHostEndpoints.ts
|
|
130671
131054
|
var RC_SOURCE_WORKER = "worker";
|
|
130672
131055
|
var RC_SOURCE_CLIENT = "client";
|
|
130673
|
-
function
|
|
131056
|
+
function isRecord15(value2) {
|
|
130674
131057
|
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
130675
131058
|
}
|
|
130676
131059
|
function parseJsonObject3(body) {
|
|
@@ -130680,7 +131063,7 @@ function parseJsonObject3(body) {
|
|
|
130680
131063
|
} catch {
|
|
130681
131064
|
return void 0;
|
|
130682
131065
|
}
|
|
130683
|
-
return
|
|
131066
|
+
return isRecord15(parsed) ? parsed : void 0;
|
|
130684
131067
|
}
|
|
130685
131068
|
function nonEmptyString2(record2, field) {
|
|
130686
131069
|
const value2 = record2 === void 0 ? void 0 : record2[field];
|
|
@@ -130754,7 +131137,7 @@ async function serveRcClientChannels(ctx, tail, method, maxBatchEvents) {
|
|
|
130754
131137
|
}
|
|
130755
131138
|
const results = [];
|
|
130756
131139
|
for (const event of events) {
|
|
130757
|
-
if (!
|
|
131140
|
+
if (!isRecord15(event) || !isRecord15(event.payload)) {
|
|
130758
131141
|
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" } });
|
|
130759
131142
|
return true;
|
|
130760
131143
|
}
|
|
@@ -130854,7 +131237,7 @@ async function serveRcCompatSessions(ctx, pathname, compatPath) {
|
|
|
130854
131237
|
// src/frontdoor/rcSelfHostConversations.ts
|
|
130855
131238
|
var RC_CONVERSATIONS_PATH_PREFIX = "/v1/code/conversations";
|
|
130856
131239
|
var RC_CONVERSATION_ID_PREFIX = "conv_";
|
|
130857
|
-
function
|
|
131240
|
+
function isRecord16(value2) {
|
|
130858
131241
|
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
130859
131242
|
}
|
|
130860
131243
|
function parseJsonObject4(body) {
|
|
@@ -130864,7 +131247,7 @@ function parseJsonObject4(body) {
|
|
|
130864
131247
|
} catch {
|
|
130865
131248
|
return void 0;
|
|
130866
131249
|
}
|
|
130867
|
-
return
|
|
131250
|
+
return isRecord16(parsed) ? parsed : void 0;
|
|
130868
131251
|
}
|
|
130869
131252
|
function nonEmptyString3(record2, field) {
|
|
130870
131253
|
const value2 = record2 === void 0 ? void 0 : record2[field];
|
|
@@ -130918,7 +131301,7 @@ async function serveRcConversations(ctx, pathname, method) {
|
|
|
130918
131301
|
}
|
|
130919
131302
|
const results = [];
|
|
130920
131303
|
for (const event of events) {
|
|
130921
|
-
if (!
|
|
131304
|
+
if (!isRecord16(event) || !isRecord16(event.payload)) {
|
|
130922
131305
|
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" } });
|
|
130923
131306
|
return;
|
|
130924
131307
|
}
|
|
@@ -131211,7 +131594,7 @@ var RC_SELF_HOST_WORKER_EPOCH = 1;
|
|
|
131211
131594
|
var RC_STREAM_EVENT_NAME = "client_event";
|
|
131212
131595
|
var CONFLICT_REASON_HEADER2 = "x-ccr-conflict-reason";
|
|
131213
131596
|
var CONFLICT_REASON_EPOCH_STALE = "epoch_stale";
|
|
131214
|
-
function
|
|
131597
|
+
function isRecord17(value2) {
|
|
131215
131598
|
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
131216
131599
|
}
|
|
131217
131600
|
function isWebSearchRefusal(value2) {
|
|
@@ -131295,7 +131678,7 @@ function parseJsonObject5(body) {
|
|
|
131295
131678
|
} catch {
|
|
131296
131679
|
return void 0;
|
|
131297
131680
|
}
|
|
131298
|
-
return
|
|
131681
|
+
return isRecord17(parsed) ? parsed : void 0;
|
|
131299
131682
|
}
|
|
131300
131683
|
function mintWorkerJwt(randomToken, issuedAt) {
|
|
131301
131684
|
const encode3 = (value2) => Buffer.from(JSON.stringify(value2), "utf8").toString("base64url");
|
|
@@ -131555,7 +131938,7 @@ data: ${JSON.stringify(envelope)}
|
|
|
131555
131938
|
if (status !== void 0) {
|
|
131556
131939
|
session.workerStatus = status;
|
|
131557
131940
|
}
|
|
131558
|
-
if (
|
|
131941
|
+
if (isRecord17(body?.external_metadata)) {
|
|
131559
131942
|
session.externalMetadata = body.external_metadata;
|
|
131560
131943
|
}
|
|
131561
131944
|
await answerJson2(response, HTTP_STATUS.ok, {});
|
|
@@ -131585,7 +131968,7 @@ data: ${JSON.stringify(envelope)}
|
|
|
131585
131968
|
}
|
|
131586
131969
|
const results = [];
|
|
131587
131970
|
for (const event of events) {
|
|
131588
|
-
if (!
|
|
131971
|
+
if (!isRecord17(event) || !isRecord17(event.payload)) {
|
|
131589
131972
|
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" } });
|
|
131590
131973
|
return;
|
|
131591
131974
|
}
|
|
@@ -131618,7 +132001,7 @@ data: ${JSON.stringify(envelope)}
|
|
|
131618
132001
|
return;
|
|
131619
132002
|
}
|
|
131620
132003
|
for (const event of events) {
|
|
131621
|
-
if (
|
|
132004
|
+
if (isRecord17(event)) {
|
|
131622
132005
|
session.internalEvents.push({ eventId: deps.newUuid(), body: event });
|
|
131623
132006
|
}
|
|
131624
132007
|
}
|
|
@@ -131714,7 +132097,7 @@ data: ${JSON.stringify(envelope)}
|
|
|
131714
132097
|
}
|
|
131715
132098
|
const results = [];
|
|
131716
132099
|
for (const event of events) {
|
|
131717
|
-
if (!
|
|
132100
|
+
if (!isRecord17(event) || !isRecord17(event.payload)) {
|
|
131718
132101
|
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" } });
|
|
131719
132102
|
return;
|
|
131720
132103
|
}
|
|
@@ -131904,7 +132287,7 @@ function createSseParser() {
|
|
|
131904
132287
|
}
|
|
131905
132288
|
};
|
|
131906
132289
|
}
|
|
131907
|
-
function
|
|
132290
|
+
function isRecord18(value2) {
|
|
131908
132291
|
return typeof value2 === "object" && value2 !== null && !Array.isArray(value2);
|
|
131909
132292
|
}
|
|
131910
132293
|
function sequenceNumOf(value2) {
|
|
@@ -131926,7 +132309,7 @@ function parseRcStreamEnvelope(parsed) {
|
|
|
131926
132309
|
} catch {
|
|
131927
132310
|
return void 0;
|
|
131928
132311
|
}
|
|
131929
|
-
if (!
|
|
132312
|
+
if (!isRecord18(data)) {
|
|
131930
132313
|
return void 0;
|
|
131931
132314
|
}
|
|
131932
132315
|
const eventType = data.event_type;
|
|
@@ -132354,8 +132737,8 @@ init_realPorts();
|
|
|
132354
132737
|
init_quotaRefresh();
|
|
132355
132738
|
|
|
132356
132739
|
// src/usage/quotaHttp.ts
|
|
132357
|
-
var realQuotaHttpGet = async (url2, headers, signal) => {
|
|
132358
|
-
const response = await fetch(url2, { method: "GET", headers: { ...headers }, signal });
|
|
132740
|
+
var realQuotaHttpGet = async (url2, headers, signal, options) => {
|
|
132741
|
+
const response = await fetch(url2, { method: options?.method ?? "GET", headers: { ...headers }, ...options?.body === void 0 ? {} : { body: options.body }, signal });
|
|
132359
132742
|
return { status: response.status, text: await response.text() };
|
|
132360
132743
|
};
|
|
132361
132744
|
|
|
@@ -132433,8 +132816,8 @@ function realFrontDoorSupervisorPorts(paths) {
|
|
|
132433
132816
|
};
|
|
132434
132817
|
const rcSelfHostSurface = rcSelfHost ? createRcSelfHostSurface({
|
|
132435
132818
|
now: () => Date.now(),
|
|
132436
|
-
newUuid:
|
|
132437
|
-
randomToken: () => (0,
|
|
132819
|
+
newUuid: import_node_crypto24.randomUUID,
|
|
132820
|
+
randomToken: () => (0, import_node_crypto24.randomBytes)(MINTED_TOKEN_RANDOM_BYTES).toString("base64url"),
|
|
132438
132821
|
credentialRecord: () => readRcSelfHostRecord(realFarmFs, paths.frontdoorDir),
|
|
132439
132822
|
webFetch: realRcWebFetch({ allowPrivate: rcWebFetchAllowsPrivateFromEnv(process.env) }),
|
|
132440
132823
|
log
|
|
@@ -132457,7 +132840,7 @@ function realFrontDoorSupervisorPorts(paths) {
|
|
|
132457
132840
|
saveSequenceNum: rcCredentialStore.writeCursor,
|
|
132458
132841
|
dial: rcSelfHost ? lateRcStreamDial(rcSelfHostDialTarget) : realRcStreamDial(),
|
|
132459
132842
|
fanout: rcFanout,
|
|
132460
|
-
newClientId:
|
|
132843
|
+
newClientId: import_node_crypto24.randomUUID,
|
|
132461
132844
|
backoffMs: RC_STREAM_BACKOFF_MS,
|
|
132462
132845
|
sleep: async (ms2) => {
|
|
132463
132846
|
await new Promise((resolve2) => {
|
|
@@ -132469,7 +132852,7 @@ function realFrontDoorSupervisorPorts(paths) {
|
|
|
132469
132852
|
}
|
|
132470
132853
|
});
|
|
132471
132854
|
const routingSnapshots = /* @__PURE__ */ new Map();
|
|
132472
|
-
const rcControlToken = (0,
|
|
132855
|
+
const rcControlToken = (0, import_node_crypto24.randomUUID)();
|
|
132473
132856
|
const resolveRoute = rcObservingResolver(
|
|
132474
132857
|
createProviderRouteResolver({
|
|
132475
132858
|
fs: realFsPort,
|
|
@@ -132585,9 +132968,9 @@ function realFrontDoorSupervisorPorts(paths) {
|
|
|
132585
132968
|
now: () => Date.now(),
|
|
132586
132969
|
headroomSocket: () => headroomSocketTarget(realFarmFs, realHeadroomSocketTrust, paths),
|
|
132587
132970
|
// The per-generation capability the direct listener demands: held only in this process's memory, so a loopback process that discovers the direct port still cannot use it.
|
|
132588
|
-
hopSecret: (0,
|
|
132971
|
+
hopSecret: (0, import_node_crypto24.randomUUID)(),
|
|
132589
132972
|
headroomDecision,
|
|
132590
|
-
custody: createCredentialCustody(() => (0,
|
|
132973
|
+
custody: createCredentialCustody(() => (0, import_node_crypto24.randomUUID)()),
|
|
132591
132974
|
log
|
|
132592
132975
|
});
|
|
132593
132976
|
const onListenerError = (name) => (error63) => {
|
|
@@ -132610,9 +132993,9 @@ function realFrontDoorSupervisorPorts(paths) {
|
|
|
132610
132993
|
startProviderListener: async (preferredPort) => {
|
|
132611
132994
|
const authority = loadCa();
|
|
132612
132995
|
const rcDial = rcSelfHost ? lateRcEventDial(rcSelfHostDialTarget) : realRcEventDial();
|
|
132613
|
-
const rcInject = async (sessionId, text2) => await injectRcUserMessage({ credentialOf: rcTracker.credentialOf, noteSequenceNums: rcTracker.noteSequenceNums, dial: rcDial, newUuid:
|
|
132996
|
+
const rcInject = async (sessionId, text2) => await injectRcUserMessage({ credentialOf: rcTracker.credentialOf, noteSequenceNums: rcTracker.noteSequenceNums, dial: rcDial, newUuid: import_node_crypto24.randomUUID }, sessionId, text2);
|
|
132614
132997
|
const rcAnswer = async (sessionId, requestId, decision) => await answerRcControlRequest({ credentialOf: rcTracker.credentialOf, pendingOf: (id2) => rcTracker.pendingOf(id2), completePending: rcTracker.completePending, noteSequenceNums: rcTracker.noteSequenceNums, dial: rcDial }, sessionId, requestId, decision);
|
|
132615
|
-
const rcControlRequestDeps = { credentialOf: rcTracker.credentialOf, noteSequenceNums: rcTracker.noteSequenceNums, dial: rcDial, newUuid:
|
|
132998
|
+
const rcControlRequestDeps = { credentialOf: rcTracker.credentialOf, noteSequenceNums: rcTracker.noteSequenceNums, dial: rcDial, newUuid: import_node_crypto24.randomUUID };
|
|
132616
132999
|
const rcInterrupt = async (sessionId) => await interruptRcSession(rcControlRequestDeps, sessionId);
|
|
132617
133000
|
const rcSetModel = async (sessionId, model) => await setRcSessionModel(rcControlRequestDeps, sessionId, model);
|
|
132618
133001
|
const rcSetPermissionMode = async (sessionId, mode) => await setRcSessionPermissionMode(rcControlRequestDeps, sessionId, mode);
|
|
@@ -132711,7 +133094,7 @@ function realFrontDoorSupervisorPorts(paths) {
|
|
|
132711
133094
|
},
|
|
132712
133095
|
startConnectListener: async (preferredPort) => {
|
|
132713
133096
|
const wantedTransparentPort = process.env.AGENT_SHIM_TRANSPARENT_SURFACE === void 0 ? void 0 : Number(process.env.AGENT_SHIM_TRANSPARENT_SURFACE);
|
|
132714
|
-
const transparentCapability = wantedTransparentPort === void 0 || Number.isNaN(wantedTransparentPort) ? void 0 : (0,
|
|
133097
|
+
const transparentCapability = wantedTransparentPort === void 0 || Number.isNaN(wantedTransparentPort) ? void 0 : (0, import_node_crypto24.randomUUID)();
|
|
132715
133098
|
if (transparentCapability !== void 0) {
|
|
132716
133099
|
writeFrontDoorSession(realFarmFs, paths.frontdoorSessionsDir, { pid: process.pid, startedAt: Date.now(), token: transparentCapability });
|
|
132717
133100
|
}
|