@ironbee-ai/cli 0.14.0 → 0.14.1
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/CHANGELOG.md +6 -0
- package/dist/clients/claude/hooks/session-status.d.ts +5 -0
- package/dist/clients/claude/hooks/session-status.d.ts.map +1 -1
- package/dist/clients/claude/hooks/session-status.js +120 -17
- package/dist/clients/claude/hooks/session-status.js.map +1 -1
- package/dist/clients/claude/oauth.d.ts +96 -0
- package/dist/clients/claude/oauth.d.ts.map +1 -0
- package/dist/clients/claude/oauth.js +290 -0
- package/dist/clients/claude/oauth.js.map +1 -0
- package/dist/commands/claude.d.ts +30 -0
- package/dist/commands/claude.d.ts.map +1 -0
- package/dist/commands/claude.js +188 -0
- package/dist/commands/claude.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts +41 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +42 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/tui/config/schema.d.ts.map +1 -1
- package/dist/tui/config/schema.js +19 -0
- package/dist/tui/config/schema.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readKeychainCredential = readKeychainCredential;
|
|
4
|
+
exports.parseClaudeOauthBlob = parseClaudeOauthBlob;
|
|
5
|
+
exports.resolveClaudeOauthToken = resolveClaudeOauthToken;
|
|
6
|
+
exports.readClaudeOauthToken = readClaudeOauthToken;
|
|
7
|
+
exports.mapOauthUsageToRateLimits = mapOauthUsageToRateLimits;
|
|
8
|
+
exports.oauthGet = oauthGet;
|
|
9
|
+
exports.fetchOauthUsage = fetchOauthUsage;
|
|
10
|
+
exports.summarizeOauthProfile = summarizeOauthProfile;
|
|
11
|
+
exports.fetchOauthProfile = fetchOauthProfile;
|
|
12
|
+
exports.fetchClaudeRateLimits = fetchClaudeRateLimits;
|
|
13
|
+
/**
|
|
14
|
+
* Claude OAuth access — read the Claude Code OAuth token and call OAuth-scoped
|
|
15
|
+
* Anthropic endpoints (`api.anthropic.com/api/oauth/*`).
|
|
16
|
+
*
|
|
17
|
+
* Why this exists: some signals are only reachable with the user's OAuth token.
|
|
18
|
+
* The first consumer is the statusline rate-limit fallback — the Claude Code
|
|
19
|
+
* statusline JSON only carries subscription `rate_limits` for Pro / Max plans
|
|
20
|
+
* (and only after the first API response); team / enterprise plans never get
|
|
21
|
+
* them. `/api/oauth/usage` returns the same utilization data regardless of
|
|
22
|
+
* plan. `/api/oauth/profile` (authoritative plan / org) is exposed for the
|
|
23
|
+
* `status` command and future consumers.
|
|
24
|
+
*
|
|
25
|
+
* This is the read side of the `claude.oauthAccess` capability (default-on,
|
|
26
|
+
* opt-out via `ironbee claude oauth-access disable`). We are a PASSIVE reader:
|
|
27
|
+
* we never refresh or write back the token (that's Claude Code's job — during
|
|
28
|
+
* an active session the keychain token is kept fresh, which is exactly when the
|
|
29
|
+
* statusline ticks). Every failure path returns null so callers never break.
|
|
30
|
+
*
|
|
31
|
+
* Credential-reading + keychain error mapping adapted from opencode-claude-auth.
|
|
32
|
+
*/
|
|
33
|
+
const child_process_1 = require("child_process");
|
|
34
|
+
const fs_1 = require("fs");
|
|
35
|
+
const os_1 = require("os");
|
|
36
|
+
const path_1 = require("path");
|
|
37
|
+
const logger_1 = require("../../lib/logger");
|
|
38
|
+
const KEYCHAIN_SERVICE = "Claude Code-credentials";
|
|
39
|
+
const OAUTH_BASE = "https://api.anthropic.com/api/oauth";
|
|
40
|
+
/** The OAuth-scoped endpoints require this beta header (matches Claude Code). */
|
|
41
|
+
const OAUTH_BETA = "oauth-2025-04-20";
|
|
42
|
+
const DEFAULT_FETCH_TIMEOUT_MS = 2500;
|
|
43
|
+
/**
|
|
44
|
+
* Read the Claude Code credential blob from the macOS login Keychain via the
|
|
45
|
+
* `security` CLI. Exit-code mapping mirrors opencode-claude-auth's keychain.ts:
|
|
46
|
+
* 44 → item not found · 36 → keychain locked · 128 → access denied ·
|
|
47
|
+
* killed / ETIMEDOUT → timeout (seen on macOS Tahoe) · else → generic error.
|
|
48
|
+
*
|
|
49
|
+
* Using the `security` binary (not a node keychain lib) is deliberate: the
|
|
50
|
+
* Keychain ACL identifies the requesting app by code signature, and `security`
|
|
51
|
+
* is a stable Apple-signed binary — so once the user grants "Always Allow",
|
|
52
|
+
* the grant survives IronBee version updates (a node-lib request would re-key
|
|
53
|
+
* on the changing node/ironbee binary and re-prompt).
|
|
54
|
+
*/
|
|
55
|
+
function readKeychainCredential() {
|
|
56
|
+
if (process.platform !== "darwin") {
|
|
57
|
+
return { ok: false, reason: "not_found", message: "Keychain is macOS-only." };
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
const raw = (0, child_process_1.execFileSync)("/usr/bin/security", ["find-generic-password", "-s", KEYCHAIN_SERVICE, "-w"], { timeout: 2000, encoding: "utf-8", stdio: ["pipe", "pipe", "ignore"] }).trim();
|
|
61
|
+
return { ok: true, raw };
|
|
62
|
+
}
|
|
63
|
+
catch (err) {
|
|
64
|
+
const e = err;
|
|
65
|
+
if (e.killed === true || e.code === "ETIMEDOUT") {
|
|
66
|
+
return {
|
|
67
|
+
ok: false,
|
|
68
|
+
reason: "timeout",
|
|
69
|
+
message: "Keychain read timed out (seen on macOS Tahoe). Try restarting Keychain Access.",
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (e.status === 36) {
|
|
73
|
+
return {
|
|
74
|
+
ok: false,
|
|
75
|
+
reason: "locked",
|
|
76
|
+
message: "macOS Keychain is locked. Unlock it: security unlock-keychain ~/Library/Keychains/login.keychain-db",
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
if (e.status === 128) {
|
|
80
|
+
return {
|
|
81
|
+
ok: false,
|
|
82
|
+
reason: "denied",
|
|
83
|
+
message: "Keychain access was denied. Grant access when macOS prompts (choose \"Always Allow\").",
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
if (e.status === 44) {
|
|
87
|
+
return {
|
|
88
|
+
ok: false,
|
|
89
|
+
reason: "not_found",
|
|
90
|
+
message: "No \"Claude Code-credentials\" Keychain item. Sign in with Claude Code first.",
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
ok: false,
|
|
95
|
+
reason: "error",
|
|
96
|
+
message: `Keychain read failed (exit ${e.status ?? "unknown"}). Try re-authenticating with Claude Code.`,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Parse a raw Claude Code OAuth credential blob. The blob is either
|
|
102
|
+
* `{ claudeAiOauth: {...} }` (the on-disk / keychain wrapper) or the inner
|
|
103
|
+
* object directly. Returns null when there's no usable `accessToken` (e.g. an
|
|
104
|
+
* `mcpOAuth`-only entry, which is an MCP server credential, not a user token).
|
|
105
|
+
*/
|
|
106
|
+
function parseClaudeOauthBlob(raw) {
|
|
107
|
+
let parsed;
|
|
108
|
+
try {
|
|
109
|
+
parsed = JSON.parse(raw);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
if (parsed === null || typeof parsed !== "object") {
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
const outer = parsed;
|
|
118
|
+
const inner = outer.claudeAiOauth;
|
|
119
|
+
const data = inner !== null && typeof inner === "object"
|
|
120
|
+
? inner
|
|
121
|
+
: outer;
|
|
122
|
+
if (typeof data.accessToken !== "string" || data.accessToken.length === 0) {
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
accessToken: data.accessToken,
|
|
127
|
+
expiresAt: typeof data.expiresAt === "number" ? data.expiresAt : undefined,
|
|
128
|
+
subscriptionType: typeof data.subscriptionType === "string" ? data.subscriptionType : undefined,
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/** Read the credential blob from `~/.claude/.credentials.json` (Linux/Windows; macOS fallback). */
|
|
132
|
+
function readFileCredentialRaw(homeOverride) {
|
|
133
|
+
const credPath = (0, path_1.join)(homeOverride ?? (0, os_1.homedir)(), ".claude", ".credentials.json");
|
|
134
|
+
if (!(0, fs_1.existsSync)(credPath)) {
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
try {
|
|
138
|
+
return (0, fs_1.readFileSync)(credPath, "utf-8");
|
|
139
|
+
}
|
|
140
|
+
catch (e) {
|
|
141
|
+
logger_1.logger.debug(`oauth: credentials.json read failed: ${e instanceof Error ? e.message : e}`);
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
function resolveClaudeOauthToken(homeOverride) {
|
|
146
|
+
let diag;
|
|
147
|
+
if (process.platform === "darwin") {
|
|
148
|
+
const kc = readKeychainCredential();
|
|
149
|
+
if (kc.ok) {
|
|
150
|
+
const token = parseClaudeOauthBlob(kc.raw);
|
|
151
|
+
if (token) {
|
|
152
|
+
return { token, source: "keychain" };
|
|
153
|
+
}
|
|
154
|
+
diag = "Keychain item found but no usable accessToken in it.";
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
diag = kc.message;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
const fileRaw = readFileCredentialRaw(homeOverride);
|
|
161
|
+
if (fileRaw) {
|
|
162
|
+
const token = parseClaudeOauthBlob(fileRaw);
|
|
163
|
+
if (token) {
|
|
164
|
+
return { token, source: "file" };
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return { token: null, source: "none", diag };
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Quiet cross-platform token read for the hot path (statusline hook). Tries the
|
|
171
|
+
* Keychain (macOS) then the file, returning null on any failure without
|
|
172
|
+
* surfacing diagnostics.
|
|
173
|
+
*/
|
|
174
|
+
function readClaudeOauthToken(homeOverride) {
|
|
175
|
+
return resolveClaudeOauthToken(homeOverride).token;
|
|
176
|
+
}
|
|
177
|
+
/** One rolling window: `{ utilization, resets_at }` → RateLimitWindow (epoch ms). */
|
|
178
|
+
function mapWindow(w) {
|
|
179
|
+
if (w === null || typeof w !== "object") {
|
|
180
|
+
return undefined;
|
|
181
|
+
}
|
|
182
|
+
const o = w;
|
|
183
|
+
const util = o.utilization;
|
|
184
|
+
if (typeof util !== "number" || !Number.isFinite(util)) {
|
|
185
|
+
return undefined;
|
|
186
|
+
}
|
|
187
|
+
// The endpoint reports `resets_at` as an ISO-8601 string (with tz); convert
|
|
188
|
+
// to epoch ms to match every IronBee timestamp. Null/absent → window unusable.
|
|
189
|
+
const resetsAt = o.resets_at;
|
|
190
|
+
if (typeof resetsAt !== "string") {
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
193
|
+
const ms = Date.parse(resetsAt);
|
|
194
|
+
if (!Number.isFinite(ms)) {
|
|
195
|
+
return undefined;
|
|
196
|
+
}
|
|
197
|
+
return { used_percentage: util, resets_at: ms };
|
|
198
|
+
}
|
|
199
|
+
/** Map the raw `/api/oauth/usage` body onto the windows we ship. Null when neither maps. */
|
|
200
|
+
function mapOauthUsageToRateLimits(usage) {
|
|
201
|
+
if (usage === null || typeof usage !== "object") {
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
const o = usage;
|
|
205
|
+
const five = mapWindow(o.five_hour);
|
|
206
|
+
const seven = mapWindow(o.seven_day);
|
|
207
|
+
if (!five && !seven) {
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
const out = {};
|
|
211
|
+
if (five) {
|
|
212
|
+
out.five_hour = five;
|
|
213
|
+
}
|
|
214
|
+
if (seven) {
|
|
215
|
+
out.seven_day = seven;
|
|
216
|
+
}
|
|
217
|
+
return out;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Generic GET against an OAuth-scoped endpoint (`/usage`, `/profile`, …) with
|
|
221
|
+
* the access token + required beta header. Bounded by `timeoutMs`
|
|
222
|
+
* (AbortController) so a caller on the statusline path never hangs. Returns the
|
|
223
|
+
* parsed JSON body, or null on any failure (non-2xx, timeout, malformed body).
|
|
224
|
+
*/
|
|
225
|
+
async function oauthGet(path, accessToken, timeoutMs = DEFAULT_FETCH_TIMEOUT_MS) {
|
|
226
|
+
const controller = new AbortController();
|
|
227
|
+
const timer = setTimeout(() => controller.abort(), timeoutMs);
|
|
228
|
+
try {
|
|
229
|
+
const res = await fetch(`${OAUTH_BASE}${path}`, {
|
|
230
|
+
headers: {
|
|
231
|
+
authorization: `Bearer ${accessToken}`,
|
|
232
|
+
"anthropic-beta": OAUTH_BETA,
|
|
233
|
+
},
|
|
234
|
+
signal: controller.signal,
|
|
235
|
+
});
|
|
236
|
+
if (!res.ok) {
|
|
237
|
+
logger_1.logger.debug(`oauth: GET ${path} → HTTP ${res.status}`);
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
return await res.json();
|
|
241
|
+
}
|
|
242
|
+
catch (e) {
|
|
243
|
+
logger_1.logger.debug(`oauth: GET ${path} failed: ${e instanceof Error ? e.message : e}`);
|
|
244
|
+
return null;
|
|
245
|
+
}
|
|
246
|
+
finally {
|
|
247
|
+
clearTimeout(timer);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
/** Query `/api/oauth/usage` with a resolved token and map to rate-limit windows. */
|
|
251
|
+
async function fetchOauthUsage(accessToken, timeoutMs = DEFAULT_FETCH_TIMEOUT_MS) {
|
|
252
|
+
return mapOauthUsageToRateLimits(await oauthGet("/usage", accessToken, timeoutMs));
|
|
253
|
+
}
|
|
254
|
+
function summarizeOauthProfile(profile) {
|
|
255
|
+
if (profile === null || typeof profile !== "object") {
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
const o = profile;
|
|
259
|
+
const account = o.account !== null && typeof o.account === "object" ? o.account : {};
|
|
260
|
+
const org = o.organization !== null && typeof o.organization === "object" ? o.organization : {};
|
|
261
|
+
const str = (v) => typeof v === "string" && v.length > 0 ? v : undefined;
|
|
262
|
+
return {
|
|
263
|
+
email: str(account.email),
|
|
264
|
+
organizationType: str(org.organization_type),
|
|
265
|
+
rateLimitTier: str(org.rate_limit_tier),
|
|
266
|
+
subscriptionStatus: str(org.subscription_status),
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
/** Query `/api/oauth/profile` with a resolved token and summarize it. */
|
|
270
|
+
async function fetchOauthProfile(accessToken, timeoutMs = DEFAULT_FETCH_TIMEOUT_MS) {
|
|
271
|
+
return summarizeOauthProfile(await oauthGet("/profile", accessToken, timeoutMs));
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Read the token + query `/api/oauth/usage`, returning the mapped rate limits.
|
|
275
|
+
* The convenience wrapper the statusline hook calls. Returns null when no token
|
|
276
|
+
* is available, the token is already expired (skip the doomed call — we don't
|
|
277
|
+
* refresh), or the fetch fails.
|
|
278
|
+
*/
|
|
279
|
+
async function fetchClaudeRateLimits(opts) {
|
|
280
|
+
const token = readClaudeOauthToken(opts?.homeOverride);
|
|
281
|
+
if (!token) {
|
|
282
|
+
return null;
|
|
283
|
+
}
|
|
284
|
+
if (typeof token.expiresAt === "number" && token.expiresAt <= Date.now()) {
|
|
285
|
+
logger_1.logger.debug("oauth: token expired; skipping /usage (we never refresh).");
|
|
286
|
+
return null;
|
|
287
|
+
}
|
|
288
|
+
return fetchOauthUsage(token.accessToken, opts?.timeoutMs ?? DEFAULT_FETCH_TIMEOUT_MS);
|
|
289
|
+
}
|
|
290
|
+
//# sourceMappingURL=oauth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../../src/clients/claude/oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ironbee claude <subcommand>` — Claude-specific capabilities.
|
|
3
|
+
*
|
|
4
|
+
* `oauth-access <enable|disable|status>` — manage the `claude.oauthAccess`
|
|
5
|
+
* capability: whether IronBee may read the Claude Code OAuth token (macOS
|
|
6
|
+
* Keychain / `~/.claude/.credentials.json`) and call OAuth-scoped Anthropic
|
|
7
|
+
* endpoints. Default-on. The first consumer is the statusline rate-limit
|
|
8
|
+
* fallback (`/api/oauth/usage` fills `rate_limits` for team / enterprise plans
|
|
9
|
+
* the statusline JSON never carries them for).
|
|
10
|
+
*
|
|
11
|
+
* `enable` additionally PRIMES the macOS Keychain permission: it reads the
|
|
12
|
+
* token NOW, in this interactive terminal, so any "… wants to use the
|
|
13
|
+
* confidential information stored in 'Claude Code-credentials' …" prompt
|
|
14
|
+
* appears at a deliberate moment (choose "Always Allow"). Once granted, the
|
|
15
|
+
* statusline hook reads silently — and the grant survives IronBee version
|
|
16
|
+
* updates because the Keychain ACL keys on the stable `/usr/bin/security`
|
|
17
|
+
* binary, not on node/ironbee.
|
|
18
|
+
*
|
|
19
|
+
* Default target is the GLOBAL config (`~/.ironbee/config.json`) — the OAuth
|
|
20
|
+
* token is machine-global (one Keychain, all projects), so a machine-wide
|
|
21
|
+
* setting fits. `--local` / `--project` (with `-p`) narrow to one project's
|
|
22
|
+
* layer. `oauthAccess` is NOT artifact-affecting, so no client rerender runs.
|
|
23
|
+
*/
|
|
24
|
+
import { Command } from "commander";
|
|
25
|
+
export declare const oauthAccessEnableCommand: Command;
|
|
26
|
+
export declare const oauthAccessDisableCommand: Command;
|
|
27
|
+
export declare const oauthAccessStatusCommand: Command;
|
|
28
|
+
export declare const oauthAccessCommand: Command;
|
|
29
|
+
export declare const claudeCommand: Command;
|
|
30
|
+
//# sourceMappingURL=claude.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/commands/claude.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0GpC,eAAO,MAAM,wBAAwB,EAAE,OAYjC,CAAC;AAEP,eAAO,MAAM,yBAAyB,EAAE,OAYlC,CAAC;AAEP,eAAO,MAAM,wBAAwB,EAAE,OA+CjC,CAAC;AAEP,eAAO,MAAM,kBAAkB,EAAE,OAIQ,CAAC;AAE1C,eAAO,MAAM,aAAa,EAAE,OAEO,CAAC"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* `ironbee claude <subcommand>` — Claude-specific capabilities.
|
|
4
|
+
*
|
|
5
|
+
* `oauth-access <enable|disable|status>` — manage the `claude.oauthAccess`
|
|
6
|
+
* capability: whether IronBee may read the Claude Code OAuth token (macOS
|
|
7
|
+
* Keychain / `~/.claude/.credentials.json`) and call OAuth-scoped Anthropic
|
|
8
|
+
* endpoints. Default-on. The first consumer is the statusline rate-limit
|
|
9
|
+
* fallback (`/api/oauth/usage` fills `rate_limits` for team / enterprise plans
|
|
10
|
+
* the statusline JSON never carries them for).
|
|
11
|
+
*
|
|
12
|
+
* `enable` additionally PRIMES the macOS Keychain permission: it reads the
|
|
13
|
+
* token NOW, in this interactive terminal, so any "… wants to use the
|
|
14
|
+
* confidential information stored in 'Claude Code-credentials' …" prompt
|
|
15
|
+
* appears at a deliberate moment (choose "Always Allow"). Once granted, the
|
|
16
|
+
* statusline hook reads silently — and the grant survives IronBee version
|
|
17
|
+
* updates because the Keychain ACL keys on the stable `/usr/bin/security`
|
|
18
|
+
* binary, not on node/ironbee.
|
|
19
|
+
*
|
|
20
|
+
* Default target is the GLOBAL config (`~/.ironbee/config.json`) — the OAuth
|
|
21
|
+
* token is machine-global (one Keychain, all projects), so a machine-wide
|
|
22
|
+
* setting fits. `--local` / `--project` (with `-p`) narrow to one project's
|
|
23
|
+
* layer. `oauthAccess` is NOT artifact-affecting, so no client rerender runs.
|
|
24
|
+
*/
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.claudeCommand = exports.oauthAccessCommand = exports.oauthAccessStatusCommand = exports.oauthAccessDisableCommand = exports.oauthAccessEnableCommand = void 0;
|
|
27
|
+
const commander_1 = require("commander");
|
|
28
|
+
const fs_1 = require("fs");
|
|
29
|
+
const path_1 = require("path");
|
|
30
|
+
const config_1 = require("../lib/config");
|
|
31
|
+
const logger_1 = require("../lib/logger");
|
|
32
|
+
const output_1 = require("../lib/output");
|
|
33
|
+
const oauth_1 = require("../clients/claude/oauth");
|
|
34
|
+
/** Interactive (non-hot-path) timeout for the probe calls. */
|
|
35
|
+
const PROBE_TIMEOUT_MS = 8000;
|
|
36
|
+
function attachTargetOptions(cmd) {
|
|
37
|
+
return cmd
|
|
38
|
+
.option("-p, --project-dir <dir>", "Project directory for --local / --project (default: cwd).")
|
|
39
|
+
.option("-g, --global", "Write to the global config (~/.ironbee/config.json). Default.")
|
|
40
|
+
.option("--project", "Write to the committed project config (<project>/.ironbee/config.json).")
|
|
41
|
+
.option("--local", "Write to the gitignored project-local override (<project>/.ironbee/config.local.json).");
|
|
42
|
+
}
|
|
43
|
+
/** Resolve the write target. Default GLOBAL (machine-wide). At most one of -g/--project/--local. */
|
|
44
|
+
function resolveTarget(opts) {
|
|
45
|
+
const flags = [opts.global, opts.project, opts.local].filter((f) => f === true).length;
|
|
46
|
+
if (flags > 1) {
|
|
47
|
+
throw new Error("Pass at most one of -g / --global, --project, --local.");
|
|
48
|
+
}
|
|
49
|
+
if (opts.local === true) {
|
|
50
|
+
return { target: "local", projectDir: opts.projectDir ?? process.cwd() };
|
|
51
|
+
}
|
|
52
|
+
if (opts.project === true) {
|
|
53
|
+
return { target: "project", projectDir: opts.projectDir ?? process.cwd() };
|
|
54
|
+
}
|
|
55
|
+
return { target: "global" };
|
|
56
|
+
}
|
|
57
|
+
function readConfigFile(path) {
|
|
58
|
+
if (!(0, fs_1.existsSync)(path)) {
|
|
59
|
+
return {};
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
return JSON.parse((0, fs_1.readFileSync)(path, "utf-8"));
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
throw new Error(`Config at ${path} is not valid JSON: ${e instanceof Error ? e.message : e}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function writeConfigFile(path, config) {
|
|
69
|
+
(0, fs_1.mkdirSync)((0, path_1.join)(path, ".."), { recursive: true });
|
|
70
|
+
(0, fs_1.writeFileSync)(path, JSON.stringify(config, null, 2) + "\n");
|
|
71
|
+
}
|
|
72
|
+
/** Set `claude.oauthAccess.enable` in one layer file, preserving sibling keys (e.g. usageTtlSeconds). */
|
|
73
|
+
function writeOauthAccessEnable(target, projectDir, enable) {
|
|
74
|
+
const path = (0, config_1.getTargetConfigPath)(target, projectDir);
|
|
75
|
+
const onDisk = readConfigFile(path);
|
|
76
|
+
const claude = { ...(onDisk.claude ?? {}) };
|
|
77
|
+
claude.oauthAccess = { ...(claude.oauthAccess ?? {}), enable };
|
|
78
|
+
writeConfigFile(path, { ...onDisk, claude });
|
|
79
|
+
return path;
|
|
80
|
+
}
|
|
81
|
+
/** Read the token interactively (this is where the macOS Keychain prompt appears) + report. */
|
|
82
|
+
async function primeAndReport() {
|
|
83
|
+
const resolution = (0, oauth_1.resolveClaudeOauthToken)();
|
|
84
|
+
if (!resolution.token) {
|
|
85
|
+
console.log(` ${output_1.pc.yellow("⚠")} Could not read the Claude OAuth token${resolution.diag ? `: ${resolution.diag}` : "."}`);
|
|
86
|
+
console.log(` ${output_1.pc.dim("The flag is set, but the rate-limit fallback won't work until the token is readable.")}`);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const expired = typeof resolution.token.expiresAt === "number" && resolution.token.expiresAt <= Date.now();
|
|
90
|
+
console.log(` ${output_1.pc.green("✓")} Token readable from ${output_1.pc.bold(resolution.source)}${expired ? output_1.pc.yellow(" (currently expired — Claude Code refreshes it during an active session)") : ""}.`);
|
|
91
|
+
if (expired) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
// End-to-end probe so the user knows the whole path works (and sees their plan).
|
|
95
|
+
const profile = await (0, oauth_1.fetchOauthProfile)(resolution.token.accessToken, PROBE_TIMEOUT_MS);
|
|
96
|
+
if (profile) {
|
|
97
|
+
const plan = profile.organizationType ?? "unknown";
|
|
98
|
+
const tier = profile.rateLimitTier ? ` / ${profile.rateLimitTier}` : "";
|
|
99
|
+
console.log(` ${output_1.pc.green("✓")} /api/oauth endpoints reachable (plan: ${output_1.pc.bold(plan)}${output_1.pc.dim(tier)}).`);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
console.log(` ${output_1.pc.yellow("⚠")} Token read OK but the /api/oauth probe failed (network / endpoint). The hook degrades gracefully.`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.oauthAccessEnableCommand = attachTargetOptions(new commander_1.Command("enable"))
|
|
106
|
+
.description("Enable OAuth access (default-on) and PRIME the macOS Keychain permission — reads the token now so any prompt appears in this terminal (choose \"Always Allow\"). Default target is the global config.")
|
|
107
|
+
.action(async (opts) => {
|
|
108
|
+
try {
|
|
109
|
+
const { target, projectDir } = resolveTarget(opts);
|
|
110
|
+
const path = writeOauthAccessEnable(target, projectDir, true);
|
|
111
|
+
console.log(`${output_1.pc.green("✓")} OAuth access enabled in ${target} config (${output_1.pc.dim(path)}).`);
|
|
112
|
+
await primeAndReport();
|
|
113
|
+
}
|
|
114
|
+
catch (e) {
|
|
115
|
+
console.error(`${output_1.pc.red("✗")} ${e instanceof Error ? e.message : e}`);
|
|
116
|
+
process.exit(1);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
exports.oauthAccessDisableCommand = attachTargetOptions(new commander_1.Command("disable"))
|
|
120
|
+
.description("Disable OAuth access — IronBee will not read the Claude OAuth token or call any /api/oauth endpoint. Writes claude.oauthAccess.enable: false. Default target is the global config.")
|
|
121
|
+
.action((opts) => {
|
|
122
|
+
try {
|
|
123
|
+
const { target, projectDir } = resolveTarget(opts);
|
|
124
|
+
const path = writeOauthAccessEnable(target, projectDir, false);
|
|
125
|
+
console.log(`${output_1.pc.green("✓")} OAuth access disabled in ${target} config (${output_1.pc.dim(path)}).`);
|
|
126
|
+
console.log(` ${output_1.pc.dim("The statusline rate-limit fallback (and any future OAuth consumer) is now off.")}`);
|
|
127
|
+
}
|
|
128
|
+
catch (e) {
|
|
129
|
+
console.error(`${output_1.pc.red("✗")} ${e instanceof Error ? e.message : e}`);
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
exports.oauthAccessStatusCommand = new commander_1.Command("status")
|
|
134
|
+
.option("-p, --project-dir <dir>", "Project directory for the merged-config read (default: cwd).")
|
|
135
|
+
.description("Show OAuth-access status: capability flag, token readability + expiry, and a live /api/oauth probe (plan + current rate-limit utilization).")
|
|
136
|
+
.action(async (opts) => {
|
|
137
|
+
try {
|
|
138
|
+
const projectDir = opts.projectDir ?? process.cwd();
|
|
139
|
+
const cfg = (0, config_1.loadConfig)(projectDir);
|
|
140
|
+
const enabled = (0, config_1.getClaudeOauthAccessEnabled)(cfg);
|
|
141
|
+
console.log(`Capability: ${enabled ? output_1.pc.green("enabled") : output_1.pc.red("disabled")} ${output_1.pc.dim("(claude.oauthAccess.enable)")}`);
|
|
142
|
+
console.log(`Usage TTL: ${output_1.pc.bold(String((0, config_1.getClaudeOauthAccessUsageTtlSeconds)(cfg)))}s ${output_1.pc.dim("(statusline fetch cache)")}`);
|
|
143
|
+
const resolution = (0, oauth_1.resolveClaudeOauthToken)();
|
|
144
|
+
if (!resolution.token) {
|
|
145
|
+
console.log(`Token: ${output_1.pc.red("unavailable")}${resolution.diag ? ` ${output_1.pc.dim(`(${resolution.diag})`)}` : ""}`);
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const t = resolution.token;
|
|
149
|
+
const expired = typeof t.expiresAt === "number" && t.expiresAt <= Date.now();
|
|
150
|
+
const expiryNote = typeof t.expiresAt === "number"
|
|
151
|
+
? ` ${output_1.pc.dim(`(${expired ? "expired" : "valid"} — ${new Date(t.expiresAt).toISOString()})`)}`
|
|
152
|
+
: "";
|
|
153
|
+
console.log(`Token: ${output_1.pc.green("readable")} ${output_1.pc.dim(`from ${resolution.source}`)}${expiryNote}`);
|
|
154
|
+
if (expired) {
|
|
155
|
+
console.log(`Probe: ${output_1.pc.dim("skipped (token expired; run an active Claude Code turn to refresh it)")}`);
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const [profile, usage] = await Promise.all([
|
|
159
|
+
(0, oauth_1.fetchOauthProfile)(t.accessToken, PROBE_TIMEOUT_MS),
|
|
160
|
+
(0, oauth_1.fetchOauthUsage)(t.accessToken, PROBE_TIMEOUT_MS),
|
|
161
|
+
]);
|
|
162
|
+
if (profile) {
|
|
163
|
+
console.log(`Plan: ${output_1.pc.bold(profile.organizationType ?? "unknown")}${profile.rateLimitTier ? output_1.pc.dim(` / ${profile.rateLimitTier}`) : ""}${profile.email ? output_1.pc.dim(` · ${profile.email}`) : ""}`);
|
|
164
|
+
}
|
|
165
|
+
if (usage) {
|
|
166
|
+
const fmt = (w) => w ? `${w.used_percentage}% ${output_1.pc.dim(`(resets ${new Date(w.resets_at).toISOString()})`)}` : output_1.pc.dim("n/a");
|
|
167
|
+
console.log(`5h window: ${fmt(usage.five_hour)}`);
|
|
168
|
+
console.log(`7d window: ${fmt(usage.seven_day)}`);
|
|
169
|
+
}
|
|
170
|
+
else if (!profile) {
|
|
171
|
+
console.log(`Probe: ${output_1.pc.yellow("/api/oauth unreachable")} ${output_1.pc.dim("(network / endpoint)")}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch (e) {
|
|
175
|
+
logger_1.logger.debug(`oauth-access status failed: ${e instanceof Error ? e.message : e}`);
|
|
176
|
+
console.error(`${output_1.pc.red("✗")} ${e instanceof Error ? e.message : e}`);
|
|
177
|
+
process.exit(1);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
exports.oauthAccessCommand = new commander_1.Command("oauth-access")
|
|
181
|
+
.description("Manage Claude OAuth access (enable / disable / status). Lets IronBee read the Claude Code OAuth token and fill statusline rate-limits for plans the statusline JSON omits them for (team / enterprise).")
|
|
182
|
+
.addCommand(exports.oauthAccessEnableCommand)
|
|
183
|
+
.addCommand(exports.oauthAccessDisableCommand)
|
|
184
|
+
.addCommand(exports.oauthAccessStatusCommand);
|
|
185
|
+
exports.claudeCommand = new commander_1.Command("claude")
|
|
186
|
+
.description("Claude-specific capabilities (Claude-only).")
|
|
187
|
+
.addCommand(exports.oauthAccessCommand);
|
|
188
|
+
//# sourceMappingURL=claude.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/commands/claude.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -26,6 +26,7 @@ const register_1 = require("./commands/register");
|
|
|
26
26
|
const unregister_1 = require("./commands/unregister");
|
|
27
27
|
const import_1 = require("./commands/import");
|
|
28
28
|
const otel_1 = require("./commands/otel");
|
|
29
|
+
const claude_1 = require("./commands/claude");
|
|
29
30
|
const login_1 = require("./commands/login");
|
|
30
31
|
const queue_2 = require("./queue");
|
|
31
32
|
const icon_1 = require("./lib/icon");
|
|
@@ -56,6 +57,7 @@ program.addCommand(verification_1.verificationCommand);
|
|
|
56
57
|
program.addCommand(telemetry_1.telemetryCommand);
|
|
57
58
|
program.addCommand(statusline_1.statuslineCommand);
|
|
58
59
|
program.addCommand(otel_1.otelCommand);
|
|
60
|
+
program.addCommand(claude_1.claudeCommand);
|
|
59
61
|
program.addCommand(config_1.configCommand);
|
|
60
62
|
program.addCommand(tui_1.tuiCommand);
|
|
61
63
|
program.addCommand(register_1.registerCommand);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -307,6 +307,32 @@ export interface IronBeeConfig {
|
|
|
307
307
|
/** Coalesce `session_context` emits per session (seconds; 0 = every request). Default 0. */
|
|
308
308
|
emitMinIntervalSeconds?: number;
|
|
309
309
|
};
|
|
310
|
+
/**
|
|
311
|
+
* Claude-specific capabilities (Claude-only; Cursor's credential store is
|
|
312
|
+
* opaque to us). `oauthAccess` gates whether IronBee may read the Claude
|
|
313
|
+
* Code OAuth token (macOS Keychain / `~/.claude/.credentials.json`) and
|
|
314
|
+
* call OAuth-scoped Anthropic endpoints (`api.anthropic.com/api/oauth/*`).
|
|
315
|
+
* The first consumer is the statusline rate-limit fallback — when the
|
|
316
|
+
* statusline JSON carries no `rate_limits` (team / enterprise plans, or
|
|
317
|
+
* before the first API response) IronBee fetches them from
|
|
318
|
+
* `/api/oauth/usage`. Default-on; opt out with `enable: false` or
|
|
319
|
+
* `ironbee claude oauth-access disable`. Machine-global — the command
|
|
320
|
+
* writes the global layer by default (one Keychain / token across all
|
|
321
|
+
* projects); `--local` / `--project` narrow it to one project's layer.
|
|
322
|
+
*/
|
|
323
|
+
claude?: {
|
|
324
|
+
oauthAccess?: {
|
|
325
|
+
/** Master switch (default true — opt out with false). */
|
|
326
|
+
enable?: boolean;
|
|
327
|
+
/**
|
|
328
|
+
* TTL (seconds) for the statusline rate-limit fetch cache. The
|
|
329
|
+
* `/api/oauth/usage` call + credential read fire at most once per
|
|
330
|
+
* this interval even when the statusline ticks far more often.
|
|
331
|
+
* Default 60.
|
|
332
|
+
*/
|
|
333
|
+
usageTtlSeconds?: number;
|
|
334
|
+
};
|
|
335
|
+
};
|
|
310
336
|
/** Allow additional config fields (e.g. `browserDevTools` / `nodeDevTools`). */
|
|
311
337
|
[key: string]: unknown;
|
|
312
338
|
}
|
|
@@ -591,6 +617,21 @@ export declare function getStatusLineRenderDefault(config: IronBeeConfig): boole
|
|
|
591
617
|
* skip-if-unchanged). Default 10; `0` (or negative) disables the throttle.
|
|
592
618
|
*/
|
|
593
619
|
export declare function getStatusLineEmitMinIntervalSeconds(config: IronBeeConfig): number;
|
|
620
|
+
/** Default TTL (seconds) for the statusline OAuth rate-limit fetch cache. */
|
|
621
|
+
export declare const DEFAULT_OAUTH_USAGE_TTL_SECONDS: number;
|
|
622
|
+
/**
|
|
623
|
+
* Whether IronBee may read the Claude Code OAuth token and call OAuth-scoped
|
|
624
|
+
* Anthropic endpoints. Default-on (inverse semantics — opt out with
|
|
625
|
+
* `claude.oauthAccess.enable: false`). Gates the statusline rate-limit fallback
|
|
626
|
+
* and any future OAuth consumer. Claude-only.
|
|
627
|
+
*/
|
|
628
|
+
export declare function getClaudeOauthAccessEnabled(config: IronBeeConfig): boolean;
|
|
629
|
+
/**
|
|
630
|
+
* TTL (seconds) for the statusline rate-limit fetch cache — the `/api/oauth/usage`
|
|
631
|
+
* call + credential read fire at most once per this interval. Default 60;
|
|
632
|
+
* negative is clamped to the default (0 means "every tick", honored).
|
|
633
|
+
*/
|
|
634
|
+
export declare function getClaudeOauthAccessUsageTtlSeconds(config: IronBeeConfig): number;
|
|
594
635
|
/** Default loopback port the OTEL collector daemon binds to. */
|
|
595
636
|
export declare const DEFAULT_OTEL_PORT: number;
|
|
596
637
|
/** Default daemon idle-reap threshold (seconds). */
|