quota-axi 0.1.3 → 0.1.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 +45 -22
- package/dist/src/cache.js +13 -7
- package/dist/src/cache.js.map +1 -1
- package/dist/src/cli.d.ts +1 -1
- package/dist/src/cli.js +5 -1
- package/dist/src/cli.js.map +1 -1
- package/dist/src/lib/process.d.ts +1 -0
- package/dist/src/lib/process.js +6 -3
- package/dist/src/lib/process.js.map +1 -1
- package/dist/src/providers/copilot.d.ts +10 -0
- package/dist/src/providers/copilot.js +300 -0
- package/dist/src/providers/copilot.js.map +1 -0
- package/dist/src/providers/cursor.d.ts +17 -0
- package/dist/src/providers/cursor.js +324 -0
- package/dist/src/providers/cursor.js.map +1 -0
- package/dist/src/providers/grok.d.ts +18 -0
- package/dist/src/providers/grok.js +471 -0
- package/dist/src/providers/grok.js.map +1 -0
- package/dist/src/providers/index.d.ts +1 -1
- package/dist/src/providers/index.js +12 -2
- package/dist/src/providers/index.js.map +1 -1
- package/dist/src/skill.js +21 -10
- package/dist/src/skill.js.map +1 -1
- package/dist/src/types.d.ts +2 -1
- package/dist/src/types.js +7 -1
- package/dist/src/types.js.map +1 -1
- package/package.json +1 -1
- package/skills/quota-axi/SKILL.md +12 -9
package/README.md
CHANGED
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
Quota CLI for agents - designed with [AXI](https://axi.md) (Agent eXperience Interface).
|
|
14
14
|
|
|
15
15
|
Agents need quota state before they choose where work can safely run.
|
|
16
|
-
Vendor dashboards are not shaped for shell automation, and local CLIs expose different windows, resets, and auth
|
|
16
|
+
Vendor dashboards are not shaped for shell automation, and local CLIs expose different windows, resets, and auth sources.
|
|
17
17
|
|
|
18
|
-
quota-axi reports local Claude and
|
|
18
|
+
quota-axi reports local Claude, Codex, Cursor, GitHub Copilot, and Grok quota windows in one [AXI](https://axi.md)-shaped call.
|
|
19
19
|
It is data only: it never routes, recommends, proxies, intercepts, logs in, imports browser cookies, or mutates provider state.
|
|
20
20
|
|
|
21
|
-
- **Official sources** - quota-axi reads local
|
|
22
|
-
- **Local first** - everything runs on the machine that holds the credentials; the only network calls are to
|
|
21
|
+
- **Official sources** - quota-axi reads local provider auth sources and calls the first-party quota, usage, billing, or entitlement endpoints used by the local agents, with a read-only Codex app-server probe as fallback.
|
|
22
|
+
- **Local first** - everything runs on the machine that holds the credentials; the only network calls are to first-party provider endpoints, never a third-party relay.
|
|
23
23
|
- **Token efficient** - default stdout is compact TOON so agents spend fewer tokens parsing quota state, with `--json` available when a caller needs the normalized model.
|
|
24
24
|
|
|
25
25
|
## Quick Start
|
|
@@ -34,10 +34,13 @@ $ npx -y quota-axi
|
|
|
34
34
|
bin: ~/.npm/_npx/.../quota-axi
|
|
35
35
|
description: Report local agent-provider quota windows for routing-aware agents
|
|
36
36
|
generatedAt: "2026-03-15T16:42:00.000Z"
|
|
37
|
-
providers[
|
|
37
|
+
providers[5]{provider,plan,source,status,refreshedAt}:
|
|
38
38
|
claude,pro,oauth,fresh,"2026-03-15T16:41:55.000Z"
|
|
39
39
|
codex,plus,cli-rpc,fresh,"2026-03-15T16:41:58.000Z"
|
|
40
|
-
|
|
40
|
+
cursor,pro,api,fresh,"2026-03-15T16:41:59.000Z"
|
|
41
|
+
copilot,individual,api,fresh,"2026-03-15T16:42:00.000Z"
|
|
42
|
+
grok,supergrok,api,fresh,"2026-03-15T16:42:00.000Z"
|
|
43
|
+
windows[13]{provider,id,label,percentRemaining,resetsAt,state}:
|
|
41
44
|
claude,five_hour,session,82,"2026-03-15T21:15:00.000Z",fresh
|
|
42
45
|
claude,seven_day,week,64,"2026-03-19T15:00:00.000Z",fresh
|
|
43
46
|
claude,seven_day_opus,opus week,93,"2026-03-20T09:30:00.000Z",fresh
|
|
@@ -45,6 +48,12 @@ windows[7]{provider,id,label,percentRemaining,resetsAt,state}:
|
|
|
45
48
|
codex,five_hour,session,58,"2026-03-15T20:45:00.000Z",fresh
|
|
46
49
|
codex,weekly,week,47,"2026-03-19T09:00:00.000Z",fresh
|
|
47
50
|
codex,"model:gpt-5.1-codex:5h",GPT-5.1-Codex session,100,"2026-03-16T01:41:58.000Z",fresh
|
|
51
|
+
cursor,included_usage,included usage,72,"2026-04-01T00:00:00.000Z",fresh
|
|
52
|
+
cursor,auto_usage,auto usage,91,"2026-04-01T00:00:00.000Z",fresh
|
|
53
|
+
cursor,api_usage,API usage,100,"2026-04-01T00:00:00.000Z",fresh
|
|
54
|
+
copilot,chat,chat,84,"2026-04-01T00:00:00.000Z",fresh
|
|
55
|
+
copilot,premium_interactions,premium interactions,53,"2026-04-01T00:00:00.000Z",fresh
|
|
56
|
+
grok,credits,credits,67,"2026-04-01T00:00:00.000Z",fresh
|
|
48
57
|
help[3]:
|
|
49
58
|
Run `quota-axi --provider claude --json` for JSON output
|
|
50
59
|
Run `quota-axi --full` to include account and source-attempt details
|
|
@@ -97,11 +106,14 @@ $ quota-axi --provider claude --json
|
|
|
97
106
|
$ quota-axi auth
|
|
98
107
|
bin: ~/.npm/_npx/.../quota-axi
|
|
99
108
|
description: Inspect local quota auth sources without printing secret values
|
|
100
|
-
auth[
|
|
109
|
+
auth[7]{provider,source,path,status,error}:
|
|
101
110
|
claude,oauth-file,~/.claude/.credentials.json,available,none
|
|
102
111
|
claude,keychain,none,skipped,keychain_prompt_required
|
|
103
112
|
codex,auth-json,~/.codex/auth.json,available,none
|
|
104
113
|
codex,cli-rpc,none,available,none
|
|
114
|
+
cursor,state-vscdb,~/Library/Application Support/Cursor/User/globalStorage/state.vscdb,available,none
|
|
115
|
+
copilot,apps-json,~/.config/github-copilot/apps.json,available,none
|
|
116
|
+
grok,auth-json,~/.grok/auth.json,available,none
|
|
105
117
|
help[1]:
|
|
106
118
|
Run `quota-axi --allow-keychain-prompt auth` to permit macOS Keychain access
|
|
107
119
|
```
|
|
@@ -156,12 +168,13 @@ It is generated from `src/skill.ts`; update it with `pnpm run build:skill` and v
|
|
|
156
168
|
└─────┬──────┘
|
|
157
169
|
▼
|
|
158
170
|
┌───────────────┐
|
|
159
|
-
│
|
|
171
|
+
│ provider │
|
|
172
|
+
│ adapters │
|
|
160
173
|
└─────┬─────────┘
|
|
161
174
|
▼
|
|
162
175
|
┌───────────────┐ ┌──────────────┐
|
|
163
176
|
│ local auth │ ───▶ │ first-party │
|
|
164
|
-
│ sources │ │
|
|
177
|
+
│ sources │ │ provider APIs│
|
|
165
178
|
└─────┬─────────┘ └──────┬───────┘
|
|
166
179
|
▼ ▼
|
|
167
180
|
┌───────────────┐ ┌──────────────┐
|
|
@@ -174,7 +187,7 @@ It is generated from `src/skill.ts`; update it with `pnpm run build:skill` and v
|
|
|
174
187
|
└───────────────┘ └──────────────┘
|
|
175
188
|
```
|
|
176
189
|
|
|
177
|
-
- **Live first** - direct provider
|
|
190
|
+
- **Live first** - direct provider HTTP calls use 15 second request timeouts, Codex JSON-RPC reads use short per-call timeouts, and stale cache fallback is per provider.
|
|
178
191
|
- **No first-run Keychain prompt** - macOS Claude Keychain value reads are skipped on plain calls until `--allow-keychain-prompt` succeeds once, then future plain calls reuse that existing grant.
|
|
179
192
|
- **Partial success is success** - one provider can fail while another returns fresh or stale data, and the process still exits 0. Exit code 1 means every provider failed, and 2 means a usage error.
|
|
180
193
|
- **No token equivalence** - quota-axi does not claim that one provider percentage equals another provider percentage.
|
|
@@ -183,19 +196,19 @@ It is generated from `src/skill.ts`; update it with `pnpm run build:skill` and v
|
|
|
183
196
|
|
|
184
197
|
| Command | Description |
|
|
185
198
|
| ----------- | ------------------------------------------------ |
|
|
186
|
-
| `quota-axi` | Report
|
|
199
|
+
| `quota-axi` | Report supported local quota windows |
|
|
187
200
|
| `auth` | Report local auth-source availability, no values |
|
|
188
201
|
|
|
189
202
|
### Flags
|
|
190
203
|
|
|
191
|
-
| Flag
|
|
192
|
-
|
|
|
193
|
-
| `--provider claude,codex` | Scope providers |
|
|
194
|
-
| `--json`
|
|
195
|
-
| `--full`
|
|
196
|
-
| `--allow-keychain-prompt`
|
|
197
|
-
| `-h`, `--help`
|
|
198
|
-
| `-v`, `-V`, `--version`
|
|
204
|
+
| Flag | Description |
|
|
205
|
+
| --------------------------------------------- | ------------------------------------------------------ |
|
|
206
|
+
| `--provider claude,codex,cursor,copilot,grok` | Scope providers |
|
|
207
|
+
| `--json` | Emit normalized JSON instead of TOON for quota or auth |
|
|
208
|
+
| `--full` | Include quota account identity and source attempts |
|
|
209
|
+
| `--allow-keychain-prompt` | Permit macOS Claude Keychain access that could prompt |
|
|
210
|
+
| `-h`, `--help` | Print terse [AXI](https://axi.md) help |
|
|
211
|
+
| `-v`, `-V`, `--version` | Print version |
|
|
199
212
|
|
|
200
213
|
## Output Model
|
|
201
214
|
|
|
@@ -208,18 +221,21 @@ Default TOON output includes the same condition in an `advice` block with `provi
|
|
|
208
221
|
Quota windows include `id`, `label`, `kind`, optional percentages, optional reset fields, optional `windowSeconds`, and optional credit-spend fields.
|
|
209
222
|
Account identity and per-source `attempts` are omitted unless `--full` is passed.
|
|
210
223
|
Provider statuses are `fresh`, `stale`, `unavailable`, `auth_required`, `rate_limited`, or `error`.
|
|
211
|
-
Provider sources are `oauth`, `cli-rpc`, `api`, `web`, `cache`, or `unavailable`; current provider adapters emit `oauth`, `cli-rpc`, `cache`, and `unavailable`.
|
|
224
|
+
Provider sources are `oauth`, `cli-rpc`, `api`, `web`, `cache`, or `unavailable`; current provider adapters emit `oauth`, `cli-rpc`, `api`, `cache`, and `unavailable`.
|
|
212
225
|
Window kinds are `session`, `weekly`, `monthly`, `model`, `credits`, or `unknown`.
|
|
213
226
|
Source attempts use `success`, `failed`, or `skipped`.
|
|
214
227
|
Source attempts can include `credentialPresent` when a non-secret probe confirms a credential item exists.
|
|
215
228
|
Claude can report `five_hour`, `seven_day`, optional `seven_day_opus`, and optional `extra_usage` windows.
|
|
216
229
|
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.
|
|
217
230
|
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`.
|
|
231
|
+
Cursor can report `included_usage`, `auto_usage`, `api_usage`, and optional `spend_limit` windows.
|
|
232
|
+
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.
|
|
233
|
+
Grok can report `credits`, optional `on_demand`, and optional product-scoped `product:<slug>` windows.
|
|
218
234
|
`auth --json` emits `generatedAt`, `schemaVersion: 1`, and `auth`, where each provider report has `provider` and `sources`.
|
|
219
235
|
Auth source entries include `source`, optional `path`, `status`, and optional `error`.
|
|
220
236
|
Auth source entries can include `credentialPresent` when a non-secret probe confirms a credential item exists.
|
|
221
237
|
Auth source statuses are `available`, `missing`, `invalid`, `expired`, or `skipped`.
|
|
222
|
-
Auth source names are `oauth-file`, `keychain`, `auth-json`, and `cli-rpc`.
|
|
238
|
+
Auth source names are `oauth-file`, `keychain`, `auth-json`, `auth-env`, `apps-json`, `state-vscdb`, and `cli-rpc`.
|
|
223
239
|
|
|
224
240
|
## Security Posture
|
|
225
241
|
|
|
@@ -231,14 +247,21 @@ Without the flag or marker, quota-axi may perform a non-secret Keychain item pre
|
|
|
231
247
|
For Codex, it reads `$CODEX_HOME/auth.json` or `~/.codex/auth.json` before the read-only CLI fallback.
|
|
232
248
|
Codex `auth.json` support is OAuth-token only; API key values such as `OPENAI_API_KEY` are treated as invalid for quota usage calls and are not sent to ChatGPT usage endpoints.
|
|
233
249
|
It may run `codex -s read-only -a untrusted app-server` for Codex JSON-RPC fallback.
|
|
250
|
+
For Cursor, it reads `$CURSOR_STATE_DB` when set or the platform Cursor state database path, uses `sqlite3 -readonly` to read `cursorAuth` values, and calls Cursor's first-party dashboard usage endpoint.
|
|
251
|
+
If `sqlite3` is unavailable, Cursor auth is reported as skipped with `sqlite3_unavailable`.
|
|
252
|
+
For GitHub Copilot, it reads `$GITHUB_COPILOT_APPS_JSON` when set or the local Copilot apps auth file and calls GitHub's first-party Copilot user endpoint.
|
|
253
|
+
It only sends tokens associated with public GitHub hosts to that public endpoint; host-specific GitHub Enterprise tokens are treated as unavailable there.
|
|
254
|
+
For Grok, it reads `$GROK_AUTH_JSON`, inline `$GROK_AUTH`, `$GROK_AUTH_PATH`, or `$GROK_HOME/auth.json` / `~/.grok/auth.json`, selects session-scoped auth instead of API-key entries, and calls Grok's first-party billing endpoint.
|
|
255
|
+
For Grok, it may read `$GROK_HOME/version.json` or package metadata near a local `grok` executable to send an `x-grok-client-version` header, but it does not launch the Grok CLI.
|
|
234
256
|
It never launches the Claude CLI, so it cannot accidentally spend the quota it measures.
|
|
235
257
|
|
|
236
|
-
Direct HTTP requests go only to
|
|
258
|
+
Direct HTTP requests go only to first-party provider usage, quota, billing, or entitlement endpoints with the user's local credentials.
|
|
237
259
|
It sends credential values only to the first-party provider request they authenticate.
|
|
238
260
|
It never prints, logs, or caches credential values.
|
|
239
261
|
The quota cache lives at `~/.cache/quota-axi/quotas.json` (or under `$XDG_CACHE_HOME/quota-axi/` when `XDG_CACHE_HOME` is set), uses `0600` file permissions, and stores normalized non-secret snapshots only.
|
|
240
262
|
The Claude Keychain access marker lives alongside it as `claude-keychain-access-granted`, uses `0600` file permissions, and contains no credential material.
|
|
241
263
|
Only fresh provider snapshots with windows are cached.
|
|
264
|
+
Fresh provider reports with no windows clear any cached snapshot for that provider, so entitlement-only reports do not leave stale quota windows behind.
|
|
242
265
|
Failed providers, stale providers, account identity, and source attempts are not cached.
|
|
243
266
|
|
|
244
267
|
## Development
|
package/dist/src/cache.js
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { chmodSync, renameSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { cacheFilePath, ensurePrivateParent, readJsonFile } from "./lib/fs.js";
|
|
3
|
-
|
|
4
|
-
"claude",
|
|
5
|
-
"codex",
|
|
6
|
-
];
|
|
3
|
+
import { PROVIDER_IDS } from "./types.js";
|
|
7
4
|
const PROVIDER_SOURCES = [
|
|
8
5
|
"oauth",
|
|
9
6
|
"cli-rpc",
|
|
@@ -32,15 +29,24 @@ export function readCachedProvider(provider) {
|
|
|
32
29
|
return readCacheProviders().find((item) => item.provider === provider);
|
|
33
30
|
}
|
|
34
31
|
export function writeCachedProviders(providers) {
|
|
32
|
+
const clearProviders = new Set(providers
|
|
33
|
+
.filter((provider) => provider.state.status === "fresh" && provider.windows.length === 0)
|
|
34
|
+
.map((provider) => provider.provider));
|
|
35
35
|
const cacheable = providers
|
|
36
36
|
.map(toCacheProvider)
|
|
37
37
|
.filter((provider) => Boolean(provider));
|
|
38
|
-
if (cacheable.length === 0)
|
|
39
|
-
return;
|
|
40
38
|
const file = cacheFilePath();
|
|
41
39
|
const byProvider = new Map();
|
|
42
|
-
|
|
40
|
+
let clearedExisting = false;
|
|
41
|
+
for (const provider of readCacheProviders()) {
|
|
42
|
+
if (clearProviders.has(provider.provider)) {
|
|
43
|
+
clearedExisting = true;
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
43
46
|
byProvider.set(provider.provider, provider);
|
|
47
|
+
}
|
|
48
|
+
if (cacheable.length === 0 && !clearedExisting)
|
|
49
|
+
return;
|
|
44
50
|
for (const provider of cacheable)
|
|
45
51
|
byProvider.set(provider.provider, provider);
|
|
46
52
|
const merged = PROVIDER_IDS.map((provider) => byProvider.get(provider)).filter((provider) => Boolean(provider));
|
package/dist/src/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../src/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ProviderId } from "./types.js";
|
|
2
2
|
export declare const DESCRIPTION = "Report local agent-provider quota windows for routing-aware agents.";
|
|
3
|
-
export declare const TOP_HELP = "usage: quota-axi [auth] [flags]\ncommands[2]:\n (none)=quota, auth\nflags[6]:\n --provider <claude,codex>, --json, --full, --allow-keychain-prompt, --help, -v/--version\nexamples:\n quota-axi\n quota-axi --provider claude\n quota-axi --json\n quota-axi --full\n quota-axi auth\n";
|
|
3
|
+
export declare const TOP_HELP = "usage: quota-axi [auth] [flags]\ncommands[2]:\n (none)=quota, auth\nflags[6]:\n --provider <claude,codex,cursor,copilot,grok>, --json, --full, --allow-keychain-prompt, --help, -v/--version\nexamples:\n quota-axi\n quota-axi --provider claude\n quota-axi --provider cursor,copilot,grok\n quota-axi --json\n quota-axi --full\n quota-axi auth\n";
|
|
4
4
|
type MainOptions = {
|
|
5
5
|
argv?: string[];
|
|
6
6
|
stdout?: Pick<NodeJS.WriteStream, "write">;
|
package/dist/src/cli.js
CHANGED
|
@@ -11,10 +11,11 @@ export const TOP_HELP = `usage: quota-axi [auth] [flags]
|
|
|
11
11
|
commands[2]:
|
|
12
12
|
(none)=quota, auth
|
|
13
13
|
flags[6]:
|
|
14
|
-
--provider <claude,codex>, --json, --full, --allow-keychain-prompt, --help, -v/--version
|
|
14
|
+
--provider <claude,codex,cursor,copilot,grok>, --json, --full, --allow-keychain-prompt, --help, -v/--version
|
|
15
15
|
examples:
|
|
16
16
|
quota-axi
|
|
17
17
|
quota-axi --provider claude
|
|
18
|
+
quota-axi --provider cursor,copilot,grok
|
|
18
19
|
quota-axi --json
|
|
19
20
|
quota-axi --full
|
|
20
21
|
quota-axi auth
|
|
@@ -68,6 +69,9 @@ export function parseArgs(argv) {
|
|
|
68
69
|
let allowKeychainPrompt = false;
|
|
69
70
|
for (let index = 0; index < argv.length; index++) {
|
|
70
71
|
const arg = argv[index];
|
|
72
|
+
if (arg === "--") {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
71
75
|
if (arg === "auth") {
|
|
72
76
|
command = "auth";
|
|
73
77
|
continue;
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,eAAe,GAChB,MAAM,aAAa,CAAC;AASrB,MAAM,CAAC,MAAM,WAAW,GACtB,qEAAqE,CAAC;AAExE,MAAM,CAAC,MAAM,QAAQ,GAAG
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ChildProcess } from "node:child_process";
|
|
2
2
|
export declare function execFileText(command: string, args: string[], timeoutMs: number): Promise<string>;
|
|
3
3
|
export declare function commandExists(command: string): Promise<boolean>;
|
|
4
|
+
export declare function findCommandPath(command: string): Promise<string | undefined>;
|
|
4
5
|
export declare function terminateChild(child: ChildProcess): void;
|
package/dist/src/lib/process.js
CHANGED
|
@@ -14,14 +14,17 @@ export function execFileText(command, args, timeoutMs) {
|
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
16
|
export async function commandExists(command) {
|
|
17
|
+
return (await findCommandPath(command)) !== undefined;
|
|
18
|
+
}
|
|
19
|
+
export async function findCommandPath(command) {
|
|
17
20
|
const normalized = command.trim();
|
|
18
21
|
if (normalized.length === 0)
|
|
19
|
-
return
|
|
22
|
+
return undefined;
|
|
20
23
|
for (const candidate of commandPathCandidates(normalized)) {
|
|
21
24
|
if (await isExecutableFile(candidate))
|
|
22
|
-
return
|
|
25
|
+
return candidate;
|
|
23
26
|
}
|
|
24
|
-
return
|
|
27
|
+
return undefined;
|
|
25
28
|
}
|
|
26
29
|
function commandPathCandidates(command) {
|
|
27
30
|
if (hasPathSeparator(command))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/lib/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAqB,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,UAAU,YAAY,CAC1B,OAAe,EACf,IAAc,EACd,SAAiB;IAEjB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CACN,OAAO,EACP,IAAI,EACJ,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,EAAE,EAC9C,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAChB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1B,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAe;IACjD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../src/lib/process.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AuthProviderReport, ProviderAdapter, ProviderOptions, ProviderQuota, QuotaWindow } from "../types.js";
|
|
2
|
+
export declare const copilotAdapter: ProviderAdapter;
|
|
3
|
+
export declare function fetchQuota(_options: ProviderOptions): Promise<ProviderQuota>;
|
|
4
|
+
export declare function inspectAuth(_options: ProviderOptions): Promise<AuthProviderReport>;
|
|
5
|
+
export declare function normalizeCopilotUser(raw: unknown): {
|
|
6
|
+
plan?: string;
|
|
7
|
+
account?: ProviderQuota["account"];
|
|
8
|
+
windows: QuotaWindow[];
|
|
9
|
+
refreshedAt: string;
|
|
10
|
+
} | undefined;
|