@metyatech/ai-quota 1.2.0 → 1.2.2

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 CHANGED
@@ -106,12 +106,15 @@ ai-quota --json
106
106
 
107
107
  ### Credential lookup
108
108
 
109
- | Agent | Source |
110
- | ------- | ----------------------------------------------------------- |
111
- | Claude | `~/.claude/.credentials.json` |
112
- | Gemini | `~/.gemini/oauth_creds.json` |
113
- | Copilot | `GITHUB_TOKEN` env var, `gh auth token` CLI, or `hosts.yml` |
114
- | Codex | `~/.codex/auth.json` |
109
+ | Agent | Source |
110
+ | ------- | -------------------------------------------------------------------------------------------------------------------------- |
111
+ | Claude | `~/.claude/.credentials.json` |
112
+ | Gemini | `~/.gemini/oauth_creds.json` |
113
+ | Copilot | `COPILOT_GITHUB_TOKEN`, `GH_TOKEN`, `GITHUB_TOKEN`, Copilot CLI stored OAuth token, `gh auth token`, or legacy `hosts.yml` |
114
+ | Codex | `~/.codex/auth.json` |
115
+
116
+ Claude token behavior: `ai-quota` automatically refreshes Claude OAuth tokens using `refreshToken` when needed (including stale-token `401/403/429` retries).
117
+ Copilot token behavior: if you already authenticated with `copilot login`, `ai-quota` will reuse that stored OAuth token automatically, including Windows Credential Manager entries created by Copilot CLI.
115
118
 
116
119
  Exit code is `0` on success. Exit code `1` if any agent fetch fails.
117
120
 
package/dist/claude.d.ts CHANGED
@@ -5,10 +5,10 @@ export type { ClaudeUsageData, ClaudeUsageBucket } from "./types.js";
5
5
  *
6
6
  * This function attempts to read credentials from the Claude desktop application's
7
7
  * local storage (`~/.claude/.credentials.json`) and calls the Anthropic usage API.
8
+ * If the access token is stale or rejected, it attempts one OAuth refresh and retries.
8
9
  *
9
10
  * @param timeoutMs - Request timeout in milliseconds (default: 5000ms)
10
- * @returns A promise resolving to ClaudeUsageData or null if credentials are
11
- * missing, expired, or the API request fails.
11
+ * @returns A promise resolving to ClaudeUsageData.
12
12
  */
13
13
  export declare function fetchClaudeRateLimits(timeoutMs?: number): Promise<ClaudeUsageData>;
14
14
  //# sourceMappingURL=claude.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../src/claude.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AA+CrE;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CAAC,SAAS,GAAE,MAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CAsF9F"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../src/claude.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAmMrE;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CAAC,SAAS,GAAE,MAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CA4F9F"}
package/dist/claude.js CHANGED
@@ -1,12 +1,19 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import { QuotaFetchError } from "./errors.js";
4
+ const CLAUDE_OAUTH_TOKEN_URL = process.env.CLAUDE_CODE_OAUTH_TOKEN_URL ?? "https://platform.claude.com/v1/oauth/token";
5
+ const CLAUDE_OAUTH_CLIENT_ID = process.env.CLAUDE_CODE_OAUTH_CLIENT_ID ?? "9d1c250a-e61b-44d9-88ed-5944d1962f5e";
6
+ const CLAUDE_OAUTH_SCOPES = process.env.CLAUDE_CODE_OAUTH_SCOPES ??
7
+ "user:profile user:inference user:sessions:claude_code user:mcp_servers";
4
8
  function getClaudeConfigDir() {
5
9
  const home = process.env.USERPROFILE ?? process.env.HOME ?? "";
6
10
  return path.join(home, ".claude");
7
11
  }
12
+ function getClaudeCredentialsPath() {
13
+ return path.join(getClaudeConfigDir(), ".credentials.json");
14
+ }
8
15
  function readClaudeCredentials() {
9
- const credsPath = path.join(getClaudeConfigDir(), ".credentials.json");
16
+ const credsPath = getClaudeCredentialsPath();
10
17
  try {
11
18
  if (!fs.existsSync(credsPath)) {
12
19
  throw new QuotaFetchError("no_credentials", `Claude credentials not found at ${credsPath}`);
@@ -34,9 +41,12 @@ function readClaudeCredentials() {
34
41
  const expiresAt = typeof oauthRecord.expiresAt === "number" && Number.isFinite(oauthRecord.expiresAt)
35
42
  ? oauthRecord.expiresAt
36
43
  : null;
44
+ const refreshToken = typeof oauthRecord.refreshToken === "string" && oauthRecord.refreshToken.length > 0
45
+ ? oauthRecord.refreshToken
46
+ : null;
37
47
  if (!accessToken || expiresAt === null)
38
48
  return null;
39
- return { accessToken, expiresAt };
49
+ return { accessToken, expiresAt, refreshToken };
40
50
  }
41
51
  catch (e) {
42
52
  if (e instanceof QuotaFetchError)
@@ -44,15 +54,124 @@ function readClaudeCredentials() {
44
54
  throw new QuotaFetchError("api_error", "Failed to read Claude credentials.", { cause: e });
45
55
  }
46
56
  }
57
+ function persistClaudeCredentialsUpdate(creds) {
58
+ const credsPath = getClaudeCredentialsPath();
59
+ try {
60
+ if (!fs.existsSync(credsPath))
61
+ return;
62
+ const raw = fs.readFileSync(credsPath, "utf8");
63
+ const parsed = JSON.parse(raw);
64
+ if (!parsed || typeof parsed !== "object")
65
+ return;
66
+ const record = parsed;
67
+ if (!record.claudeAiOauth || typeof record.claudeAiOauth !== "object")
68
+ return;
69
+ const oauthRecord = record.claudeAiOauth;
70
+ oauthRecord.accessToken = creds.accessToken;
71
+ oauthRecord.expiresAt = creds.expiresAt;
72
+ if (creds.refreshToken) {
73
+ oauthRecord.refreshToken = creds.refreshToken;
74
+ }
75
+ fs.writeFileSync(credsPath, JSON.stringify(record));
76
+ }
77
+ catch {
78
+ // Refresh succeeded; a local persistence failure should not fail quota fetch.
79
+ }
80
+ }
81
+ async function requestClaudeUsage(accessToken, timeoutMs) {
82
+ const controller = new AbortController();
83
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
84
+ try {
85
+ return await fetch("https://api.anthropic.com/api/oauth/usage", {
86
+ method: "GET",
87
+ headers: {
88
+ Authorization: `Bearer ${accessToken}`,
89
+ "Content-Type": "application/json",
90
+ "anthropic-beta": "oauth-2025-04-20"
91
+ },
92
+ signal: controller.signal
93
+ });
94
+ }
95
+ catch (e) {
96
+ if (e instanceof Error && e.name === "AbortError") {
97
+ throw new QuotaFetchError("timeout", "Claude usage request timed out.", { cause: e });
98
+ }
99
+ throw new QuotaFetchError("network_error", "Claude usage request failed.", { cause: e });
100
+ }
101
+ finally {
102
+ clearTimeout(timer);
103
+ }
104
+ }
105
+ async function refreshClaudeAccessToken(refreshToken, timeoutMs) {
106
+ const controller = new AbortController();
107
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
108
+ let res;
109
+ try {
110
+ res = await fetch(CLAUDE_OAUTH_TOKEN_URL, {
111
+ method: "POST",
112
+ headers: { "Content-Type": "application/json" },
113
+ body: JSON.stringify({
114
+ grant_type: "refresh_token",
115
+ refresh_token: refreshToken,
116
+ client_id: CLAUDE_OAUTH_CLIENT_ID,
117
+ scope: CLAUDE_OAUTH_SCOPES
118
+ }),
119
+ signal: controller.signal
120
+ });
121
+ }
122
+ catch (e) {
123
+ if (e instanceof Error && e.name === "AbortError") {
124
+ throw new QuotaFetchError("timeout", "Claude OAuth token refresh timed out.", { cause: e });
125
+ }
126
+ throw new QuotaFetchError("network_error", "Claude OAuth token refresh failed.", { cause: e });
127
+ }
128
+ finally {
129
+ clearTimeout(timer);
130
+ }
131
+ if (!res.ok) {
132
+ const reason = res.status >= 400 && res.status < 500 ? "auth_failed" : "api_error";
133
+ throw new QuotaFetchError(reason, `Claude OAuth token refresh failed (${res.status} ${res.statusText}).`, { httpStatus: res.status });
134
+ }
135
+ let data;
136
+ try {
137
+ data = (await res.json());
138
+ }
139
+ catch (e) {
140
+ throw new QuotaFetchError("parse_error", "Claude OAuth token refresh response was invalid.", {
141
+ cause: e
142
+ });
143
+ }
144
+ if (!data || typeof data !== "object") {
145
+ throw new QuotaFetchError("parse_error", "Claude OAuth token refresh response was invalid.");
146
+ }
147
+ const record = data;
148
+ const accessToken = typeof record.access_token === "string" && record.access_token.length > 0
149
+ ? record.access_token
150
+ : null;
151
+ const expiresIn = typeof record.expires_in === "number" && Number.isFinite(record.expires_in)
152
+ ? record.expires_in
153
+ : null;
154
+ const nextRefreshToken = typeof record.refresh_token === "string" && record.refresh_token.length > 0
155
+ ? record.refresh_token
156
+ : refreshToken;
157
+ if (!accessToken || expiresIn === null) {
158
+ throw new QuotaFetchError("parse_error", "Claude OAuth token refresh response missing required fields.");
159
+ }
160
+ return {
161
+ accessToken,
162
+ refreshToken: nextRefreshToken,
163
+ expiresAt: Date.now() + expiresIn * 1000
164
+ };
165
+ }
47
166
  /**
48
167
  * Fetches Claude usage data from the Anthropic OAuth usage API.
49
168
  *
50
169
  * This function attempts to read credentials from the Claude desktop application's
51
170
  * local storage (`~/.claude/.credentials.json`) and calls the Anthropic usage API.
171
+ * If the access token is stale or rejected, it attempts one OAuth refresh and retries.
52
172
  *
53
173
  * @param timeoutMs - Request timeout in milliseconds (default: 5000ms)
54
- * @returns A promise resolving to ClaudeUsageData or null if credentials are
55
- * missing, expired, or the API request fails.
174
+ * @returns A promise resolving to ClaudeUsageData.
56
175
  */
57
176
  export async function fetchClaudeRateLimits(timeoutMs = 5000) {
58
177
  try {
@@ -60,32 +179,32 @@ export async function fetchClaudeRateLimits(timeoutMs = 5000) {
60
179
  if (!creds) {
61
180
  throw new QuotaFetchError("no_credentials", "Claude credentials missing.");
62
181
  }
63
- // Check token expiry with 5-minute buffer
64
- if (Date.now() + 300_000 >= creds.expiresAt) {
65
- throw new QuotaFetchError("token_expired", "Claude access token is expired.");
66
- }
67
- const controller = new AbortController();
68
- const timer = setTimeout(() => controller.abort(), timeoutMs);
69
- let res;
70
- try {
71
- res = await fetch("https://api.anthropic.com/api/oauth/usage", {
72
- method: "GET",
73
- headers: {
74
- Authorization: `Bearer ${creds.accessToken}`,
75
- "Content-Type": "application/json",
76
- "anthropic-beta": "oauth-2025-04-20"
77
- },
78
- signal: controller.signal
79
- });
80
- }
81
- catch (e) {
82
- if (e instanceof Error && e.name === "AbortError") {
83
- throw new QuotaFetchError("timeout", "Claude usage request timed out.", { cause: e });
182
+ let accessToken = creds.accessToken;
183
+ let refreshToken = creds.refreshToken;
184
+ let didRefresh = false;
185
+ const refreshAndPersist = async () => {
186
+ if (!refreshToken) {
187
+ throw new QuotaFetchError("token_expired", "Claude access token is expired.");
84
188
  }
85
- throw new QuotaFetchError("network_error", "Claude usage request failed.", { cause: e });
189
+ const refreshed = await refreshClaudeAccessToken(refreshToken, timeoutMs);
190
+ accessToken = refreshed.accessToken;
191
+ refreshToken = refreshed.refreshToken;
192
+ persistClaudeCredentialsUpdate(refreshed);
193
+ didRefresh = true;
194
+ };
195
+ // Check token expiry with 5-minute buffer.
196
+ if (Date.now() + 300_000 >= creds.expiresAt) {
197
+ await refreshAndPersist();
86
198
  }
87
- finally {
88
- clearTimeout(timer);
199
+ let res = await requestClaudeUsage(accessToken, timeoutMs);
200
+ // Claude sometimes returns 429 for stale/revoked tokens while normal model calls still work.
201
+ // Retry once with a fresh OAuth token before failing.
202
+ if (!res.ok &&
203
+ (res.status === 401 || res.status === 403 || res.status === 429) &&
204
+ !didRefresh &&
205
+ refreshToken) {
206
+ await refreshAndPersist();
207
+ res = await requestClaudeUsage(accessToken, timeoutMs);
89
208
  }
90
209
  if (!res.ok) {
91
210
  const reason = res.status === 401 || res.status === 403 ? "auth_failed" : "api_error";
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../src/claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../src/claude.ts"],"names":[],"mappings":"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"}
package/dist/copilot.d.ts CHANGED
@@ -1,18 +1,32 @@
1
+ import * as fs from "node:fs";
1
2
  import type { CopilotUsage } from "./types.js";
2
3
  export type { CopilotUsage } from "./types.js";
4
+ type CopilotTokenRuntime = {
5
+ execFileText?: (command: string, args: string[]) => string;
6
+ existsSync?: typeof fs.existsSync;
7
+ readFileSync?: typeof fs.readFileSync;
8
+ writeFileSync?: typeof fs.writeFileSync;
9
+ unlinkSync?: typeof fs.unlinkSync;
10
+ homeDir?: string;
11
+ platform?: NodeJS.Platform;
12
+ tmpDir?: string;
13
+ };
3
14
  /**
4
15
  * Resolves a GitHub Copilot token from environment variables,
5
- * local GitHub CLI configuration files, or the 'gh' CLI command.
16
+ * Copilot CLI / GitHub CLI authentication stores, or the 'gh' CLI command.
6
17
  *
7
18
  * Order of discovery:
8
- * 1. GITHUB_TOKEN environment variable
9
- * 2. GitHub CLI configuration file (~/.config/gh/hosts.yml)
10
- * 3. `gh auth token` command execution
19
+ * 1. COPILOT_GITHUB_TOKEN environment variable
20
+ * 2. GH_TOKEN environment variable
21
+ * 3. GITHUB_TOKEN environment variable
22
+ * 4. Copilot CLI stored credentials (~/.copilot/config.json or Windows Credential Manager)
23
+ * 5. GitHub CLI configuration file (~/.config/gh/hosts.yml)
24
+ * 6. `gh auth token` command execution
11
25
  *
12
26
  * @param verbose - Whether to print debug information to stderr
13
27
  * @returns The discovered token or null if no token source is found
14
28
  */
15
- export declare function getCopilotToken(verbose?: boolean): string | null;
29
+ export declare function getCopilotToken(verbose?: boolean, runtimeOverrides?: CopilotTokenRuntime): string | null;
16
30
  export type FetchCopilotRateLimitsOptions = {
17
31
  token: string;
18
32
  timeoutSeconds?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../src/copilot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,OAAO,GAAE,OAAe,GAAG,MAAM,GAAG,IAAI,CA0CvE;AAKD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AA4BF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,IAAiB,GAAG,YAAY,GAAG,IAAI,CA8BhG;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,GAAG,GAAE,IAAiB,GACrB,YAAY,GAAG,IAAI,CA6BrB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,6BAA6B,EACtC,GAAG,GAAE,IAAiB,GACrB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAoE9B"}
1
+ {"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../src/copilot.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAG9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAe/C,KAAK,mBAAmB,GAAG;IACzB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;IAC3D,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC;IAClC,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC;IACtC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,aAAa,CAAC;IACxC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AA4RF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,OAAO,GAAE,OAAe,EACxB,gBAAgB,GAAE,mBAAwB,GACzC,MAAM,GAAG,IAAI,CA0Ef;AAKD,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AA4BF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,GAAE,IAAiB,GAAG,YAAY,GAAG,IAAI,CA8BhG;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,MAAM,EACnB,GAAG,GAAE,IAAiB,GACrB,YAAY,GAAG,IAAI,CA6BrB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,6BAA6B,EACtC,GAAG,GAAE,IAAiB,GACrB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAoE9B"}
package/dist/copilot.js CHANGED
@@ -1,37 +1,312 @@
1
- import fs from "node:fs";
2
- import os from "node:os";
3
- import path from "node:path";
4
- import { execSync } from "node:child_process";
1
+ import * as childProcess from "node:child_process";
2
+ import * as fs from "node:fs";
3
+ import * as os from "node:os";
4
+ import * as path from "node:path";
5
5
  import { QuotaFetchError } from "./errors.js";
6
+ const WINDOWS_CRED_READ_PS1 = [
7
+ "param([string]$Target)",
8
+ "$ErrorActionPreference = 'Stop'",
9
+ "$code = @'",
10
+ "using System;",
11
+ "using System.Runtime.InteropServices;",
12
+ "",
13
+ "public static class CredMan {",
14
+ " [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]",
15
+ " public struct CREDENTIAL {",
16
+ " public int Flags;",
17
+ " public int Type;",
18
+ " public string TargetName;",
19
+ " public string Comment;",
20
+ " public System.Runtime.InteropServices.ComTypes.FILETIME LastWritten;",
21
+ " public int CredentialBlobSize;",
22
+ " public IntPtr CredentialBlob;",
23
+ " public int Persist;",
24
+ " public int AttributeCount;",
25
+ " public IntPtr Attributes;",
26
+ " public string TargetAlias;",
27
+ " public string UserName;",
28
+ " }",
29
+ "",
30
+ ' [DllImport("Advapi32.dll", EntryPoint = "CredReadW", CharSet = CharSet.Unicode, SetLastError = true)]',
31
+ " public static extern bool CredRead(string target, int type, int reservedFlag, out IntPtr credentialPtr);",
32
+ "",
33
+ ' [DllImport("Advapi32.dll", SetLastError = true)]',
34
+ " public static extern void CredFree([In] IntPtr cred);",
35
+ "",
36
+ " public static byte[] ReadGenericBytes(string target) {",
37
+ " IntPtr credPtr;",
38
+ " if (!CredRead(target, 1, 0, out credPtr)) {",
39
+ " return null;",
40
+ " }",
41
+ "",
42
+ " try {",
43
+ " var cred = (CREDENTIAL)Marshal.PtrToStructure(credPtr, typeof(CREDENTIAL));",
44
+ " if (cred.CredentialBlob == IntPtr.Zero || cred.CredentialBlobSize <= 0) {",
45
+ " return null;",
46
+ " }",
47
+ "",
48
+ " byte[] blob = new byte[cred.CredentialBlobSize];",
49
+ " Marshal.Copy(cred.CredentialBlob, blob, 0, cred.CredentialBlobSize);",
50
+ " return blob;",
51
+ " } finally {",
52
+ " CredFree(credPtr);",
53
+ " }",
54
+ " }",
55
+ "}",
56
+ "'@",
57
+ "Add-Type -TypeDefinition $code",
58
+ "$bytes = [CredMan]::ReadGenericBytes($Target)",
59
+ "if ($null -eq $bytes) {",
60
+ " exit 0",
61
+ "}",
62
+ "[Console]::Out.Write([Convert]::ToBase64String($bytes))"
63
+ ].join("\n");
64
+ function normalizeTokenString(value) {
65
+ if (typeof value !== "string")
66
+ return null;
67
+ const trimmed = value.trim();
68
+ return trimmed.length > 0 ? trimmed : null;
69
+ }
70
+ function scoreCopilotTokenCandidate(value) {
71
+ if (!value)
72
+ return 0;
73
+ if (/^(gho_|ghu_|github_pat_)/.test(value))
74
+ return 3;
75
+ if (/^[A-Za-z0-9_]{20,}$/.test(value))
76
+ return 2;
77
+ if (/^[\x20-\x7e]{12,}$/.test(value))
78
+ return 1;
79
+ return 0;
80
+ }
81
+ function execFileText(command, args) {
82
+ return childProcess.execFileSync(command, args, {
83
+ encoding: "utf8",
84
+ stdio: ["ignore", "pipe", "ignore"],
85
+ windowsHide: true
86
+ });
87
+ }
88
+ function resolveHomeDir() {
89
+ return process.env.HOME || process.env.USERPROFILE || os.homedir();
90
+ }
91
+ function createCopilotTokenRuntime(overrides = {}) {
92
+ return {
93
+ execFileText: overrides.execFileText ?? execFileText,
94
+ existsSync: overrides.existsSync ?? fs.existsSync,
95
+ readFileSync: overrides.readFileSync ?? fs.readFileSync,
96
+ writeFileSync: overrides.writeFileSync ?? fs.writeFileSync,
97
+ unlinkSync: overrides.unlinkSync ?? fs.unlinkSync,
98
+ homeDir: overrides.homeDir ?? resolveHomeDir(),
99
+ platform: overrides.platform ?? process.platform,
100
+ tmpDir: overrides.tmpDir ?? os.tmpdir()
101
+ };
102
+ }
103
+ function getCopilotConfigPath(runtime) {
104
+ return path.join(runtime.homeDir, ".copilot", "config.json");
105
+ }
106
+ function readCopilotCliConfig(runtime, verbose) {
107
+ const configPath = getCopilotConfigPath(runtime);
108
+ if (!runtime.existsSync(configPath))
109
+ return null;
110
+ if (verbose)
111
+ process.stderr.write(`[verbose] copilot: checking ${configPath}\n`);
112
+ try {
113
+ const parsed = JSON.parse(runtime.readFileSync(configPath, "utf8"));
114
+ return parsed && typeof parsed === "object" ? parsed : null;
115
+ }
116
+ catch {
117
+ return null;
118
+ }
119
+ }
120
+ function normalizeCopilotHost(host) {
121
+ const trimmed = host.trim();
122
+ if (!trimmed)
123
+ return "";
124
+ return trimmed.includes("://") ? trimmed : `https://${trimmed}`;
125
+ }
126
+ function collectCopilotCliAccounts(config) {
127
+ if (!config)
128
+ return [];
129
+ const accounts = [];
130
+ const seen = new Set();
131
+ const rawAccounts = [config.last_logged_in_user, ...(config.logged_in_users ?? [])];
132
+ for (const account of rawAccounts) {
133
+ const host = normalizeTokenString(account?.host);
134
+ const login = normalizeTokenString(account?.login);
135
+ if (!host || !login)
136
+ continue;
137
+ const normalizedHost = normalizeCopilotHost(host);
138
+ const key = `${normalizedHost}\n${login}`;
139
+ if (seen.has(key))
140
+ continue;
141
+ seen.add(key);
142
+ accounts.push({
143
+ host: normalizedHost,
144
+ login,
145
+ access_token: normalizeTokenString(account?.access_token) ?? undefined
146
+ });
147
+ }
148
+ return accounts;
149
+ }
150
+ function getPlaintextCopilotToken(config) {
151
+ if (!config)
152
+ return null;
153
+ const candidates = [
154
+ normalizeTokenString(config.access_token),
155
+ normalizeTokenString(config.last_logged_in_user?.access_token),
156
+ ...collectCopilotCliAccounts(config).map((account) => normalizeTokenString(account.access_token))
157
+ ];
158
+ for (const candidate of candidates) {
159
+ if (scoreCopilotTokenCandidate(candidate) > 0)
160
+ return candidate;
161
+ }
162
+ return null;
163
+ }
164
+ function parseWindowsCredentialTargets(output) {
165
+ return [...output.matchAll(/^\s*Target:\s+(?:LegacyGeneric:target=)?([^\r\n]+)\s*$/gm)]
166
+ .map((match) => normalizeTokenString(match[1]))
167
+ .filter((target) => Boolean(target));
168
+ }
169
+ function resolvePowerShellExecutable(runtime) {
170
+ const candidates = [
171
+ path.join(process.env.ProgramFiles ?? "", "PowerShell", "7", "pwsh.exe"),
172
+ path.join(process.env.SystemRoot ?? "C:\\Windows", "System32", "WindowsPowerShell", "v1.0", "powershell.exe"),
173
+ "pwsh.exe",
174
+ "powershell.exe"
175
+ ];
176
+ for (const candidate of candidates) {
177
+ if (!candidate)
178
+ continue;
179
+ if (!path.isAbsolute(candidate) || runtime.existsSync(candidate))
180
+ return candidate;
181
+ }
182
+ return "powershell.exe";
183
+ }
184
+ function decodeWindowsCredentialBlob(encoded) {
185
+ const trimmed = normalizeTokenString(encoded);
186
+ if (!trimmed)
187
+ return null;
188
+ const bytes = Buffer.from(trimmed, "base64");
189
+ if (bytes.length === 0)
190
+ return null;
191
+ const utf8 = normalizeTokenString(bytes.toString("utf8").replace(/\0+$/g, ""));
192
+ const utf16 = normalizeTokenString(bytes.toString("utf16le").replace(/\0+$/g, ""));
193
+ const utf8Score = scoreCopilotTokenCandidate(utf8);
194
+ const utf16Score = scoreCopilotTokenCandidate(utf16);
195
+ if (utf8Score === 0 && utf16Score === 0)
196
+ return null;
197
+ return utf8Score >= utf16Score ? utf8 : utf16;
198
+ }
199
+ function readWindowsCredentialToken(runtime, target) {
200
+ const scriptPath = path.join(runtime.tmpDir, `ai-quota-copilot-cred-${process.pid}-${Date.now()}.ps1`);
201
+ const shell = resolvePowerShellExecutable(runtime);
202
+ try {
203
+ runtime.writeFileSync(scriptPath, WINDOWS_CRED_READ_PS1, "utf8");
204
+ const encoded = runtime.execFileText(shell, [
205
+ "-NoProfile",
206
+ "-NonInteractive",
207
+ "-File",
208
+ scriptPath,
209
+ target
210
+ ]);
211
+ return decodeWindowsCredentialBlob(encoded);
212
+ }
213
+ catch {
214
+ return null;
215
+ }
216
+ finally {
217
+ try {
218
+ runtime.unlinkSync(scriptPath);
219
+ }
220
+ catch {
221
+ // ignore cleanup errors
222
+ }
223
+ }
224
+ }
225
+ function getWindowsCopilotCredentialTargets(runtime, config) {
226
+ const targets = [];
227
+ const seen = new Set();
228
+ const addTarget = (target) => {
229
+ const normalized = normalizeTokenString(target);
230
+ if (!normalized || seen.has(normalized))
231
+ return;
232
+ seen.add(normalized);
233
+ targets.push(normalized);
234
+ };
235
+ for (const account of collectCopilotCliAccounts(config)) {
236
+ addTarget(`copilot-cli/${account.host}:${account.login}`);
237
+ }
238
+ try {
239
+ const output = runtime.execFileText("cmdkey.exe", ["/list"]);
240
+ for (const target of parseWindowsCredentialTargets(output)) {
241
+ if (target.startsWith("copilot-cli/"))
242
+ addTarget(target);
243
+ }
244
+ }
245
+ catch {
246
+ // ignore
247
+ }
248
+ return targets;
249
+ }
6
250
  /**
7
251
  * Resolves a GitHub Copilot token from environment variables,
8
- * local GitHub CLI configuration files, or the 'gh' CLI command.
252
+ * Copilot CLI / GitHub CLI authentication stores, or the 'gh' CLI command.
9
253
  *
10
254
  * Order of discovery:
11
- * 1. GITHUB_TOKEN environment variable
12
- * 2. GitHub CLI configuration file (~/.config/gh/hosts.yml)
13
- * 3. `gh auth token` command execution
255
+ * 1. COPILOT_GITHUB_TOKEN environment variable
256
+ * 2. GH_TOKEN environment variable
257
+ * 3. GITHUB_TOKEN environment variable
258
+ * 4. Copilot CLI stored credentials (~/.copilot/config.json or Windows Credential Manager)
259
+ * 5. GitHub CLI configuration file (~/.config/gh/hosts.yml)
260
+ * 6. `gh auth token` command execution
14
261
  *
15
262
  * @param verbose - Whether to print debug information to stderr
16
263
  * @returns The discovered token or null if no token source is found
17
264
  */
18
- export function getCopilotToken(verbose = false) {
19
- if (process.env.GITHUB_TOKEN) {
265
+ export function getCopilotToken(verbose = false, runtimeOverrides = {}) {
266
+ const runtime = createCopilotTokenRuntime(runtimeOverrides);
267
+ const envSources = [
268
+ ["COPILOT_GITHUB_TOKEN", process.env.COPILOT_GITHUB_TOKEN],
269
+ ["GH_TOKEN", process.env.GH_TOKEN],
270
+ ["GITHUB_TOKEN", process.env.GITHUB_TOKEN]
271
+ ];
272
+ for (const [name, value] of envSources) {
273
+ const token = normalizeTokenString(value);
274
+ if (!token)
275
+ continue;
276
+ if (verbose)
277
+ process.stderr.write(`[verbose] copilot: using token from ${name} env var\n`);
278
+ return token;
279
+ }
280
+ const copilotConfig = readCopilotCliConfig(runtime, verbose);
281
+ const plaintextToken = getPlaintextCopilotToken(copilotConfig);
282
+ if (plaintextToken) {
20
283
  if (verbose)
21
- process.stderr.write("[verbose] copilot: using token from GITHUB_TOKEN env var\n");
22
- return process.env.GITHUB_TOKEN;
284
+ process.stderr.write("[verbose] copilot: found plaintext token in ~/.copilot/config.json\n");
285
+ return plaintextToken;
286
+ }
287
+ if (runtime.platform === "win32") {
288
+ for (const target of getWindowsCopilotCredentialTargets(runtime, copilotConfig)) {
289
+ if (verbose)
290
+ process.stderr.write(`[verbose] copilot: checking Windows Credential Manager target ${target}\n`);
291
+ const token = readWindowsCredentialToken(runtime, target);
292
+ if (token) {
293
+ if (verbose)
294
+ process.stderr.write(`[verbose] copilot: found token in Windows Credential Manager (${target})\n`);
295
+ return token;
296
+ }
297
+ }
23
298
  }
24
299
  const candidates = [
25
- path.join(os.homedir(), ".config", "gh", "hosts.yml"),
26
- path.join(os.homedir(), "AppData", "Roaming", "GitHub CLI", "hosts.yml")
300
+ path.join(runtime.homeDir, ".config", "gh", "hosts.yml"),
301
+ path.join(runtime.homeDir, "AppData", "Roaming", "GitHub CLI", "hosts.yml")
27
302
  ];
28
303
  for (const p of candidates) {
29
304
  try {
30
- if (!fs.existsSync(p))
305
+ if (!runtime.existsSync(p))
31
306
  continue;
32
307
  if (verbose)
33
308
  process.stderr.write(`[verbose] copilot: checking ${p}\n`);
34
- const content = fs.readFileSync(p, "utf8");
309
+ const content = runtime.readFileSync(p, "utf8");
35
310
  // Simple line-by-line search for oauth_token under github.com
36
311
  const match = content.match(/oauth_token:\s*(\S+)/);
37
312
  if (match?.[1]) {
@@ -48,10 +323,7 @@ export function getCopilotToken(verbose = false) {
48
323
  try {
49
324
  if (verbose)
50
325
  process.stderr.write("[verbose] copilot: trying 'gh auth token --hostname github.com'\n");
51
- const token = execSync("gh auth token --hostname github.com", {
52
- encoding: "utf8",
53
- stdio: ["ignore", "pipe", "ignore"]
54
- }).trim();
326
+ const token = runtime.execFileText("gh", ["auth", "token", "--hostname", "github.com"]).trim();
55
327
  if (token) {
56
328
  if (verbose)
57
329
  process.stderr.write("[verbose] copilot: found token via gh CLI\n");
@@ -1 +1 @@
1
- {"version":3,"file":"copilot.js","sourceRoot":"","sources":["../src/copilot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"copilot.js","sourceRoot":"","sources":["../src/copilot.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metyatech/ai-quota",
3
- "version": "1.2.0",
3
+ "version": "1.2.2",
4
4
  "description": "AI agent quota/rate-limit fetching library and CLI for Claude, Gemini, Copilot, and Codex",
5
5
  "license": "MIT",
6
6
  "type": "module",