@botiverse/oar 0.0.3 → 0.0.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.
@@ -1,29 +1,29 @@
1
1
  import type { AccountUsageReader, AccountUsageSnapshot } from "../../contracts/account-usage.js";
2
- export declare function projectClaudeUsage(content: string, referenceInstant?: Date, email?: string): AccountUsageSnapshot;
3
2
  /**
4
- * `claude -p /usage --output-format json` has two observed shapes.
5
- * Without login, `result` is only an invocation summary:
3
+ * Project the `/api/oauth/usage` payload. The authoritative shape is its
4
+ * `limits` array; a representative (subscription) response is:
6
5
  *
7
6
  * ```json
8
7
  * {
9
- * "type": "result",
10
- * "total_cost_usd": 0,
11
- * "usage": { "input_tokens": 0, "output_tokens": 0 },
12
- * "result": "Total cost: $0.0000\nUsage: 0 input, 0 output, 0 cache read, 0 cache write"
8
+ * "limits": [
9
+ * { "kind": "session", "group": "session", "percent": 17, "severity": "normal",
10
+ * "resets_at": "2026-08-26T13:49:59.725522+00:00", "scope": null, "is_active": false },
11
+ * { "kind": "weekly_all", "group": "weekly", "percent": 72, "severity": "normal",
12
+ * "resets_at": "2026-08-28T06:59:59.725547+00:00", "scope": null, "is_active": false },
13
+ * { "kind": "weekly_scoped", "group": "weekly", "percent": 100, "severity": "critical",
14
+ * "resets_at": "2026-08-28T06:59:59.725963+00:00",
15
+ * "scope": { "model": { "display_name": "Fable" } }, "is_active": true }
16
+ * ]
13
17
  * }
14
18
  * ```
15
- *
16
- * With a subscription login, `result` contains account usage windows:
17
- *
18
- * ```json
19
- * {
20
- * "type": "result",
21
- * "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"
22
- * }
23
- * ```
24
- *
25
- * Reset text has no year, so it is interpreted as the next occurrence in its
26
- * named IANA time zone relative to when the command result is projected.
19
+ */
20
+ export declare function projectClaudeUsage(payload: unknown, email?: string): AccountUsageSnapshot;
21
+ /**
22
+ * Reads Claude account usage in two steps: `claude auth status --json` for the
23
+ * login gate and account email, then a single read-only request to Anthropic's
24
+ * structured usage endpoint using the persisted `/login` OAuth token. This
25
+ * replaces the older `claude -p /usage` subprocess, which was slower and only
26
+ * returned pre-rendered text.
27
27
  */
28
28
  export declare const claudeAccountUsage: AccountUsageReader;
29
29
  //# sourceMappingURL=account-usage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"account-usage.d.ts","sourceRoot":"","sources":["../../../src/runtimes/claude/account-usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EAGrB,MAAM,kCAAkC,CAAC;AAgG1C,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,gBAAgB,GAAE,IAAiB,EACnC,KAAK,CAAC,EAAE,MAAM,GACb,oBAAoB,CA8BtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,kBAAkB,EAAE,kBA8ChC,CAAC"}
1
+ {"version":3,"file":"account-usage.d.ts","sourceRoot":"","sources":["../../../src/runtimes/claude/account-usage.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EAGrB,MAAM,kCAAkC,CAAC;AAqG1C;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,oBAAoB,CA6BzF;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,kBA0ChC,CAAC"}
@@ -1,140 +1,146 @@
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) {
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;
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;
91
126
  }
92
- const usedPercent = Number(percentage);
93
- if (!Number.isFinite(usedPercent) || usedPercent < 0 || usedPercent > 100) {
94
- continue;
95
- }
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",
109
133
  ...(email === undefined ? {} : { email }),
110
- rateLimited: windows.some((window) => window.usedRatio >= 1),
134
+ rateLimited,
111
135
  windows,
112
136
  };
113
137
  }
114
138
  /**
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.
139
+ * Reads Claude account usage in two steps: `claude auth status --json` for the
140
+ * login gate and account email, then a single read-only request to Anthropic's
141
+ * structured usage endpoint using the persisted `/login` OAuth token. This
142
+ * replaces the older `claude -p /usage` subprocess, which was slower and only
143
+ * returned pre-rendered text.
138
144
  */
139
145
  export const claudeAccountUsage = async (installation, options = {}) => {
140
146
  if (installation.via !== "executable") {
@@ -157,29 +163,24 @@ export const claudeAccountUsage = async (installation, options = {}) => {
157
163
  ? authStatus.email
158
164
  : undefined;
159
165
  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).
166
+ // An API key takes precedence over any claude.ai login, and API-key billing
167
+ // has no subscription usage windows.
163
168
  return { kind: "unsupported" };
164
169
  }
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");
170
+ const stored = await readStoredOAuth(timeoutMs);
171
+ if (stored === null || !stored.hasProfileScope) {
172
+ // No persisted profile-scoped login token means the usage endpoint would
173
+ // reject the request; treat it as needing a fresh `/login`.
174
+ return { kind: "reauth_required" };
175
+ }
176
+ const response = await fetchUsage(stored.accessToken, installation.version ?? "0.0.0", timeoutMs);
177
+ if (response.status === 401 || response.status === 403) {
178
+ return { kind: "reauth_required" };
178
179
  }
179
- const content = resultText(usage.stdout);
180
- if (content === null) {
181
- throw new Error("Claude returned no account usage result");
180
+ if (!response.ok) {
181
+ throw new Error(`Claude usage endpoint returned HTTP ${response.status}`);
182
182
  }
183
- return projectClaudeUsage(content, new Date(), email);
183
+ const payload = parseJson(await response.text());
184
+ return projectClaudeUsage(payload, email);
184
185
  };
185
186
  //# 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@botiverse/oar",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "Provider-independent contracts for observing agent runtimes",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",