quota-axi 0.1.7 → 0.1.8
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/README.md +15 -14
- package/dist/src/providers/grok.d.ts +6 -6
- package/dist/src/providers/grok.js +354 -182
- package/dist/src/providers/grok.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ providers[5]{provider,plan,source,status,refreshedAt}:
|
|
|
40
40
|
codex,plus,cli-rpc,fresh,"2026-03-15T16:41:58.000Z"
|
|
41
41
|
cursor,pro,api,fresh,"2026-03-15T16:41:59.000Z"
|
|
42
42
|
copilot,individual,api,fresh,"2026-03-15T16:42:00.000Z"
|
|
43
|
-
grok,
|
|
43
|
+
grok,unknown,web,fresh,"2026-03-15T16:42:00.000Z"
|
|
44
44
|
windows[13]{provider,id,label,percentRemaining,resetsAt,state}:
|
|
45
45
|
claude,five_hour,session,82,"2026-03-15T21:15:00.000Z",fresh
|
|
46
46
|
claude,seven_day,week,64,"2026-03-19T15:00:00.000Z",fresh
|
|
@@ -258,7 +258,7 @@ Default TOON output includes the same condition in an `advice` block with `provi
|
|
|
258
258
|
| -------------------------------- | ---------------------------------------------------------------------------- |
|
|
259
259
|
| Provider statuses | `fresh`, `stale`, `unavailable`, `auth_required`, `rate_limited`, or `error` |
|
|
260
260
|
| Provider sources | `oauth`, `cli-rpc`, `api`, `web`, `cache`, or `unavailable` |
|
|
261
|
-
| Current provider adapter sources | `oauth`, `cli-rpc`, `api`, `cache`, and `unavailable`
|
|
261
|
+
| Current provider adapter sources | `oauth`, `cli-rpc`, `api`, `web`, `cache`, and `unavailable` |
|
|
262
262
|
| Window kinds | `session`, `weekly`, `monthly`, `model`, `credits`, or `unknown` |
|
|
263
263
|
| Source attempt statuses | `success`, `failed`, or `skipped` |
|
|
264
264
|
|
|
@@ -266,15 +266,15 @@ Source attempts can include `credentialPresent` when a non-secret probe confirms
|
|
|
266
266
|
|
|
267
267
|
### Provider windows
|
|
268
268
|
|
|
269
|
-
| Provider
|
|
270
|
-
|
|
|
271
|
-
| Claude
|
|
272
|
-
| Claude scoped `limits`
|
|
273
|
-
| Codex
|
|
274
|
-
| Cursor
|
|
275
|
-
| GitHub Copilot
|
|
276
|
-
| Grok
|
|
277
|
-
| Grok
|
|
269
|
+
| Provider | Windows and capabilities |
|
|
270
|
+
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
271
|
+
| Claude | Can report `five_hour`, `seven_day`, optional `seven_day_opus`, and optional `extra_usage` windows. |
|
|
272
|
+
| Claude scoped `limits` | When the account's usage response includes a scoped `limits` list, quota-axi surfaces every active window it describes instead, including model-scoped ones (e.g. Fable) as a `model:<slug>` window. |
|
|
273
|
+
| Codex | Can report `five_hour` and `weekly` windows plus optional credit balance data, plus any additional model- or feature-scoped rate limits the account has as `model:<id>:5h` / `model:<id>:7d` windows, and an optional code-review rate limit as `code_review_five_hour` / `code_review_weekly`. |
|
|
274
|
+
| Cursor | Can report `included_usage`, `auto_usage`, `api_usage`, and optional `spend_limit` windows. |
|
|
275
|
+
| GitHub Copilot | Can report quota snapshot windows such as `chat`, `completions`, and `premium_interactions`; when the first-party endpoint exposes entitlement but no numeric quota windows, quota-axi reports a fresh provider state with an empty `windows` list rather than inventing percentages. |
|
|
276
|
+
| Grok | Reports the shared `credits` window, optional product-scoped `product:<slug>` windows, the current-period reset, and optional prepaid credit balance from the consumer Usage-page operation. |
|
|
277
|
+
| Grok proto3 zero | For the exact consumer operation only, an omitted usage float is the official proto3 zero when a valid weekly or monthly current period proves the config is present; quota-axi reports `0` used and `100` remaining rather than deriving usage from money. |
|
|
278
278
|
|
|
279
279
|
### `auth --json` shape
|
|
280
280
|
|
|
@@ -330,9 +330,9 @@ Auth source entries can include `credentialPresent` when a non-secret probe conf
|
|
|
330
330
|
|
|
331
331
|
**Grok**
|
|
332
332
|
|
|
333
|
-
- It selects session-scoped auth instead of API-key entries and
|
|
333
|
+
- It selects session-scoped auth instead of API-key entries and sends a read-only gRPC-web request to Grok's consumer `grok_api_v2.GrokBuildBilling.GetGrokCreditsConfig` operation.
|
|
334
334
|
- Session-scoped Grok auth includes web/session scopes and OIDC records scoped to `auth.x.ai` with `auth_mode` or `authMode` set to `oidc`, including scope keys with `::<client id>` suffixes.
|
|
335
|
-
- It
|
|
335
|
+
- It does not send browser cookies, launch the Grok CLI, refresh credentials, perform OAuth, retain raw response bodies, or derive usage from monetary fields.
|
|
336
336
|
|
|
337
337
|
### Safety guarantees
|
|
338
338
|
|
|
@@ -340,7 +340,7 @@ Auth source entries can include `credentialPresent` when a non-secret probe conf
|
|
|
340
340
|
- The user-initiated `update` command is the only non-provider network surface, and it is not part of quota measurement.
|
|
341
341
|
- It sends credential values only to the first-party provider request they authenticate.
|
|
342
342
|
- It never prints, logs, or caches credential values.
|
|
343
|
-
- It never launches the Claude
|
|
343
|
+
- It never launches the Claude or Grok CLIs, so it cannot spend quota or mutate provider credentials while measuring them.
|
|
344
344
|
|
|
345
345
|
### Cache
|
|
346
346
|
|
|
@@ -353,6 +353,7 @@ Auth source entries can include `credentialPresent` when a non-secret probe conf
|
|
|
353
353
|
| Cached reports | Only fresh provider snapshots with windows are cached. |
|
|
354
354
|
| Fresh provider reports with no windows | Clear any cached snapshot for that provider, so entitlement-only reports do not leave stale quota windows behind. |
|
|
355
355
|
| Reports and details not cached | Failed providers, stale providers, account identity, and source attempts are not cached. |
|
|
356
|
+
| Grok cache provenance | Only snapshots produced by the current `web` consumer operation can be used as Grok stale fallback; legacy `api` billing-proxy snapshots are rejected. |
|
|
356
357
|
|
|
357
358
|
## Development
|
|
358
359
|
|
|
@@ -5,14 +5,14 @@ type GrokCredentials = {
|
|
|
5
5
|
teamId?: string;
|
|
6
6
|
expiresAt?: string;
|
|
7
7
|
};
|
|
8
|
-
|
|
9
|
-
export declare function fetchQuota(_options: ProviderOptions): Promise<ProviderQuota>;
|
|
10
|
-
export declare function inspectAuth(_options: ProviderOptions): Promise<AuthProviderReport>;
|
|
11
|
-
export declare function normalizeGrokBilling(raw: unknown, credentials?: Pick<GrokCredentials, "email" | "teamId">): {
|
|
12
|
-
plan?: string;
|
|
8
|
+
type NormalizedGrokQuota = {
|
|
13
9
|
account?: ProviderQuota["account"];
|
|
14
10
|
windows: QuotaWindow[];
|
|
15
11
|
credits?: ProviderQuota["credits"];
|
|
16
12
|
refreshedAt: string;
|
|
17
|
-
}
|
|
13
|
+
};
|
|
14
|
+
export declare const grokAdapter: ProviderAdapter;
|
|
15
|
+
export declare function fetchQuota(_options: ProviderOptions): Promise<ProviderQuota>;
|
|
16
|
+
export declare function inspectAuth(_options: ProviderOptions): Promise<AuthProviderReport>;
|
|
17
|
+
export declare function normalizeGrokConsumerPayload(payload: Uint8Array, credentials?: Pick<GrokCredentials, "email" | "teamId">): NormalizedGrokQuota;
|
|
18
18
|
export {};
|
|
@@ -1,13 +1,24 @@
|
|
|
1
|
-
import { realpathSync } from "node:fs";
|
|
2
1
|
import { homedir } from "node:os";
|
|
3
|
-
import {
|
|
2
|
+
import { join } from "node:path";
|
|
4
3
|
import { readCachedProvider } from "../cache.js";
|
|
5
4
|
import { readJsonFileResult } from "../lib/fs.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
const BILLING_URL = "https://cli-chat-proxy.grok.com/v1/billing?format=credits";
|
|
5
|
+
import { nowIso, retryAfterToIso } from "../lib/time.js";
|
|
6
|
+
import { failedProvider, sourceNames, staleFromCache, statusFromError, successProvider, } from "./common.js";
|
|
7
|
+
const CONSUMER_QUOTA_URL = "https://grok.com/grok_api_v2.GrokBuildBilling/GetGrokCreditsConfig";
|
|
10
8
|
const API_TIMEOUT_MS = 15_000;
|
|
9
|
+
const RESPONSE_LIMIT_BYTES = 64 * 1024;
|
|
10
|
+
const GRPC_MESSAGE_LIMIT_CHARS = 1_024;
|
|
11
|
+
const EMPTY_GRPC_REQUEST = Uint8Array.from([0, 0, 0, 0, 0]);
|
|
12
|
+
const GROK_SOURCE = "web";
|
|
13
|
+
const PRODUCT_NAMES = {
|
|
14
|
+
0: { id: "unspecified", label: "Other" },
|
|
15
|
+
1: { id: "api", label: "API" },
|
|
16
|
+
2: { id: "grok_build", label: "Grok Build" },
|
|
17
|
+
3: { id: "grok_plugins", label: "Grok Plugins" },
|
|
18
|
+
4: { id: "chat", label: "Chat" },
|
|
19
|
+
5: { id: "imagine", label: "Imagine" },
|
|
20
|
+
6: { id: "voice", label: "Voice" },
|
|
21
|
+
};
|
|
11
22
|
export const grokAdapter = {
|
|
12
23
|
id: "grok",
|
|
13
24
|
label: "Grok",
|
|
@@ -20,15 +31,17 @@ export async function fetchQuota(_options) {
|
|
|
20
31
|
let retryAfter;
|
|
21
32
|
const credentialState = readCredentialState();
|
|
22
33
|
if (credentialState.status === "available") {
|
|
23
|
-
attempts.push({ source:
|
|
34
|
+
attempts.push({ source: GROK_SOURCE, status: "failed" });
|
|
24
35
|
try {
|
|
25
|
-
const quota = await
|
|
26
|
-
attempts[attempts.length - 1] = {
|
|
36
|
+
const quota = await fetchGrokConsumerQuota(credentialState.credentials);
|
|
37
|
+
attempts[attempts.length - 1] = {
|
|
38
|
+
source: GROK_SOURCE,
|
|
39
|
+
status: "success",
|
|
40
|
+
};
|
|
27
41
|
return successProvider({
|
|
28
42
|
provider: "grok",
|
|
29
43
|
label: "Grok",
|
|
30
|
-
source:
|
|
31
|
-
plan: quota.plan,
|
|
44
|
+
source: GROK_SOURCE,
|
|
32
45
|
account: quota.account,
|
|
33
46
|
windows: quota.windows,
|
|
34
47
|
credits: quota.credits,
|
|
@@ -40,7 +53,7 @@ export async function fetchQuota(_options) {
|
|
|
40
53
|
catch (error) {
|
|
41
54
|
finalError = errorMessage(error);
|
|
42
55
|
attempts[attempts.length - 1] = {
|
|
43
|
-
source:
|
|
56
|
+
source: GROK_SOURCE,
|
|
44
57
|
status: "failed",
|
|
45
58
|
error: finalError,
|
|
46
59
|
};
|
|
@@ -57,7 +70,7 @@ export async function fetchQuota(_options) {
|
|
|
57
70
|
finalError = "Grok sign-in required";
|
|
58
71
|
}
|
|
59
72
|
const cached = readCachedProvider("grok");
|
|
60
|
-
if (cached) {
|
|
73
|
+
if (cached?.source === GROK_SOURCE) {
|
|
61
74
|
return staleFromCache(cached, finalError, sourceNames(attempts), attempts);
|
|
62
75
|
}
|
|
63
76
|
return failedProvider({
|
|
@@ -74,70 +87,64 @@ export async function inspectAuth(_options) {
|
|
|
74
87
|
const credentialState = readCredentialState();
|
|
75
88
|
return { provider: "grok", sources: [credentialState.source] };
|
|
76
89
|
}
|
|
77
|
-
export function
|
|
78
|
-
const
|
|
79
|
-
const config =
|
|
90
|
+
export function normalizeGrokConsumerPayload(payload, credentials) {
|
|
91
|
+
const response = scanMessage(payload);
|
|
92
|
+
const config = firstMessage(response, 1);
|
|
80
93
|
if (!config)
|
|
81
|
-
|
|
82
|
-
const currentPeriod =
|
|
83
|
-
const
|
|
94
|
+
throw new ProtocolError();
|
|
95
|
+
const currentPeriod = firstMessage(config, 8);
|
|
96
|
+
const periodType = currentPeriod
|
|
97
|
+
? periodTypeAt(currentPeriod)
|
|
98
|
+
: "unspecified";
|
|
99
|
+
const periodStart = currentPeriod ? timestampAt(currentPeriod, 2) : undefined;
|
|
100
|
+
const resetsAt = currentPeriod ? timestampAt(currentPeriod, 3) : undefined;
|
|
101
|
+
const validCurrentPeriod = (periodType === "weekly" || periodType === "monthly") &&
|
|
102
|
+
periodStart !== undefined &&
|
|
103
|
+
resetsAt !== undefined;
|
|
84
104
|
const windows = [];
|
|
85
|
-
const
|
|
86
|
-
if (
|
|
87
|
-
|
|
105
|
+
const sharedExplicit = floatAt(config, 1);
|
|
106
|
+
if (sharedExplicit !== undefined || validCurrentPeriod) {
|
|
107
|
+
const percentUsed = clampExactPercent(sharedExplicit ?? 0);
|
|
108
|
+
windows.push({
|
|
88
109
|
id: "credits",
|
|
89
110
|
label: "credits",
|
|
90
111
|
kind: "credits",
|
|
91
|
-
percentUsed
|
|
92
|
-
|
|
93
|
-
}));
|
|
94
|
-
}
|
|
95
|
-
const onDemandCap = numberValue(objectValue(config.onDemandCap)?.val);
|
|
96
|
-
const onDemandUsed = numberValue(objectValue(config.onDemandUsed)?.val);
|
|
97
|
-
if (onDemandCap !== undefined && onDemandCap > 0) {
|
|
98
|
-
windows.push({
|
|
99
|
-
id: "on_demand",
|
|
100
|
-
label: "on-demand credits",
|
|
101
|
-
kind: "credits",
|
|
102
|
-
percentUsed: onDemandUsed === undefined
|
|
103
|
-
? undefined
|
|
104
|
-
: clampPercent((onDemandUsed / onDemandCap) * 100),
|
|
105
|
-
percentRemaining: onDemandUsed === undefined
|
|
106
|
-
? undefined
|
|
107
|
-
: percentRemaining(clampPercent((onDemandUsed / onDemandCap) * 100)),
|
|
112
|
+
percentUsed,
|
|
113
|
+
percentRemaining: 100 - percentUsed,
|
|
108
114
|
resetsAt,
|
|
109
115
|
});
|
|
110
116
|
}
|
|
111
|
-
for (const
|
|
112
|
-
const product =
|
|
113
|
-
const
|
|
114
|
-
|
|
115
|
-
if (!productName || usagePercent === undefined)
|
|
117
|
+
for (const productPayload of messagesAt(config, 7)) {
|
|
118
|
+
const product = scanMessage(productPayload);
|
|
119
|
+
const explicit = floatAt(product, 2);
|
|
120
|
+
if (explicit === undefined && !validCurrentPeriod)
|
|
116
121
|
continue;
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
const prepaidBalance = numberValue(objectValue(config.prepaidBalance)?.val);
|
|
126
|
-
if (windows.length === 0 && resetsAt) {
|
|
122
|
+
const productNumber = safeNumber(varintAt(product, 1) ?? 0n);
|
|
123
|
+
if (productNumber === undefined)
|
|
124
|
+
continue;
|
|
125
|
+
const productName = PRODUCT_NAMES[productNumber] ?? {
|
|
126
|
+
id: `unknown_${productNumber}`,
|
|
127
|
+
label: `Product ${productNumber}`,
|
|
128
|
+
};
|
|
129
|
+
const percentUsed = clampExactPercent(explicit ?? 0);
|
|
127
130
|
windows.push({
|
|
128
|
-
id:
|
|
129
|
-
label:
|
|
131
|
+
id: `product:${productName.id}`,
|
|
132
|
+
label: productName.label,
|
|
130
133
|
kind: "credits",
|
|
134
|
+
percentUsed,
|
|
135
|
+
percentRemaining: 100 - percentUsed,
|
|
131
136
|
resetsAt,
|
|
132
137
|
});
|
|
133
138
|
}
|
|
134
139
|
if (windows.length === 0)
|
|
135
|
-
|
|
140
|
+
throw new ProtocolError();
|
|
141
|
+
const prepaid = firstMessage(config, 12);
|
|
142
|
+
const prepaidBalance = prepaid
|
|
143
|
+
? safeNumber(varintAt(prepaid, 1) ?? 0n)
|
|
144
|
+
: undefined;
|
|
145
|
+
if (prepaid && prepaidBalance === undefined)
|
|
146
|
+
throw new ProtocolError();
|
|
136
147
|
return {
|
|
137
|
-
plan: stringValue(config.subscription_tier) ??
|
|
138
|
-
stringValue(config.subscriptionTier) ??
|
|
139
|
-
stringValue(data?.subscription_tier) ??
|
|
140
|
-
stringValue(data?.subscriptionTier),
|
|
141
148
|
account: {
|
|
142
149
|
email: credentials?.email,
|
|
143
150
|
organization: credentials?.teamId,
|
|
@@ -149,115 +156,286 @@ export function normalizeGrokBilling(raw, credentials) {
|
|
|
149
156
|
refreshedAt: nowIso(),
|
|
150
157
|
};
|
|
151
158
|
}
|
|
152
|
-
async function
|
|
159
|
+
async function fetchGrokConsumerQuota(credentials) {
|
|
153
160
|
const controller = new AbortController();
|
|
154
161
|
const timer = setTimeout(() => controller.abort(), API_TIMEOUT_MS);
|
|
155
162
|
try {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
163
|
+
let response;
|
|
164
|
+
try {
|
|
165
|
+
response = await fetch(CONSUMER_QUOTA_URL, {
|
|
166
|
+
method: "POST",
|
|
167
|
+
headers: {
|
|
168
|
+
Authorization: `Bearer ${credentials.key}`,
|
|
169
|
+
Accept: "*/*",
|
|
170
|
+
"Content-Type": "application/grpc-web+proto",
|
|
171
|
+
Origin: "https://grok.com",
|
|
172
|
+
Referer: "https://grok.com/?_s=usage",
|
|
173
|
+
"x-grpc-web": "1",
|
|
174
|
+
"x-user-agent": "connect-es/2.1.1",
|
|
175
|
+
},
|
|
176
|
+
body: EMPTY_GRPC_REQUEST,
|
|
177
|
+
signal: controller.signal,
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
if (isAbortError(error) || controller.signal.aborted)
|
|
182
|
+
throw new TimeoutError();
|
|
183
|
+
throw new SafeGrokError("Grok quota unavailable");
|
|
184
|
+
}
|
|
167
185
|
rejectUnusableUsageResponse(response);
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
186
|
+
throwForGrpcStatus(response.headers.get("grpc-status"), response.headers.get("grpc-message"));
|
|
187
|
+
let bytes;
|
|
188
|
+
try {
|
|
189
|
+
bytes = await readBoundedBody(response);
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
if (error instanceof SafeGrokError)
|
|
193
|
+
throw error;
|
|
194
|
+
if (isAbortError(error) || controller.signal.aborted)
|
|
195
|
+
throw new TimeoutError();
|
|
196
|
+
throw new SafeGrokError("Grok quota unavailable");
|
|
197
|
+
}
|
|
198
|
+
const payload = decodeGrpcWebPayload(bytes);
|
|
199
|
+
return normalizeGrokConsumerPayload(payload, credentials);
|
|
172
200
|
}
|
|
173
201
|
finally {
|
|
174
202
|
clearTimeout(timer);
|
|
175
203
|
}
|
|
176
204
|
}
|
|
177
|
-
async function
|
|
178
|
-
const
|
|
179
|
-
if (
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
if (!executable)
|
|
183
|
-
return undefined;
|
|
184
|
-
const realpath = realpathBestEffort(executable);
|
|
185
|
-
return (extractGrokVersionFromPath(realpath) ?? readPackageVersionNear(realpath));
|
|
186
|
-
}
|
|
187
|
-
function readGrokHomeClientVersion() {
|
|
188
|
-
const versionJson = readJsonFileResult(join(grokHomeDir(), "version.json"));
|
|
189
|
-
if (versionJson.status !== "success")
|
|
190
|
-
return undefined;
|
|
191
|
-
return versionFromJson(versionJson.value);
|
|
192
|
-
}
|
|
193
|
-
function versionFromJson(value) {
|
|
194
|
-
const direct = stringValue(value);
|
|
195
|
-
if (direct)
|
|
196
|
-
return extractVersion(direct);
|
|
197
|
-
const data = objectValue(value);
|
|
198
|
-
if (!data)
|
|
199
|
-
return undefined;
|
|
200
|
-
for (const key of [
|
|
201
|
-
"version",
|
|
202
|
-
"clientVersion",
|
|
203
|
-
"client_version",
|
|
204
|
-
"currentVersion",
|
|
205
|
-
"current_version",
|
|
206
|
-
]) {
|
|
207
|
-
const version = extractVersion(stringValue(data[key]));
|
|
208
|
-
if (version)
|
|
209
|
-
return version;
|
|
205
|
+
async function readBoundedBody(response) {
|
|
206
|
+
const contentLength = response.headers.get("content-length");
|
|
207
|
+
if (contentLength && /^\d+$/.test(contentLength)) {
|
|
208
|
+
if (BigInt(contentLength) > BigInt(RESPONSE_LIMIT_BYTES))
|
|
209
|
+
throw new ResponseTooLargeError();
|
|
210
210
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
211
|
+
if (!response.body)
|
|
212
|
+
return new Uint8Array();
|
|
213
|
+
const reader = response.body.getReader();
|
|
214
|
+
const chunks = [];
|
|
215
|
+
let length = 0;
|
|
216
|
+
try {
|
|
217
|
+
while (true) {
|
|
218
|
+
const { done, value } = await reader.read();
|
|
219
|
+
if (done)
|
|
220
|
+
break;
|
|
221
|
+
length += value.length;
|
|
222
|
+
if (length > RESPONSE_LIMIT_BYTES) {
|
|
223
|
+
await reader.cancel().catch(() => undefined);
|
|
224
|
+
throw new ResponseTooLargeError();
|
|
225
|
+
}
|
|
226
|
+
chunks.push(value);
|
|
227
227
|
}
|
|
228
228
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
229
|
+
finally {
|
|
230
|
+
reader.releaseLock();
|
|
231
|
+
}
|
|
232
|
+
const bytes = new Uint8Array(length);
|
|
233
|
+
let offset = 0;
|
|
234
|
+
for (const chunk of chunks) {
|
|
235
|
+
bytes.set(chunk, offset);
|
|
236
|
+
offset += chunk.length;
|
|
237
|
+
}
|
|
238
|
+
return bytes;
|
|
239
|
+
}
|
|
240
|
+
function decodeGrpcWebPayload(bytes) {
|
|
241
|
+
if (bytes.length === 0)
|
|
242
|
+
throw new ProtocolError();
|
|
243
|
+
if (!looksFramed(bytes[0]))
|
|
244
|
+
return bytes;
|
|
245
|
+
const dataFrames = [];
|
|
246
|
+
let trailerSeen = false;
|
|
247
|
+
let index = 0;
|
|
248
|
+
while (index < bytes.length) {
|
|
249
|
+
if (index + 5 > bytes.length)
|
|
250
|
+
throw new ProtocolError();
|
|
251
|
+
const flags = bytes[index];
|
|
252
|
+
if ((flags & 0x01) !== 0)
|
|
253
|
+
throw new ProtocolError();
|
|
254
|
+
if (flags !== 0 && flags !== 0x80)
|
|
255
|
+
throw new ProtocolError();
|
|
256
|
+
const length = new DataView(bytes.buffer, bytes.byteOffset + index + 1, 4).getUint32(0);
|
|
257
|
+
if (length > RESPONSE_LIMIT_BYTES)
|
|
258
|
+
throw new ProtocolError();
|
|
259
|
+
const start = index + 5;
|
|
260
|
+
const end = start + length;
|
|
261
|
+
if (!Number.isSafeInteger(end) || end > bytes.length)
|
|
262
|
+
throw new ProtocolError();
|
|
263
|
+
const frame = bytes.slice(start, end);
|
|
264
|
+
if (flags === 0x80) {
|
|
265
|
+
if (trailerSeen)
|
|
266
|
+
throw new ProtocolError();
|
|
267
|
+
trailerSeen = true;
|
|
268
|
+
const trailers = parseTrailerFields(frame);
|
|
269
|
+
throwForGrpcStatus(trailers.get("grpc-status") ?? null, trailers.get("grpc-message") ?? null);
|
|
240
270
|
}
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
271
|
+
else {
|
|
272
|
+
if (trailerSeen || dataFrames.length > 0)
|
|
273
|
+
throw new ProtocolError();
|
|
274
|
+
dataFrames.push(frame);
|
|
275
|
+
}
|
|
276
|
+
index = end;
|
|
245
277
|
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
278
|
+
if (dataFrames.length !== 1)
|
|
279
|
+
throw new ProtocolError();
|
|
280
|
+
return dataFrames[0];
|
|
281
|
+
}
|
|
282
|
+
function looksFramed(firstByte) {
|
|
283
|
+
return firstByte === 0 || firstByte === 1 || (firstByte & 0x80) !== 0;
|
|
284
|
+
}
|
|
285
|
+
function parseTrailerFields(bytes) {
|
|
286
|
+
const trailers = new Map();
|
|
287
|
+
const text = new TextDecoder().decode(bytes);
|
|
288
|
+
for (const line of text.split(/\r?\n/)) {
|
|
289
|
+
const separator = line.indexOf(":");
|
|
290
|
+
if (separator <= 0)
|
|
291
|
+
continue;
|
|
292
|
+
trailers.set(line.slice(0, separator).trim().toLowerCase(), line.slice(separator + 1).trim());
|
|
293
|
+
}
|
|
294
|
+
return trailers;
|
|
295
|
+
}
|
|
296
|
+
function throwForGrpcStatus(value, message = null) {
|
|
297
|
+
if (value === null)
|
|
298
|
+
return;
|
|
299
|
+
if (!/^(?:[0-9]|1[0-6])$/.test(value))
|
|
300
|
+
throw new ProtocolError();
|
|
301
|
+
const status = Number(value);
|
|
302
|
+
if (status === 0)
|
|
303
|
+
return;
|
|
304
|
+
if (status === 16)
|
|
305
|
+
throw new SafeGrokError("Grok sign-in required");
|
|
306
|
+
if (status === 7 && grpcMessageIndicatesAuthFailure(message))
|
|
307
|
+
throw new SafeGrokError("Grok sign-in required");
|
|
308
|
+
if (status === 8)
|
|
309
|
+
throw new RateLimitError();
|
|
310
|
+
throw new SafeGrokError("Grok quota unavailable");
|
|
311
|
+
}
|
|
312
|
+
function grpcMessageIndicatesAuthFailure(value) {
|
|
313
|
+
if (!value || value.length > GRPC_MESSAGE_LIMIT_CHARS)
|
|
314
|
+
return false;
|
|
315
|
+
let message;
|
|
255
316
|
try {
|
|
256
|
-
|
|
317
|
+
message = decodeURIComponent(value);
|
|
257
318
|
}
|
|
258
319
|
catch {
|
|
259
|
-
return
|
|
320
|
+
return false;
|
|
260
321
|
}
|
|
322
|
+
if (message.length > GRPC_MESSAGE_LIMIT_CHARS)
|
|
323
|
+
return false;
|
|
324
|
+
return (/\b(?:unauthenticated|authentication required|sign[ -]?in required)\b/i.test(message) ||
|
|
325
|
+
/\bbad[ -]credentials\b/i.test(message) ||
|
|
326
|
+
/\b(?:oauth2|access token)\b[\s\S]{0,128}\bcould not be validated\b/i.test(message) ||
|
|
327
|
+
/\b(?:invalid|expired|missing|revoked)\s+(?:(?:oauth|access|auth(?:entication)?|bearer)\s+)*(?:token|credentials?|jwt)\b/i.test(message) ||
|
|
328
|
+
/\b(?:token|credentials?|jwt)\s+(?:is |are )?(?:invalid|expired|missing|revoked)\b/i.test(message));
|
|
329
|
+
}
|
|
330
|
+
function scanMessage(bytes) {
|
|
331
|
+
const fields = [];
|
|
332
|
+
let index = 0;
|
|
333
|
+
while (index < bytes.length) {
|
|
334
|
+
const key = readVarint(bytes, index);
|
|
335
|
+
index = key.index;
|
|
336
|
+
const fieldValue = key.value >> 3n;
|
|
337
|
+
if (fieldValue <= 0n || fieldValue > 0x1fffffffn)
|
|
338
|
+
throw new ProtocolError();
|
|
339
|
+
const field = Number(fieldValue);
|
|
340
|
+
const wire = Number(key.value & 7n);
|
|
341
|
+
if (wire === 0) {
|
|
342
|
+
const scalar = readVarint(bytes, index);
|
|
343
|
+
fields.push({ field, wire, value: scalar.value });
|
|
344
|
+
index = scalar.index;
|
|
345
|
+
continue;
|
|
346
|
+
}
|
|
347
|
+
if (wire === 1 || wire === 5) {
|
|
348
|
+
const length = wire === 1 ? 8 : 4;
|
|
349
|
+
if (index + length > bytes.length)
|
|
350
|
+
throw new ProtocolError();
|
|
351
|
+
fields.push({
|
|
352
|
+
field,
|
|
353
|
+
wire,
|
|
354
|
+
value: bytes.slice(index, index + length),
|
|
355
|
+
});
|
|
356
|
+
index += length;
|
|
357
|
+
continue;
|
|
358
|
+
}
|
|
359
|
+
if (wire === 2) {
|
|
360
|
+
const lengthValue = readVarint(bytes, index);
|
|
361
|
+
index = lengthValue.index;
|
|
362
|
+
if (lengthValue.value > BigInt(RESPONSE_LIMIT_BYTES))
|
|
363
|
+
throw new ProtocolError();
|
|
364
|
+
const length = Number(lengthValue.value);
|
|
365
|
+
const end = index + length;
|
|
366
|
+
if (!Number.isSafeInteger(end) || end > bytes.length)
|
|
367
|
+
throw new ProtocolError();
|
|
368
|
+
fields.push({ field, wire, value: bytes.slice(index, end) });
|
|
369
|
+
index = end;
|
|
370
|
+
continue;
|
|
371
|
+
}
|
|
372
|
+
throw new ProtocolError();
|
|
373
|
+
}
|
|
374
|
+
return fields;
|
|
375
|
+
}
|
|
376
|
+
function readVarint(bytes, start) {
|
|
377
|
+
let value = 0n;
|
|
378
|
+
let index = start;
|
|
379
|
+
for (let count = 0; count < 10 && index < bytes.length; count += 1) {
|
|
380
|
+
const byte = bytes[index];
|
|
381
|
+
index += 1;
|
|
382
|
+
if (count === 9 && byte > 1)
|
|
383
|
+
throw new ProtocolError();
|
|
384
|
+
value |= BigInt(byte & 0x7f) << BigInt(count * 7);
|
|
385
|
+
if ((byte & 0x80) === 0)
|
|
386
|
+
return { value, index };
|
|
387
|
+
}
|
|
388
|
+
throw new ProtocolError();
|
|
389
|
+
}
|
|
390
|
+
function messagesAt(fields, field) {
|
|
391
|
+
return fields
|
|
392
|
+
.filter((entry) => entry.field === field && entry.wire === 2)
|
|
393
|
+
.map((entry) => entry.value);
|
|
394
|
+
}
|
|
395
|
+
function firstMessage(fields, field) {
|
|
396
|
+
const bytes = messagesAt(fields, field)[0];
|
|
397
|
+
return bytes ? scanMessage(bytes) : undefined;
|
|
398
|
+
}
|
|
399
|
+
function varintAt(fields, field) {
|
|
400
|
+
return fields.find((entry) => entry.field === field && entry.wire === 0)?.value;
|
|
401
|
+
}
|
|
402
|
+
function floatAt(fields, field) {
|
|
403
|
+
const found = fields.find((entry) => entry.field === field && entry.wire === 5);
|
|
404
|
+
if (!found)
|
|
405
|
+
return undefined;
|
|
406
|
+
const value = new DataView(found.value.buffer, found.value.byteOffset, 4).getFloat32(0, true);
|
|
407
|
+
if (!Number.isFinite(value))
|
|
408
|
+
throw new ProtocolError();
|
|
409
|
+
return value;
|
|
410
|
+
}
|
|
411
|
+
function timestampAt(fields, field) {
|
|
412
|
+
const timestamp = firstMessage(fields, field);
|
|
413
|
+
if (!timestamp)
|
|
414
|
+
return undefined;
|
|
415
|
+
const seconds = safeNumber(varintAt(timestamp, 1));
|
|
416
|
+
if (seconds === undefined)
|
|
417
|
+
return undefined;
|
|
418
|
+
const milliseconds = seconds * 1_000;
|
|
419
|
+
if (!Number.isSafeInteger(milliseconds))
|
|
420
|
+
return undefined;
|
|
421
|
+
const date = new Date(milliseconds);
|
|
422
|
+
return Number.isNaN(date.getTime()) ? undefined : date.toISOString();
|
|
423
|
+
}
|
|
424
|
+
function periodTypeAt(period) {
|
|
425
|
+
const value = varintAt(period, 1);
|
|
426
|
+
if (value === 2n)
|
|
427
|
+
return "weekly";
|
|
428
|
+
if (value === 1n)
|
|
429
|
+
return "monthly";
|
|
430
|
+
return "unspecified";
|
|
431
|
+
}
|
|
432
|
+
function safeNumber(value) {
|
|
433
|
+
if (value === undefined || value > BigInt(Number.MAX_SAFE_INTEGER))
|
|
434
|
+
return undefined;
|
|
435
|
+
return Number(value);
|
|
436
|
+
}
|
|
437
|
+
function clampExactPercent(value) {
|
|
438
|
+
return Math.min(100, Math.max(0, value));
|
|
261
439
|
}
|
|
262
440
|
function readCredentialState() {
|
|
263
441
|
const explicitAuthFile = stringValue(process.env.GROK_AUTH_JSON);
|
|
@@ -342,13 +520,13 @@ function grokHomeDir() {
|
|
|
342
520
|
}
|
|
343
521
|
function rejectUnusableUsageResponse(response) {
|
|
344
522
|
if (response.status === 401 || response.status === 403) {
|
|
345
|
-
throw new
|
|
523
|
+
throw new SafeGrokError("Grok sign-in required");
|
|
346
524
|
}
|
|
347
525
|
if (response.status === 429) {
|
|
348
526
|
throw new RateLimitError(retryAfterToIso(response.headers.get("retry-after")));
|
|
349
527
|
}
|
|
350
528
|
if (!response.ok)
|
|
351
|
-
throw new
|
|
529
|
+
throw new SafeGrokError("Grok quota unavailable");
|
|
352
530
|
}
|
|
353
531
|
function isExpired(value) {
|
|
354
532
|
if (!value)
|
|
@@ -444,46 +622,40 @@ function parseScope(value) {
|
|
|
444
622
|
function normalizeCredentialScope(value) {
|
|
445
623
|
return value.replace(/::[^/]*$/, "");
|
|
446
624
|
}
|
|
447
|
-
function parseIso(value) {
|
|
448
|
-
if (typeof value !== "string" || value.trim() === "")
|
|
449
|
-
return undefined;
|
|
450
|
-
const date = new Date(value);
|
|
451
|
-
return Number.isNaN(date.getTime()) ? undefined : date.toISOString();
|
|
452
|
-
}
|
|
453
625
|
function objectValue(value) {
|
|
454
626
|
return value && typeof value === "object"
|
|
455
627
|
? value
|
|
456
628
|
: undefined;
|
|
457
629
|
}
|
|
458
|
-
function arrayValue(value) {
|
|
459
|
-
return Array.isArray(value) ? value : [];
|
|
460
|
-
}
|
|
461
630
|
function stringValue(value) {
|
|
462
631
|
return typeof value === "string" && value.length > 0 ? value : undefined;
|
|
463
632
|
}
|
|
464
|
-
function
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
633
|
+
function isAbortError(error) {
|
|
634
|
+
return error instanceof Error && error.name === "AbortError";
|
|
635
|
+
}
|
|
636
|
+
function errorMessage(error) {
|
|
637
|
+
return error instanceof SafeGrokError
|
|
638
|
+
? error.message
|
|
639
|
+
: "Grok quota unavailable";
|
|
640
|
+
}
|
|
641
|
+
class SafeGrokError extends Error {
|
|
642
|
+
}
|
|
643
|
+
class ProtocolError extends SafeGrokError {
|
|
644
|
+
constructor() {
|
|
645
|
+
super("Grok quota response invalid");
|
|
471
646
|
}
|
|
472
|
-
return undefined;
|
|
473
647
|
}
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
.replace(/[^a-z0-9]+/g, "_")
|
|
479
|
-
.replace(/^_+|_+$/g, "");
|
|
648
|
+
class ResponseTooLargeError extends SafeGrokError {
|
|
649
|
+
constructor() {
|
|
650
|
+
super("Grok quota response too large");
|
|
651
|
+
}
|
|
480
652
|
}
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
653
|
+
class TimeoutError extends SafeGrokError {
|
|
654
|
+
constructor() {
|
|
655
|
+
super("Grok quota request timed out");
|
|
656
|
+
}
|
|
485
657
|
}
|
|
486
|
-
class RateLimitError extends
|
|
658
|
+
class RateLimitError extends SafeGrokError {
|
|
487
659
|
retryAfter;
|
|
488
660
|
constructor(retryAfter) {
|
|
489
661
|
super("Grok quota endpoint rate limited");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grok.js","sourceRoot":"","sources":["../../../src/providers/grok.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"grok.js","sourceRoot":"","sources":["../../../src/providers/grok.ts"],"names":[],"mappings":"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"}
|