@metyatech/ai-quota 0.9.3 → 1.0.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/README.md +19 -57
- package/dist/claude.d.ts +1 -1
- package/dist/claude.d.ts.map +1 -1
- package/dist/claude.js +42 -16
- package/dist/claude.js.map +1 -1
- package/dist/cli.js +13 -38
- package/dist/cli.js.map +1 -1
- package/dist/codex.d.ts +4 -12
- package/dist/codex.d.ts.map +1 -1
- package/dist/codex.js +92 -177
- package/dist/codex.js.map +1 -1
- package/dist/copilot.d.ts.map +1 -1
- package/dist/copilot.js +16 -4
- package/dist/copilot.js.map +1 -1
- package/dist/errors.d.ts +11 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +21 -0
- package/dist/errors.js.map +1 -0
- package/dist/gemini.d.ts +2 -9
- package/dist/gemini.d.ts.map +1 -1
- package/dist/gemini.js +130 -94
- package/dist/gemini.js.map +1 -1
- package/dist/human-output.d.ts +16 -0
- package/dist/human-output.d.ts.map +1 -0
- package/dist/human-output.js +247 -0
- package/dist/human-output.js.map +1 -0
- package/dist/index.d.ts +2 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +61 -39
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +1 -1
- package/dist/mcp.js.map +1 -1
- package/dist/types.d.ts +1 -17
- package/dist/types.d.ts.map +1 -1
- package/package.json +4 -4
- package/dist/amazon-q.d.ts +0 -63
- package/dist/amazon-q.d.ts.map +0 -1
- package/dist/amazon-q.js +0 -114
- package/dist/amazon-q.js.map +0 -1
package/dist/gemini.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import os from "node:os";
|
|
4
|
+
import { QuotaFetchError } from "./errors.js";
|
|
4
5
|
const ENV_GEMINI_OAUTH_CLIENT_ID = "AGENT_RUNNER_GEMINI_OAUTH_CLIENT_ID";
|
|
5
6
|
const ENV_GEMINI_OAUTH_CLIENT_SECRET = "AGENT_RUNNER_GEMINI_OAUTH_CLIENT_SECRET";
|
|
6
7
|
let cachedGeminiOauthClientInfo = null;
|
|
@@ -78,61 +79,95 @@ function getGeminiOauthClientInfo() {
|
|
|
78
79
|
readGeminiOauthClientInfoFromEnv() ?? tryReadGeminiCliOauthClientInfoFromWellKnownPaths();
|
|
79
80
|
return cachedGeminiOauthClientInfo;
|
|
80
81
|
}
|
|
82
|
+
async function fetchWithTimeout(url, init, timeoutMs) {
|
|
83
|
+
const controller = new AbortController();
|
|
84
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
85
|
+
try {
|
|
86
|
+
return await fetch(url, { ...init, signal: controller.signal });
|
|
87
|
+
}
|
|
88
|
+
catch (e) {
|
|
89
|
+
if (e instanceof Error && e.name === "AbortError") {
|
|
90
|
+
throw new QuotaFetchError("timeout", `Gemini request timed out: ${url}`, { cause: e });
|
|
91
|
+
}
|
|
92
|
+
throw new QuotaFetchError("network_error", `Gemini request failed: ${url}`, { cause: e });
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
clearTimeout(timer);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
81
98
|
async function refreshAccessToken(options) {
|
|
82
99
|
const params = new URLSearchParams();
|
|
83
100
|
params.set("client_id", options.clientId);
|
|
84
101
|
params.set("client_secret", options.clientSecret);
|
|
85
102
|
params.set("refresh_token", options.refreshToken);
|
|
86
103
|
params.set("grant_type", "refresh_token");
|
|
87
|
-
const res = await
|
|
104
|
+
const res = await fetchWithTimeout("https://oauth2.googleapis.com/token", {
|
|
88
105
|
method: "POST",
|
|
89
106
|
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
90
107
|
body: params.toString()
|
|
91
|
-
});
|
|
108
|
+
}, options.timeoutMs);
|
|
109
|
+
const text = await res.text();
|
|
92
110
|
if (!res.ok) {
|
|
93
|
-
|
|
111
|
+
const reason = res.status === 400 || res.status === 401 || res.status === 403 ? "auth_failed" : "api_error";
|
|
112
|
+
throw new QuotaFetchError(reason, `Failed to refresh Google access token (${res.status}).`, {
|
|
113
|
+
httpStatus: res.status
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
let data;
|
|
117
|
+
try {
|
|
118
|
+
data = (text.trim() ? JSON.parse(text) : {});
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
throw new QuotaFetchError("parse_error", "Google token refresh response was not valid JSON.", { cause: e });
|
|
94
122
|
}
|
|
95
|
-
const data = (await res.json());
|
|
96
123
|
if (typeof data?.access_token !== "string" || data.access_token.length === 0) {
|
|
97
|
-
throw new
|
|
124
|
+
throw new QuotaFetchError("parse_error", "Google token refresh response missing access_token.");
|
|
98
125
|
}
|
|
99
126
|
const expiryDate = typeof data?.expires_in === "number"
|
|
100
127
|
? Date.now() + Math.max(0, data.expires_in) * 1000
|
|
101
128
|
: undefined;
|
|
102
129
|
return { accessToken: data.access_token, expiryDate };
|
|
103
130
|
}
|
|
104
|
-
async function getCredentials() {
|
|
131
|
+
async function getCredentials(timeoutMs) {
|
|
105
132
|
const credsPath = path.join(os.homedir(), ".gemini", "oauth_creds.json");
|
|
106
133
|
if (!fs.existsSync(credsPath)) {
|
|
107
|
-
throw new
|
|
134
|
+
throw new QuotaFetchError("no_credentials", `Gemini OAuth credentials not found at ${credsPath}`);
|
|
135
|
+
}
|
|
136
|
+
let creds;
|
|
137
|
+
try {
|
|
138
|
+
creds = JSON.parse(fs.readFileSync(credsPath, "utf8"));
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
throw new QuotaFetchError("parse_error", `Failed to parse Gemini OAuth credentials at ${credsPath}`, {
|
|
142
|
+
cause: e
|
|
143
|
+
});
|
|
108
144
|
}
|
|
109
|
-
const raw = fs.readFileSync(credsPath, "utf8");
|
|
110
|
-
const creds = JSON.parse(raw);
|
|
111
|
-
let accessToken = creds.access_token;
|
|
112
145
|
const now = Date.now();
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
146
|
+
let accessToken = creds.access_token;
|
|
147
|
+
const expired = typeof creds.expiry_date === "number" && Number.isFinite(creds.expiry_date)
|
|
148
|
+
? creds.expiry_date < now + 300000
|
|
149
|
+
: false;
|
|
150
|
+
if (typeof accessToken !== "string" || accessToken.length === 0 || expired) {
|
|
151
|
+
if (typeof creds.refresh_token === "string" && creds.refresh_token.length > 0) {
|
|
116
152
|
const discovered = getGeminiOauthClientInfo();
|
|
117
153
|
const clientId = getClientIdFromIdToken(creds.id_token) ??
|
|
118
154
|
discovered?.clientId ??
|
|
119
|
-
(typeof creds.client_id === "string" && creds.client_id.length > 0
|
|
120
|
-
? creds.client_id
|
|
121
|
-
: undefined);
|
|
155
|
+
(typeof creds.client_id === "string" && creds.client_id.length > 0 ? creds.client_id : undefined);
|
|
122
156
|
const clientSecret = discovered?.clientSecret ??
|
|
123
157
|
(typeof creds.client_secret === "string" && creds.client_secret.length > 0
|
|
124
158
|
? creds.client_secret
|
|
125
159
|
: undefined);
|
|
126
160
|
if (!clientId) {
|
|
127
|
-
throw new
|
|
161
|
+
throw new QuotaFetchError("no_credentials", `Gemini OAuth refresh requires a client ID; set ${ENV_GEMINI_OAUTH_CLIENT_ID} or install Gemini CLI.`);
|
|
128
162
|
}
|
|
129
163
|
if (!clientSecret) {
|
|
130
|
-
throw new
|
|
164
|
+
throw new QuotaFetchError("no_credentials", `Gemini OAuth refresh requires a client secret; set ${ENV_GEMINI_OAUTH_CLIENT_SECRET} or install Gemini CLI.`);
|
|
131
165
|
}
|
|
132
166
|
const refreshed = await refreshAccessToken({
|
|
133
167
|
refreshToken: creds.refresh_token,
|
|
134
168
|
clientId,
|
|
135
|
-
clientSecret
|
|
169
|
+
clientSecret,
|
|
170
|
+
timeoutMs
|
|
136
171
|
});
|
|
137
172
|
accessToken = refreshed.accessToken;
|
|
138
173
|
try {
|
|
@@ -147,92 +182,93 @@ async function getCredentials() {
|
|
|
147
182
|
}
|
|
148
183
|
}
|
|
149
184
|
else {
|
|
150
|
-
throw new
|
|
185
|
+
throw new QuotaFetchError("token_expired", "Gemini access token expired and no refresh token available.");
|
|
151
186
|
}
|
|
152
187
|
}
|
|
153
188
|
return { accessToken: accessToken };
|
|
154
189
|
}
|
|
190
|
+
function reasonFromHttpStatus(status) {
|
|
191
|
+
if (status === 401 || status === 403)
|
|
192
|
+
return "auth_failed";
|
|
193
|
+
if (status === 404 || status === 410)
|
|
194
|
+
return "endpoint_changed";
|
|
195
|
+
return "api_error";
|
|
196
|
+
}
|
|
155
197
|
/**
|
|
156
198
|
* Fetches Gemini quota usage from the Cloud Code Assist API.
|
|
157
199
|
*
|
|
158
|
-
*
|
|
159
|
-
* 1. Reads credentials from `~/.gemini/oauth_creds.json`.
|
|
160
|
-
* 2. Automatically refreshes the access token if it's missing or expired.
|
|
161
|
-
* 3. Calls the `loadCodeAssist` API to identify the active project.
|
|
162
|
-
* 4. Calls the `retrieveUserQuota` API to get the actual usage metrics.
|
|
163
|
-
*
|
|
164
|
-
* @returns A promise resolving to GeminiUsage or null if the process fails.
|
|
165
|
-
* The returned object contains per-model usage data for Pro and Flash models.
|
|
200
|
+
* @param timeoutMs - Per-request timeout in milliseconds (default: 10000ms)
|
|
166
201
|
*/
|
|
167
|
-
export async function fetchGeminiRateLimits() {
|
|
202
|
+
export async function fetchGeminiRateLimits(timeoutMs = 10000) {
|
|
203
|
+
const { accessToken } = await getCredentials(timeoutMs);
|
|
204
|
+
const loadRes = await fetchWithTimeout("https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist", {
|
|
205
|
+
method: "POST",
|
|
206
|
+
headers: {
|
|
207
|
+
Authorization: `Bearer ${accessToken}`,
|
|
208
|
+
"Content-Type": "application/json",
|
|
209
|
+
"User-Agent": "ai-quota"
|
|
210
|
+
},
|
|
211
|
+
body: JSON.stringify({
|
|
212
|
+
metadata: {
|
|
213
|
+
ideType: "GEMINI_CLI",
|
|
214
|
+
platform: process.platform === "win32" ? "WINDOWS_AMD64" : "LINUX_AMD64"
|
|
215
|
+
}
|
|
216
|
+
})
|
|
217
|
+
}, timeoutMs);
|
|
218
|
+
const loadText = await loadRes.text();
|
|
219
|
+
if (!loadRes.ok) {
|
|
220
|
+
throw new QuotaFetchError(reasonFromHttpStatus(loadRes.status), `loadCodeAssist failed (${loadRes.status} ${loadRes.statusText}).`, { httpStatus: loadRes.status });
|
|
221
|
+
}
|
|
222
|
+
let loadData;
|
|
168
223
|
try {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
// remainingFraction is usually between 0.0 and 1.0.
|
|
214
|
-
// Keep fractional precision so tiny consumption (<0.5%) does not get rounded away.
|
|
215
|
-
const remainingFraction = typeof bucket.remainingFraction === "number" &&
|
|
216
|
-
Number.isFinite(bucket.remainingFraction)
|
|
217
|
-
? Math.min(Math.max(bucket.remainingFraction, 0), 1)
|
|
218
|
-
: 1.0;
|
|
219
|
-
const limit = 100; // percentage scale
|
|
220
|
-
const usedRaw = (1.0 - remainingFraction) * 100;
|
|
221
|
-
const used = Math.round(usedRaw * 1_000_000) / 1_000_000;
|
|
222
|
-
usage[modelId] = {
|
|
223
|
-
limit,
|
|
224
|
-
usage: used,
|
|
225
|
-
resetAt: bucket.resetTime
|
|
226
|
-
? new Date(bucket.resetTime)
|
|
227
|
-
: new Date(Date.now() + 3600000)
|
|
228
|
-
};
|
|
224
|
+
loadData = (loadText.trim() ? JSON.parse(loadText) : {});
|
|
225
|
+
}
|
|
226
|
+
catch (e) {
|
|
227
|
+
throw new QuotaFetchError("parse_error", "loadCodeAssist returned invalid JSON.", { cause: e });
|
|
228
|
+
}
|
|
229
|
+
const projectId = loadData.cloudaicompanionProject;
|
|
230
|
+
if (!projectId) {
|
|
231
|
+
throw new QuotaFetchError("parse_error", "No cloudaicompanionProject found in loadCodeAssist response.");
|
|
232
|
+
}
|
|
233
|
+
const quotaRes = await fetchWithTimeout("https://cloudcode-pa.googleapis.com/v1internal:retrieveUserQuota", {
|
|
234
|
+
method: "POST",
|
|
235
|
+
headers: {
|
|
236
|
+
Authorization: `Bearer ${accessToken}`,
|
|
237
|
+
"Content-Type": "application/json",
|
|
238
|
+
"User-Agent": "ai-quota"
|
|
239
|
+
},
|
|
240
|
+
body: JSON.stringify({ project: projectId })
|
|
241
|
+
}, timeoutMs);
|
|
242
|
+
const quotaText = await quotaRes.text();
|
|
243
|
+
if (!quotaRes.ok) {
|
|
244
|
+
throw new QuotaFetchError(reasonFromHttpStatus(quotaRes.status), `retrieveUserQuota failed (${quotaRes.status} ${quotaRes.statusText}).`, { httpStatus: quotaRes.status });
|
|
245
|
+
}
|
|
246
|
+
let quotaData;
|
|
247
|
+
try {
|
|
248
|
+
quotaData = (quotaText.trim() ? JSON.parse(quotaText) : {});
|
|
249
|
+
}
|
|
250
|
+
catch (e) {
|
|
251
|
+
throw new QuotaFetchError("parse_error", "retrieveUserQuota returned invalid JSON.", { cause: e });
|
|
252
|
+
}
|
|
253
|
+
const usage = {};
|
|
254
|
+
if (Array.isArray(quotaData.buckets)) {
|
|
255
|
+
for (const bucket of quotaData.buckets) {
|
|
256
|
+
const modelId = typeof bucket.modelId === "string" ? bucket.modelId : null;
|
|
257
|
+
if (!modelId)
|
|
258
|
+
continue;
|
|
259
|
+
const remainingFraction = typeof bucket.remainingFraction === "number" && Number.isFinite(bucket.remainingFraction)
|
|
260
|
+
? Math.min(Math.max(bucket.remainingFraction, 0), 1)
|
|
261
|
+
: 1.0;
|
|
262
|
+
const limit = 100;
|
|
263
|
+
const usedRaw = (1.0 - remainingFraction) * 100;
|
|
264
|
+
const used = Math.round(usedRaw * 1_000_000) / 1_000_000;
|
|
265
|
+
const resetAt = bucket.resetTime ? new Date(bucket.resetTime) : new Date(Date.now() + 3600000);
|
|
266
|
+
if (Number.isNaN(resetAt.getTime())) {
|
|
267
|
+
throw new QuotaFetchError("parse_error", "Gemini quota bucket resetTime was invalid.");
|
|
229
268
|
}
|
|
269
|
+
usage[modelId] = { limit, usage: used, resetAt };
|
|
230
270
|
}
|
|
231
|
-
return usage;
|
|
232
|
-
}
|
|
233
|
-
catch (error) {
|
|
234
|
-
console.error("Error fetching Gemini usage:", error);
|
|
235
|
-
return null;
|
|
236
271
|
}
|
|
272
|
+
return usage;
|
|
237
273
|
}
|
|
238
274
|
//# sourceMappingURL=gemini.js.map
|
package/dist/gemini.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../src/gemini.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../src/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AllRateLimits } from "./types.js";
|
|
2
|
+
import type { SupportedAgent } from "./index.js";
|
|
3
|
+
export type HumanStatus = "CAN_USE" | "LOW_QUOTA" | "WAIT_RESET" | "LOGIN_REQUIRED" | "FETCH_FAILED";
|
|
4
|
+
export type HumanLimit = "7d" | "5h" | "pro" | "flash" | "-";
|
|
5
|
+
export type HumanRow = {
|
|
6
|
+
agent: string;
|
|
7
|
+
status: HumanStatus;
|
|
8
|
+
limit: HumanLimit;
|
|
9
|
+
details: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function buildHumanRows(allResults: AllRateLimits, options: {
|
|
12
|
+
agents: SupportedAgent[];
|
|
13
|
+
now?: Date;
|
|
14
|
+
}): HumanRow[];
|
|
15
|
+
export declare function formatHumanTable(rows: HumanRow[]): string;
|
|
16
|
+
//# sourceMappingURL=human-output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"human-output.d.ts","sourceRoot":"","sources":["../src/human-output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EAMd,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,WAAW,GACX,YAAY,GACZ,gBAAgB,GAChB,cAAc,CAAC;AAEnB,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,GAAG,GAAG,CAAC;AAE7D,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAwOF,wBAAgB,cAAc,CAC5B,UAAU,EAAE,aAAa,EACzB,OAAO,EAAE;IAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CAAE,GAChD,QAAQ,EAAE,CA8BZ;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,CA6BzD"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
import { formatResetIn } from "./utils.js";
|
|
2
|
+
import { rateLimitSnapshotToStatus } from "./codex.js";
|
|
3
|
+
function clampPercent(value) {
|
|
4
|
+
if (!Number.isFinite(value))
|
|
5
|
+
return 0;
|
|
6
|
+
return Math.min(100, Math.max(0, value));
|
|
7
|
+
}
|
|
8
|
+
function compareMostConstraining(a, b) {
|
|
9
|
+
if (a.usedPercent !== b.usedPercent)
|
|
10
|
+
return b.usedPercent - a.usedPercent;
|
|
11
|
+
return a.resetAt.getTime() - b.resetAt.getTime();
|
|
12
|
+
}
|
|
13
|
+
function deriveStatusFromUsedPercent(usedPercent) {
|
|
14
|
+
const clamped = clampPercent(usedPercent);
|
|
15
|
+
if (clamped >= 100)
|
|
16
|
+
return "WAIT_RESET";
|
|
17
|
+
if (clamped >= 80)
|
|
18
|
+
return "LOW_QUOTA";
|
|
19
|
+
return "CAN_USE";
|
|
20
|
+
}
|
|
21
|
+
function deriveStatusFromResult(result, usedPercent) {
|
|
22
|
+
const loginReasons = new Set(["auth_failed", "no_credentials", "token_expired"]);
|
|
23
|
+
if (result.status === "error") {
|
|
24
|
+
if (result.reason && loginReasons.has(result.reason))
|
|
25
|
+
return "LOGIN_REQUIRED";
|
|
26
|
+
return "FETCH_FAILED";
|
|
27
|
+
}
|
|
28
|
+
if (result.status === "no-data") {
|
|
29
|
+
if (result.reason && loginReasons.has(result.reason))
|
|
30
|
+
return "LOGIN_REQUIRED";
|
|
31
|
+
return "FETCH_FAILED";
|
|
32
|
+
}
|
|
33
|
+
if (usedPercent === null)
|
|
34
|
+
return "FETCH_FAILED";
|
|
35
|
+
return deriveStatusFromUsedPercent(usedPercent);
|
|
36
|
+
}
|
|
37
|
+
function formatWindowDetails(windows, now) {
|
|
38
|
+
return windows
|
|
39
|
+
.map((w) => `${w.label}: ${w.usedPercent}% used (reset in ${formatResetIn(w.resetAt, now)})`)
|
|
40
|
+
.join(", ");
|
|
41
|
+
}
|
|
42
|
+
function buildClaudeRow(result, now) {
|
|
43
|
+
const windows = [];
|
|
44
|
+
const data = result.data;
|
|
45
|
+
if (data?.five_hour) {
|
|
46
|
+
const resetAt = new Date(data.five_hour.resets_at);
|
|
47
|
+
if (Number.isFinite(resetAt.getTime())) {
|
|
48
|
+
windows.push({
|
|
49
|
+
label: "5h",
|
|
50
|
+
usedPercent: clampPercent(Math.round(data.five_hour.utilization)),
|
|
51
|
+
resetAt
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
if (data?.seven_day) {
|
|
56
|
+
const resetAt = new Date(data.seven_day.resets_at);
|
|
57
|
+
if (Number.isFinite(resetAt.getTime())) {
|
|
58
|
+
windows.push({
|
|
59
|
+
label: "7d",
|
|
60
|
+
usedPercent: clampPercent(Math.round(data.seven_day.utilization)),
|
|
61
|
+
resetAt
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
windows.sort(compareMostConstraining);
|
|
66
|
+
const limitingUsed = windows.length > 0 ? windows[0].usedPercent : null;
|
|
67
|
+
const status = deriveStatusFromResult(result, limitingUsed);
|
|
68
|
+
if (status === "LOGIN_REQUIRED") {
|
|
69
|
+
return {
|
|
70
|
+
status,
|
|
71
|
+
limit: "-",
|
|
72
|
+
details: result.reason ? `login required (${result.reason})` : "login required"
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
if (status === "FETCH_FAILED") {
|
|
76
|
+
return {
|
|
77
|
+
status,
|
|
78
|
+
limit: "-",
|
|
79
|
+
details: result.reason ? `fetch failed (${result.reason})` : "fetch failed"
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
const limit = windows.length > 0 ? windows[0].label : "-";
|
|
83
|
+
const details = windows.length > 0 ? formatWindowDetails(windows, now) : "no data";
|
|
84
|
+
return { status, limit, details };
|
|
85
|
+
}
|
|
86
|
+
function buildCodexRow(result, now) {
|
|
87
|
+
const data = result.data;
|
|
88
|
+
const statusObj = data ? rateLimitSnapshotToStatus(data, now) : null;
|
|
89
|
+
const windows = [];
|
|
90
|
+
for (const w of statusObj?.windows ?? []) {
|
|
91
|
+
const usedPercent = clampPercent(Math.round(100 - w.percentLeft));
|
|
92
|
+
if (w.label === "5h" || w.label === "7d") {
|
|
93
|
+
windows.push({ label: w.label, usedPercent, resetAt: w.resetAt });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
windows.sort(compareMostConstraining);
|
|
97
|
+
const limitingUsed = windows.length > 0 ? windows[0].usedPercent : null;
|
|
98
|
+
const status = deriveStatusFromResult(result, limitingUsed);
|
|
99
|
+
if (status === "LOGIN_REQUIRED") {
|
|
100
|
+
return {
|
|
101
|
+
status,
|
|
102
|
+
limit: "-",
|
|
103
|
+
details: result.reason ? `login required (${result.reason})` : "login required"
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
if (status === "FETCH_FAILED") {
|
|
107
|
+
return {
|
|
108
|
+
status,
|
|
109
|
+
limit: "-",
|
|
110
|
+
details: result.reason ? `fetch failed (${result.reason})` : "fetch failed"
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
const limit = windows.length > 0 ? windows[0].label : "-";
|
|
114
|
+
const details = windows.length > 0 ? formatWindowDetails(windows, now) : "no data";
|
|
115
|
+
return { status, limit, details };
|
|
116
|
+
}
|
|
117
|
+
function buildCopilotRow(result, now) {
|
|
118
|
+
const data = result.data;
|
|
119
|
+
const usedPercent = data ? clampPercent(Math.round(100 - data.percentRemaining)) : null;
|
|
120
|
+
const status = deriveStatusFromResult(result, usedPercent);
|
|
121
|
+
if (status === "LOGIN_REQUIRED") {
|
|
122
|
+
return {
|
|
123
|
+
status,
|
|
124
|
+
limit: "-",
|
|
125
|
+
details: result.reason ? `login required (${result.reason})` : "login required"
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
if (status === "FETCH_FAILED") {
|
|
129
|
+
return {
|
|
130
|
+
status,
|
|
131
|
+
limit: "-",
|
|
132
|
+
details: result.reason ? `fetch failed (${result.reason})` : "fetch failed"
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
if (!data)
|
|
136
|
+
return { status: "FETCH_FAILED", limit: "-", details: "no data" };
|
|
137
|
+
return {
|
|
138
|
+
status,
|
|
139
|
+
limit: "-",
|
|
140
|
+
details: `${usedPercent}% used (reset in ${formatResetIn(data.resetAt, now)})`
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
function classifyGeminiModelId(modelId) {
|
|
144
|
+
if (modelId.includes("pro"))
|
|
145
|
+
return { agentSuffix: "pro", limit: "pro" };
|
|
146
|
+
if (modelId.includes("flash"))
|
|
147
|
+
return { agentSuffix: "flash", limit: "flash" };
|
|
148
|
+
return { agentSuffix: null, limit: "-" };
|
|
149
|
+
}
|
|
150
|
+
function buildGeminiRows(result, now) {
|
|
151
|
+
const data = result.data;
|
|
152
|
+
if (result.status !== "ok") {
|
|
153
|
+
const status = deriveStatusFromResult(result, null);
|
|
154
|
+
const details = status === "LOGIN_REQUIRED"
|
|
155
|
+
? result.reason
|
|
156
|
+
? `login required (${result.reason})`
|
|
157
|
+
: "login required"
|
|
158
|
+
: result.reason
|
|
159
|
+
? `fetch failed (${result.reason})`
|
|
160
|
+
: "fetch failed";
|
|
161
|
+
return [{ agent: "gemini", status, limit: "-", details }];
|
|
162
|
+
}
|
|
163
|
+
const rows = [];
|
|
164
|
+
const seenSuffix = new Set();
|
|
165
|
+
for (const [modelId, usage] of Object.entries(data ?? {})) {
|
|
166
|
+
if (!usage)
|
|
167
|
+
continue;
|
|
168
|
+
const { agentSuffix, limit } = classifyGeminiModelId(modelId);
|
|
169
|
+
if (!agentSuffix)
|
|
170
|
+
continue;
|
|
171
|
+
if (seenSuffix.has(agentSuffix))
|
|
172
|
+
continue;
|
|
173
|
+
seenSuffix.add(agentSuffix);
|
|
174
|
+
const usedPercent = clampPercent(Math.round(usage.usage));
|
|
175
|
+
const status = deriveStatusFromUsedPercent(usedPercent);
|
|
176
|
+
rows.push({
|
|
177
|
+
agent: `gemini/${agentSuffix}`,
|
|
178
|
+
status,
|
|
179
|
+
limit,
|
|
180
|
+
details: `${usedPercent}% used (reset in ${formatResetIn(usage.resetAt, now)})`
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
if (rows.length === 0) {
|
|
184
|
+
return [{ agent: "gemini", status: "FETCH_FAILED", limit: "-", details: "no data" }];
|
|
185
|
+
}
|
|
186
|
+
// Stable output ordering: pro then flash (regardless of used%)
|
|
187
|
+
rows.sort((a, b) => {
|
|
188
|
+
const aRank = a.limit === "pro" ? 0 : a.limit === "flash" ? 1 : 2;
|
|
189
|
+
const bRank = b.limit === "pro" ? 0 : b.limit === "flash" ? 1 : 2;
|
|
190
|
+
if (aRank !== bRank)
|
|
191
|
+
return aRank - bRank;
|
|
192
|
+
return a.agent.localeCompare(b.agent);
|
|
193
|
+
});
|
|
194
|
+
return rows;
|
|
195
|
+
}
|
|
196
|
+
export function buildHumanRows(allResults, options) {
|
|
197
|
+
const now = options.now ?? new Date();
|
|
198
|
+
const rows = [];
|
|
199
|
+
for (const agent of options.agents) {
|
|
200
|
+
if (agent === "claude") {
|
|
201
|
+
const row = buildClaudeRow(allResults.claude, now);
|
|
202
|
+
rows.push({ agent: "claude", ...row });
|
|
203
|
+
continue;
|
|
204
|
+
}
|
|
205
|
+
if (agent === "codex") {
|
|
206
|
+
const row = buildCodexRow(allResults.codex, now);
|
|
207
|
+
rows.push({ agent: "codex", ...row });
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
if (agent === "gemini") {
|
|
211
|
+
rows.push(...buildGeminiRows(allResults.gemini, now));
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
if (agent === "copilot") {
|
|
215
|
+
const row = buildCopilotRow(allResults.copilot, now);
|
|
216
|
+
rows.push({ agent: "copilot", ...row });
|
|
217
|
+
continue;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return rows;
|
|
221
|
+
}
|
|
222
|
+
export function formatHumanTable(rows) {
|
|
223
|
+
const headers = ["AGENT", "STATUS", "LIMIT", "DETAILS"];
|
|
224
|
+
const cells = rows.map((r) => [r.agent, r.status, r.limit, r.details]);
|
|
225
|
+
const widths = headers.map((h, i) => {
|
|
226
|
+
let max = h.length;
|
|
227
|
+
for (const row of cells)
|
|
228
|
+
max = Math.max(max, String(row[i]).length);
|
|
229
|
+
return max;
|
|
230
|
+
});
|
|
231
|
+
const pad = (value, width) => value.padEnd(width);
|
|
232
|
+
const lines = [];
|
|
233
|
+
lines.push(headers.map((h, i) => pad(h, widths[i])).join(" "));
|
|
234
|
+
lines.push(widths.map((w) => "-".repeat(w)).join(" "));
|
|
235
|
+
for (const r of rows) {
|
|
236
|
+
const line = pad(r.agent, widths[0]) +
|
|
237
|
+
" " +
|
|
238
|
+
pad(r.status, widths[1]) +
|
|
239
|
+
" " +
|
|
240
|
+
pad(r.limit, widths[2]) +
|
|
241
|
+
" " +
|
|
242
|
+
r.details;
|
|
243
|
+
lines.push(line);
|
|
244
|
+
}
|
|
245
|
+
return lines.join("\n");
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=human-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"human-output.js","sourceRoot":"","sources":["../src/human-output.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @metyatech/ai-quota
|
|
3
3
|
*
|
|
4
|
-
* Quota / rate-limit fetching SDK for Claude, Gemini, Copilot,
|
|
4
|
+
* Quota / rate-limit fetching SDK for Claude, Gemini, Copilot, and Codex.
|
|
5
5
|
*/
|
|
6
6
|
import type { AllRateLimits } from "./types.js";
|
|
7
7
|
/**
|
|
8
8
|
* List of AI agent identifiers supported by this SDK.
|
|
9
9
|
*/
|
|
10
|
-
export declare const SUPPORTED_AGENTS: readonly ["claude", "gemini", "copilot", "
|
|
10
|
+
export declare const SUPPORTED_AGENTS: readonly ["claude", "gemini", "copilot", "codex"];
|
|
11
11
|
/**
|
|
12
12
|
* Type representing supported agent identifiers.
|
|
13
13
|
*/
|
|
@@ -23,7 +23,6 @@ export { fetchClaudeRateLimits } from "./claude.js";
|
|
|
23
23
|
export { fetchGeminiRateLimits } from "./gemini.js";
|
|
24
24
|
export { fetchCopilotRateLimits, parseCopilotUserInfo, parseCopilotQuotaHeader, getCopilotToken } from "./copilot.js";
|
|
25
25
|
export type { FetchCopilotRateLimitsOptions } from "./copilot.js";
|
|
26
|
-
export { fetchAmazonQRateLimits, recordAmazonQUsage, loadAmazonQUsageState, saveAmazonQUsageState, resolveAmazonQUsageStatePath, DEFAULT_AMAZON_Q_MONTHLY_LIMIT } from "./amazon-q.js";
|
|
27
26
|
export { fetchCodexRateLimits, rateLimitSnapshotToStatus } from "./codex.js";
|
|
28
27
|
export type { CodexStatus, UsageWindow, UsageWindowKey, FetchCodexRateLimitsOptions } from "./codex.js";
|
|
29
28
|
/**
|