@metyatech/ai-quota 1.2.1 → 1.2.4
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 +31 -6
- package/dist/cli.js +0 -0
- package/dist/copilot.d.ts +19 -5
- package/dist/copilot.d.ts.map +1 -1
- package/dist/copilot.js +292 -20
- package/dist/copilot.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -106,14 +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 | `
|
|
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
115
|
|
|
116
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.
|
|
117
118
|
|
|
118
119
|
Exit code is `0` on success. Exit code `1` if any agent fetch fails.
|
|
119
120
|
|
|
@@ -245,6 +246,30 @@ npm run format # Prettier format
|
|
|
245
246
|
npm run verify # lint + test + build (full CI suite)
|
|
246
247
|
```
|
|
247
248
|
|
|
249
|
+
## Release and publish
|
|
250
|
+
|
|
251
|
+
`ai-quota` publishes to npm from GitHub Actions via npm trusted publishing (OIDC). The
|
|
252
|
+
release workflow lives in `.github/workflows/publish.yml`, runs when a GitHub release is
|
|
253
|
+
published, and uses Node.js 24 because npm trusted publishing requires a modern npm/Node
|
|
254
|
+
runtime in CI.
|
|
255
|
+
|
|
256
|
+
Release flow:
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
npm version patch --no-git-tag-version
|
|
260
|
+
# update CHANGELOG.md as needed
|
|
261
|
+
npm run verify
|
|
262
|
+
git add package.json package-lock.json CHANGELOG.md
|
|
263
|
+
git commit -m "Release vX.Y.Z"
|
|
264
|
+
git push origin main
|
|
265
|
+
git tag vX.Y.Z
|
|
266
|
+
git push origin vX.Y.Z
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
Then publish a GitHub release for the `vX.Y.Z` tag. GitHub Actions will run the publish
|
|
270
|
+
workflow, publish the package to npm, and attach npm provenance automatically when trusted
|
|
271
|
+
publishing is configured for the package.
|
|
272
|
+
|
|
248
273
|
## Environment variables
|
|
249
274
|
|
|
250
275
|
| Variable | Used by | Purpose |
|
package/dist/cli.js
CHANGED
|
File without changes
|
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
|
-
*
|
|
16
|
+
* Copilot CLI / GitHub CLI authentication stores, or the 'gh' CLI command.
|
|
6
17
|
*
|
|
7
18
|
* Order of discovery:
|
|
8
|
-
* 1.
|
|
9
|
-
* 2.
|
|
10
|
-
* 3.
|
|
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;
|
package/dist/copilot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../src/copilot.ts"],"names":[],"mappings":"
|
|
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
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
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
|
-
*
|
|
252
|
+
* Copilot CLI / GitHub CLI authentication stores, or the 'gh' CLI command.
|
|
9
253
|
*
|
|
10
254
|
* Order of discovery:
|
|
11
|
-
* 1.
|
|
12
|
-
* 2.
|
|
13
|
-
* 3.
|
|
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
|
-
|
|
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:
|
|
22
|
-
return
|
|
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(
|
|
26
|
-
path.join(
|
|
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 (!
|
|
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 =
|
|
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 =
|
|
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");
|
package/dist/copilot.js.map
CHANGED
|
@@ -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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"}
|