@botiverse/oar 0.0.3 → 0.0.5

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.
Files changed (115) hide show
  1. package/README.md +15 -4
  2. package/dist/contracts/account-usage.d.ts +1 -0
  3. package/dist/contracts/account-usage.d.ts.map +1 -1
  4. package/dist/contracts/model-catalog.d.ts +51 -0
  5. package/dist/contracts/model-catalog.d.ts.map +1 -0
  6. package/dist/contracts/model-catalog.js +9 -0
  7. package/dist/contracts/model-catalog.js.map +1 -0
  8. package/dist/contracts/provider-auth.d.ts +77 -0
  9. package/dist/contracts/provider-auth.d.ts.map +1 -0
  10. package/dist/contracts/provider-auth.js +9 -0
  11. package/dist/contracts/provider-auth.js.map +1 -0
  12. package/dist/index.d.ts +12 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +17 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/runtimes/claude/account-usage.d.ts +21 -19
  17. package/dist/runtimes/claude/account-usage.d.ts.map +1 -1
  18. package/dist/runtimes/claude/account-usage.js +153 -131
  19. package/dist/runtimes/claude/account-usage.js.map +1 -1
  20. package/dist/runtimes/codex/account-usage.d.ts +21 -0
  21. package/dist/runtimes/codex/account-usage.d.ts.map +1 -1
  22. package/dist/runtimes/codex/account-usage.js +27 -10
  23. package/dist/runtimes/codex/account-usage.js.map +1 -1
  24. package/dist/runtimes/grok/account-usage.d.ts +6 -0
  25. package/dist/runtimes/grok/account-usage.d.ts.map +1 -0
  26. package/dist/runtimes/grok/account-usage.js +142 -0
  27. package/dist/runtimes/grok/account-usage.js.map +1 -0
  28. package/dist/runtimes/grok/index.d.ts +9 -0
  29. package/dist/runtimes/grok/index.d.ts.map +1 -0
  30. package/dist/runtimes/grok/index.js +13 -0
  31. package/dist/runtimes/grok/index.js.map +1 -0
  32. package/dist/runtimes/grok/installation.d.ts +4 -0
  33. package/dist/runtimes/grok/installation.d.ts.map +1 -0
  34. package/dist/runtimes/grok/installation.js +19 -0
  35. package/dist/runtimes/grok/installation.js.map +1 -0
  36. package/dist/runtimes/grok/session.d.ts +10 -0
  37. package/dist/runtimes/grok/session.d.ts.map +1 -0
  38. package/dist/runtimes/grok/session.js +66 -0
  39. package/dist/runtimes/grok/session.js.map +1 -0
  40. package/dist/runtimes/kimi/account-usage.d.ts +9 -0
  41. package/dist/runtimes/kimi/account-usage.d.ts.map +1 -0
  42. package/dist/runtimes/kimi/account-usage.js +241 -0
  43. package/dist/runtimes/kimi/account-usage.js.map +1 -0
  44. package/dist/runtimes/kimi/auth-config.d.ts +12 -0
  45. package/dist/runtimes/kimi/auth-config.d.ts.map +1 -0
  46. package/dist/runtimes/kimi/auth-config.js +90 -0
  47. package/dist/runtimes/kimi/auth-config.js.map +1 -0
  48. package/dist/runtimes/kimi/index.d.ts +9 -0
  49. package/dist/runtimes/kimi/index.d.ts.map +1 -0
  50. package/dist/runtimes/kimi/index.js +13 -0
  51. package/dist/runtimes/kimi/index.js.map +1 -0
  52. package/dist/runtimes/kimi/installation.d.ts +4 -0
  53. package/dist/runtimes/kimi/installation.d.ts.map +1 -0
  54. package/dist/runtimes/kimi/installation.js +18 -0
  55. package/dist/runtimes/kimi/installation.js.map +1 -0
  56. package/dist/runtimes/kimi/oauth-token.d.ts +12 -0
  57. package/dist/runtimes/kimi/oauth-token.d.ts.map +1 -0
  58. package/dist/runtimes/kimi/oauth-token.js +38 -0
  59. package/dist/runtimes/kimi/oauth-token.js.map +1 -0
  60. package/dist/runtimes/kimi/session.d.ts +7 -0
  61. package/dist/runtimes/kimi/session.d.ts.map +1 -0
  62. package/dist/runtimes/kimi/session.js +39 -0
  63. package/dist/runtimes/kimi/session.js.map +1 -0
  64. package/dist/runtimes/pi/auth.d.ts +16 -0
  65. package/dist/runtimes/pi/auth.d.ts.map +1 -0
  66. package/dist/runtimes/pi/auth.js +124 -0
  67. package/dist/runtimes/pi/auth.js.map +1 -0
  68. package/dist/runtimes/pi/catalog.d.ts +10 -0
  69. package/dist/runtimes/pi/catalog.d.ts.map +1 -0
  70. package/dist/runtimes/pi/catalog.js +66 -0
  71. package/dist/runtimes/pi/catalog.js.map +1 -0
  72. package/dist/shared/acp/errors.d.ts +16 -0
  73. package/dist/shared/acp/errors.d.ts.map +1 -0
  74. package/dist/shared/acp/errors.js +25 -0
  75. package/dist/shared/acp/errors.js.map +1 -0
  76. package/dist/shared/acp/process.d.ts +24 -0
  77. package/dist/shared/acp/process.d.ts.map +1 -0
  78. package/dist/shared/acp/process.js +88 -0
  79. package/dist/shared/acp/process.js.map +1 -0
  80. package/dist/shared/acp/profile.d.ts +36 -0
  81. package/dist/shared/acp/profile.d.ts.map +1 -0
  82. package/dist/shared/acp/profile.js +104 -0
  83. package/dist/shared/acp/profile.js.map +1 -0
  84. package/dist/shared/acp/projection.d.ts +21 -0
  85. package/dist/shared/acp/projection.d.ts.map +1 -0
  86. package/dist/shared/acp/projection.js +160 -0
  87. package/dist/shared/acp/projection.js.map +1 -0
  88. package/dist/shared/acp/session.d.ts +5 -0
  89. package/dist/shared/acp/session.d.ts.map +1 -0
  90. package/dist/shared/acp/session.js +254 -0
  91. package/dist/shared/acp/session.js.map +1 -0
  92. package/dist/shared/acp/terminal.d.ts +17 -0
  93. package/dist/shared/acp/terminal.d.ts.map +1 -0
  94. package/dist/shared/acp/terminal.js +193 -0
  95. package/dist/shared/acp/terminal.js.map +1 -0
  96. package/dist/shared/executable/index.d.ts +0 -1
  97. package/dist/shared/executable/index.d.ts.map +1 -1
  98. package/dist/shared/executable/index.js.map +1 -1
  99. package/dist/shared/executable/process.d.ts +16 -15
  100. package/dist/shared/executable/process.d.ts.map +1 -1
  101. package/dist/shared/executable/process.js +46 -32
  102. package/dist/shared/executable/process.js.map +1 -1
  103. package/dist/shared/executable/resolve.d.ts +2 -15
  104. package/dist/shared/executable/resolve.d.ts.map +1 -1
  105. package/dist/shared/executable/resolve.js +4 -61
  106. package/dist/shared/executable/resolve.js.map +1 -1
  107. package/dist/shared/executable/version.d.ts +1 -1
  108. package/dist/shared/executable/version.d.ts.map +1 -1
  109. package/dist/shared/executable/version.js +2 -2
  110. package/dist/shared/executable/version.js.map +1 -1
  111. package/dist/shared/installation.d.ts +6 -1
  112. package/dist/shared/installation.d.ts.map +1 -1
  113. package/dist/shared/installation.js +11 -9
  114. package/dist/shared/installation.js.map +1 -1
  115. package/package.json +6 -3
@@ -1,140 +1,166 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { homedir, platform } from "node:os";
3
+ import { join } from "node:path";
1
4
  import { runExecutable } from "../../shared/executable/index.js";
2
5
  import { utcInstantFromDate } from "../../shared/instant.js";
3
- import { asRecord, parseJson } from "../../shared/json.js";
4
- const MONTHS = new Map([
5
- ["Jan", 0], ["Feb", 1], ["Mar", 2], ["Apr", 3], ["May", 4], ["Jun", 5],
6
- ["Jul", 6], ["Aug", 7], ["Sep", 8], ["Oct", 9], ["Nov", 10], ["Dec", 11],
7
- ]);
8
- function zonedParts(instant, timeZone) {
6
+ import { asNumber, asRecord, parseJson } from "../../shared/json.js";
7
+ const USAGE_ENDPOINT = "https://api.anthropic.com/api/oauth/usage";
8
+ // The structured usage endpoint is gated behind the OAuth beta and requires a
9
+ // full `/login` token carrying the `user:profile` scope. Inference-only tokens
10
+ // (env CLAUDE_CODE_OAUTH_TOKEN / injected FDs) lack that scope, so this reader
11
+ // only consults the persisted login credential.
12
+ const OAUTH_BETA = "oauth-2025-04-20";
13
+ const PROFILE_SCOPE = "user:profile";
14
+ function parseStoredOAuth(raw) {
15
+ const oauth = asRecord(asRecord(parseJson(raw))?.claudeAiOauth);
16
+ const accessToken = oauth?.accessToken;
17
+ if (typeof accessToken !== "string" || accessToken.length === 0) {
18
+ return null;
19
+ }
20
+ const scopes = oauth?.scopes;
21
+ const hasProfileScope = Array.isArray(scopes) && scopes.includes(PROFILE_SCOPE);
22
+ return { accessToken, hasProfileScope };
23
+ }
24
+ function credentialsFilePath() {
25
+ const base = process.env.CLAUDE_CONFIG_DIR ?? join(homedir(), ".claude");
26
+ return join(base, ".credentials.json");
27
+ }
28
+ /**
29
+ * Read Claude Code's persisted `/login` OAuth credential, mirroring the
30
+ * `getClaudeAIOAuthTokens()` fallback: the plaintext credentials file (Linux,
31
+ * and the macOS/Windows fallback), then the macOS Keychain, which stores the
32
+ * same JSON blob. Any failure degrades to `null` — never throws.
33
+ */
34
+ async function readStoredOAuth(timeoutMs) {
9
35
  try {
10
- const parts = new Intl.DateTimeFormat("en-CA", {
11
- timeZone,
12
- calendar: "gregory",
13
- numberingSystem: "latn",
14
- year: "numeric",
15
- month: "2-digit",
16
- day: "2-digit",
17
- hour: "2-digit",
18
- minute: "2-digit",
19
- hourCycle: "h23",
20
- }).formatToParts(instant);
21
- const values = Object.fromEntries(parts.map((part) => [part.type, part.value]));
22
- const result = {
23
- year: Number(values.year),
24
- month: Number(values.month) - 1,
25
- day: Number(values.day),
26
- hour: Number(values.hour),
27
- minute: Number(values.minute),
28
- };
29
- return Object.values(result).every((value) => Number.isFinite(value)) ? result : null;
36
+ return parseStoredOAuth(readFileSync(credentialsFilePath(), "utf8"));
30
37
  }
31
38
  catch {
32
- return null;
39
+ // No file (or unreadable): fall through to the platform keystore.
33
40
  }
34
- }
35
- function localInstant(value, timeZone) {
36
- const target = Date.UTC(value.year, value.month, value.day, value.hour, value.minute);
37
- let instant = target;
38
- for (let attempt = 0; attempt < 4; attempt += 1) {
39
- const observed = zonedParts(instant, timeZone);
40
- if (observed === null) {
41
- return null;
42
- }
43
- const correction = target
44
- - Date.UTC(observed.year, observed.month, observed.day, observed.hour, observed.minute);
45
- if (correction === 0) {
46
- return instant;
41
+ if (platform() === "darwin") {
42
+ const keychain = await runExecutable("security", ["find-generic-password", "-w", "-s", "Claude Code-credentials"], { timeoutMs });
43
+ if (keychain.ok) {
44
+ try {
45
+ return parseStoredOAuth(keychain.stdout);
46
+ }
47
+ catch {
48
+ return null;
49
+ }
47
50
  }
48
- instant += correction;
49
51
  }
50
52
  return null;
51
53
  }
52
- function resetInstant(resetText, referenceInstant) {
53
- const match = /^(\w{3}) (\d{1,2}) at (\d{1,2}):(\d{2})(am|pm) \(([^)]+)\)$/u.exec(resetText);
54
- const month = MONTHS.get(match?.[1] ?? "");
55
- const day = Number(match?.[2]);
56
- const twelveHour = Number(match?.[3]);
57
- const minute = Number(match?.[4]);
58
- const meridiem = match?.[5];
59
- const timeZone = match?.[6];
60
- if (month === undefined || timeZone === undefined || day < 1 || day > 31
61
- || twelveHour < 1 || twelveHour > 12 || minute < 0 || minute > 59
62
- || (meridiem !== "am" && meridiem !== "pm")) {
63
- return null;
54
+ function usageWindowLabel(kind, scope) {
55
+ const modelName = asRecord(scope?.model)?.display_name;
56
+ switch (kind) {
57
+ case "session":
58
+ return "Current session";
59
+ case "weekly_all":
60
+ return "Current week (all models)";
61
+ case "weekly_scoped":
62
+ return typeof modelName === "string" ? `Current week (${modelName})` : "Current week";
63
+ default:
64
+ return typeof kind === "string" && kind.length > 0 ? kind : "Usage limit";
64
65
  }
65
- const reference = zonedParts(referenceInstant.getTime(), timeZone);
66
- if (reference === null) {
67
- return null;
66
+ }
67
+ async function fetchUsage(accessToken, version, timeoutMs) {
68
+ try {
69
+ return await fetch(USAGE_ENDPOINT, {
70
+ headers: {
71
+ "Authorization": `Bearer ${accessToken}`,
72
+ "anthropic-beta": OAUTH_BETA,
73
+ "Content-Type": "application/json",
74
+ "User-Agent": `claude-code/${version}`,
75
+ },
76
+ signal: AbortSignal.timeout(Math.min(timeoutMs, 5000)),
77
+ });
68
78
  }
69
- const hour = twelveHour % 12 + (meridiem === "pm" ? 12 : 0);
70
- const cutoff = referenceInstant.getTime() - 60_000;
71
- for (const year of [reference.year, reference.year + 1]) {
72
- const instant = localInstant({ year, month, day, hour, minute }, timeZone);
73
- if (instant !== null && instant >= cutoff) {
74
- return utcInstantFromDate(new Date(instant));
75
- }
79
+ catch (error) {
80
+ throw new Error("Failed to reach Claude usage endpoint", { cause: error });
76
81
  }
77
- return null;
78
82
  }
79
- function resultText(stdout) {
80
- const result = asRecord(parseJson(stdout))?.result;
81
- return typeof result === "string" && result.trim().length > 0 ? result : null;
83
+ function resetInstant(value) {
84
+ if (typeof value !== "string") {
85
+ return null;
86
+ }
87
+ const date = new Date(value);
88
+ return Number.isNaN(date.getTime()) ? null : utcInstantFromDate(date);
82
89
  }
83
- export function projectClaudeUsage(content, referenceInstant = new Date(), email) {
90
+ /**
91
+ * Project the `/api/oauth/usage` payload. The authoritative shape is its
92
+ * `limits` array; a representative (subscription) response is:
93
+ *
94
+ * ```json
95
+ * {
96
+ * "limits": [
97
+ * { "kind": "session", "group": "session", "percent": 17, "severity": "normal",
98
+ * "resets_at": "2026-08-26T13:49:59.725522+00:00", "scope": null, "is_active": false },
99
+ * { "kind": "weekly_all", "group": "weekly", "percent": 72, "severity": "normal",
100
+ * "resets_at": "2026-08-28T06:59:59.725547+00:00", "scope": null, "is_active": false },
101
+ * { "kind": "weekly_scoped", "group": "weekly", "percent": 100, "severity": "critical",
102
+ * "resets_at": "2026-08-28T06:59:59.725963+00:00",
103
+ * "scope": { "model": { "display_name": "Fable" } }, "is_active": true }
104
+ * ]
105
+ * }
106
+ * ```
107
+ */
108
+ export function projectClaudeUsage(payload, email, plan) {
109
+ const limits = asRecord(payload)?.limits;
84
110
  const windows = [];
85
- for (const line of content.split(/\r?\n/u)) {
86
- const match = /^(.+?): (\d+(?:\.\d+)?)% used(?: · resets (.+))?$/u.exec(line.trim());
87
- const label = match?.[1];
88
- const percentage = match?.[2];
89
- if (label === undefined || percentage === undefined) {
90
- continue;
91
- }
92
- const usedPercent = Number(percentage);
93
- if (!Number.isFinite(usedPercent) || usedPercent < 0 || usedPercent > 100) {
94
- continue;
111
+ let rateLimited = false;
112
+ if (Array.isArray(limits)) {
113
+ for (const entry of limits) {
114
+ const limit = asRecord(entry);
115
+ const percent = asNumber(limit?.percent);
116
+ if (limit === null || percent === null || percent < 0) {
117
+ continue;
118
+ }
119
+ const resetsAt = resetInstant(limit.resets_at);
120
+ windows.push({
121
+ label: usageWindowLabel(limit.kind, asRecord(limit.scope)),
122
+ usedRatio: Number((percent / 100).toFixed(6)),
123
+ ...(resetsAt === null ? {} : { resetsAt }),
124
+ });
125
+ rateLimited ||= limit.severity === "critical" || percent >= 100;
95
126
  }
96
- const resetText = match?.[3];
97
- const resetsAt = resetText === undefined ? null : resetInstant(resetText, referenceInstant);
98
- windows.push({
99
- label,
100
- usedRatio: Number((usedPercent / 100).toFixed(6)),
101
- ...(resetsAt === null ? {} : { resetsAt }),
102
- });
103
127
  }
104
128
  if (windows.length === 0) {
105
- throw new Error("Claude returned no usable account usage windows");
129
+ throw new Error("Claude usage endpoint returned no usable windows");
106
130
  }
107
131
  return {
108
132
  kind: "available",
133
+ ...(plan === undefined ? {} : { plan }),
109
134
  ...(email === undefined ? {} : { email }),
110
- rateLimited: windows.some((window) => window.usedRatio >= 1),
135
+ rateLimited,
111
136
  windows,
112
137
  };
113
138
  }
139
+ /** Extract Claude Code's explicit subscription tier from a confirmed login. */
140
+ export function claudeAccountPlan(payload) {
141
+ const authStatus = asRecord(payload);
142
+ if (authStatus?.loggedIn !== true || typeof authStatus.subscriptionType !== "string") {
143
+ return undefined;
144
+ }
145
+ const plan = authStatus.subscriptionType.trim();
146
+ return plan.length > 0 ? plan : undefined;
147
+ }
148
+ function isConfirmedNonSubscriptionLogin(authStatus) {
149
+ if (typeof authStatus.apiKeySource === "string") {
150
+ return true;
151
+ }
152
+ // Claude Code reports externally supplied auth tokens (including custom API
153
+ // endpoints) as `oauth_token`. They authenticate inference, not a claude.ai
154
+ // subscription, so the profile-scoped usage endpoint is inapplicable.
155
+ return typeof authStatus.authMethod === "string"
156
+ && authStatus.authMethod !== "claude.ai";
157
+ }
114
158
  /**
115
- * `claude -p /usage --output-format json` has two observed shapes.
116
- * Without login, `result` is only an invocation summary:
117
- *
118
- * ```json
119
- * {
120
- * "type": "result",
121
- * "total_cost_usd": 0,
122
- * "usage": { "input_tokens": 0, "output_tokens": 0 },
123
- * "result": "Total cost: $0.0000\nUsage: 0 input, 0 output, 0 cache read, 0 cache write"
124
- * }
125
- * ```
126
- *
127
- * With a subscription login, `result` contains account usage windows:
128
- *
129
- * ```json
130
- * {
131
- * "type": "result",
132
- * "result": "You are currently using your subscription to power your Claude Code usage\n\nCurrent session: 7% used · resets Aug 21 at 7:39pm (Asia/Shanghai)\nCurrent week (all models): 0% used · resets Aug 28 at 2:59pm (Asia/Shanghai)\nCurrent week (Fable): 0% used"
133
- * }
134
- * ```
135
- *
136
- * Reset text has no year, so it is interpreted as the next occurrence in its
137
- * named IANA time zone relative to when the command result is projected.
159
+ * Reads Claude account usage in two steps: `claude auth status --json` for the
160
+ * login gate and account email, then a single read-only request to Anthropic's
161
+ * structured usage endpoint using the persisted `/login` OAuth token. This
162
+ * replaces the older `claude -p /usage` subprocess, which was slower and only
163
+ * returned pre-rendered text.
138
164
  */
139
165
  export const claudeAccountUsage = async (installation, options = {}) => {
140
166
  if (installation.via !== "executable") {
@@ -156,30 +182,26 @@ export const claudeAccountUsage = async (installation, options = {}) => {
156
182
  const email = authStatus?.loggedIn === true && typeof authStatus.email === "string"
157
183
  ? authStatus.email
158
184
  : undefined;
159
- if (typeof authStatus?.apiKeySource === "string") {
160
- // An API key takes precedence over any claude.ai login, and API-key
161
- // billing has no subscription usage windows /usage would return only a
162
- // cost report (pinned by the claude vendor usage test).
185
+ const plan = claudeAccountPlan(authStatus);
186
+ if (authStatus?.loggedIn === true && isConfirmedNonSubscriptionLogin(authStatus)) {
187
+ // Inference credentials take precedence over any claude.ai login, and
188
+ // non-subscription billing has no profile usage windows.
163
189
  return { kind: "unsupported" };
164
190
  }
165
- const usage = await runExecutable(command, ["-p", "/usage", "--output-format", "json"], {
166
- env,
167
- timeoutMs,
168
- });
169
- if (!usage.ok && usage.exitCode === null) {
170
- throw new Error("Failed to execute Claude account usage");
171
- }
172
- if (!usage.ok) {
173
- const output = `${usage.stdout}\n${usage.stderr}`;
174
- if (/auth(?:entication)?\s*(?:missing|required)|log(?:ged)?\s*in/iu.test(output)) {
175
- return { kind: "reauth_required" };
176
- }
177
- throw new Error("Claude account usage command failed");
191
+ const stored = await readStoredOAuth(timeoutMs);
192
+ if (stored === null || !stored.hasProfileScope) {
193
+ // No persisted profile-scoped login token means the usage endpoint would
194
+ // reject the request; treat it as needing a fresh `/login`.
195
+ return { kind: "reauth_required" };
196
+ }
197
+ const response = await fetchUsage(stored.accessToken, installation.version ?? "0.0.0", timeoutMs);
198
+ if (response.status === 401 || response.status === 403) {
199
+ return { kind: "reauth_required" };
178
200
  }
179
- const content = resultText(usage.stdout);
180
- if (content === null) {
181
- throw new Error("Claude returned no account usage result");
201
+ if (!response.ok) {
202
+ throw new Error(`Claude usage endpoint returned HTTP ${response.status}`);
182
203
  }
183
- return projectClaudeUsage(content, new Date(), email);
204
+ const payload = parseJson(await response.text());
205
+ return projectClaudeUsage(payload, email, plan);
184
206
  };
185
207
  //# sourceMappingURL=account-usage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"account-usage.js","sourceRoot":"","sources":["../../../src/runtimes/claude/account-usage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account-usage.js","sourceRoot":"","sources":["../../../src/runtimes/claude/account-usage.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,17 @@
1
1
  import type { AccountUsageReader, AccountUsageSnapshot } from "../../contracts/account-usage.js";
2
+ import { type AppServerClient } from "./app-server-client.js";
3
+ type ReadOutcome = {
4
+ readonly kind: "ok";
5
+ readonly result: unknown;
6
+ readonly email: string | undefined;
7
+ } | {
8
+ readonly kind: "reauth_required";
9
+ } | {
10
+ readonly kind: "unsupported";
11
+ } | {
12
+ readonly kind: "error";
13
+ };
14
+ type StartAppServerClient = (command: string) => AppServerClient;
2
15
  /**
3
16
  * Native evidence comes from `codex app-server --listen stdio://`, followed by
4
17
  * `initialize` and `account/rateLimits/read`. `rateLimits` is the
@@ -48,5 +61,13 @@ export declare function projectCodexUsage(result: unknown, email?: string): Acco
48
61
  * API-key account is dropped per the owner's `type === "chatgpt"` requirement.
49
62
  */
50
63
  export declare function accountEmail(result: unknown): string | undefined;
64
+ /**
65
+ * Codex exposes ChatGPT rate-limit windows only for a ChatGPT account. API-key
66
+ * and provider-managed runtimes are valid, but have no subscription usage for
67
+ * this capability to report.
68
+ */
69
+ export declare function isNonSubscriptionAccount(result: unknown): boolean;
70
+ export declare function readFromAppServer(command: string, timeoutMs: number, startClient?: StartAppServerClient): Promise<ReadOutcome>;
51
71
  export declare const codexAccountUsage: AccountUsageReader;
72
+ export {};
52
73
  //# sourceMappingURL=account-usage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"account-usage.d.ts","sourceRoot":"","sources":["../../../src/runtimes/codex/account-usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EAErB,MAAM,kCAAkC,CAAC;AA2E1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,oBAAoB,CA6CvF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAMhE;AAuCD,eAAO,MAAM,iBAAiB,EAAE,kBAgB/B,CAAC"}
1
+ {"version":3,"file":"account-usage.d.ts","sourceRoot":"","sources":["../../../src/runtimes/codex/account-usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EAErB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGpF,KAAK,WAAW,GACZ;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GACrF;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,GACpC;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE,GAChC;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAE/B,KAAK,oBAAoB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,eAAe,CAAC;AAmEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,oBAAoB,CA6CvF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAMhE;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAMjE;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,oBAA2C,GACvD,OAAO,CAAC,WAAW,CAAC,CA0CtB;AAED,eAAO,MAAM,iBAAiB,EAAE,kBAgB/B,CAAC"}
@@ -155,8 +155,20 @@ export function accountEmail(result) {
155
155
  }
156
156
  return account.email;
157
157
  }
158
- async function readFromAppServer(command, timeoutMs) {
159
- const client = startAppServerClient(command);
158
+ /**
159
+ * Codex exposes ChatGPT rate-limit windows only for a ChatGPT account. API-key
160
+ * and provider-managed runtimes are valid, but have no subscription usage for
161
+ * this capability to report.
162
+ */
163
+ export function isNonSubscriptionAccount(result) {
164
+ const root = asRecord(result);
165
+ const account = asRecord(root?.account);
166
+ return account?.type === "apiKey"
167
+ || account?.type === "amazonBedrock"
168
+ || root?.requiresOpenaiAuth === false;
169
+ }
170
+ export async function readFromAppServer(command, timeoutMs, startClient = startAppServerClient) {
171
+ const client = startClient(command);
160
172
  const deadline = setTimeout(() => {
161
173
  client.kill();
162
174
  }, timeoutMs);
@@ -166,18 +178,23 @@ async function readFromAppServer(command, timeoutMs) {
166
178
  capabilities: { experimentalApi: true },
167
179
  });
168
180
  client.notify("initialized", {});
169
- const result = await client.request("account/rateLimits/read", {});
170
- // Account identity is a best-effort add-on: a failure here (older
171
- // app-server without the method, or a transient error) must not lose the
172
- // rate-limit snapshot we already have.
173
- let email = undefined;
181
+ // Read auth mode before the ChatGPT-only rate-limit endpoint. In API-key
182
+ // mode that endpoint rejects with "ChatGPT authentication required" even
183
+ // though Codex itself is correctly authenticated; treating that as expired
184
+ // OAuth would tell the user to perform a login that cannot fix the state.
185
+ let account = undefined;
174
186
  try {
175
- email = accountEmail(await client.request("account/read", {}));
187
+ account = await client.request("account/read", {});
176
188
  }
177
189
  catch {
178
- email = undefined;
190
+ // Older app-servers may not expose account/read. Preserve the existing
191
+ // rate-limit read in that case instead of making identity mandatory.
192
+ }
193
+ if (isNonSubscriptionAccount(account)) {
194
+ return { kind: "unsupported" };
179
195
  }
180
- return { kind: "ok", result, email };
196
+ const result = await client.request("account/rateLimits/read", {});
197
+ return { kind: "ok", result, email: accountEmail(account) };
181
198
  }
182
199
  catch (error) {
183
200
  const message = error instanceof Error ? error.message : "";
@@ -1 +1 @@
1
- {"version":3,"file":"account-usage.js","sourceRoot":"","sources":["../../../src/runtimes/codex/account-usage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account-usage.js","sourceRoot":"","sources":["../../../src/runtimes/codex/account-usage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { AccountUsageReader, AccountUsageSnapshot } from "../../contracts/account-usage.js";
2
+ /** Extract identity only from Grok's authenticated `_x.ai/auth/info` result. */
3
+ export declare function grokAccountEmail(result: unknown): string | undefined;
4
+ export declare function projectGrokUsage(result: unknown, email?: string): AccountUsageSnapshot;
5
+ export declare const grokAccountUsage: AccountUsageReader;
6
+ //# sourceMappingURL=account-usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-usage.d.ts","sourceRoot":"","sources":["../../../src/runtimes/grok/account-usage.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EAErB,MAAM,kCAAkC,CAAC;AAyB1C,gFAAgF;AAChF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAOpE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAoDtF;AAgFD,eAAO,MAAM,gBAAgB,EAAE,kBAkB9B,CAAC"}