@bookedsolid/reagent 0.15.5 → 0.15.8

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 +1 @@
1
- {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/account.ts"],"names":[],"mappings":"AAiBA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C/D"}
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/account.ts"],"names":[],"mappings":"AA8BA,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C/D"}
@@ -1,7 +1,10 @@
1
1
  import { execFileSync, spawnSync } from 'node:child_process';
2
+ import { readFileSync, writeFileSync, mkdirSync, openSync, closeSync, unlinkSync, statSync, } from 'node:fs';
3
+ import { homedir } from 'node:os';
4
+ import { join } from 'node:path';
2
5
  import { parseFlag } from '../utils.js';
3
6
  import { loadAccounts, upsertAccount, removeAccount as removeAccountConfig, } from '../../config/accounts.js';
4
- import { keychainSet, keychainGet, keychainDelete, keychainExists, readClaudeCodeCredential, writeClaudeCodeCredential as writeClaudeCredential, } from '../../platform/keychain.js';
7
+ import { keychainSetRaw, keychainGetRaw, keychainDelete, keychainExists, readClaudeCodeCredentialRaw, parseCredentialForDisplay, rawCredentialHasToken, ensureClaudeCodeWrapper, writeClaudeCodeCredential as writeClaudeCredential, } from '../../platform/keychain.js';
5
8
  export function runAccount(args) {
6
9
  const [subcommand, ...rest] = args;
7
10
  if (!subcommand || subcommand === 'help' || subcommand === '--help') {
@@ -133,8 +136,8 @@ function accountAdd(args) {
133
136
  process.exit(1);
134
137
  }
135
138
  console.log('\nStep 3: Reading new credential from keychain...');
136
- const newCredential = readClaudeCodeCredential();
137
- if (!newCredential || !newCredential.accessToken) {
139
+ const newCredentialRaw = readClaudeCodeCredentialRaw();
140
+ if (!newCredentialRaw || !rawCredentialHasToken(newCredentialRaw)) {
138
141
  console.error('Failed to read new credential from Claude Code keychain entry.');
139
142
  if (backupRaw) {
140
143
  console.log('Restoring original credential...');
@@ -143,7 +146,9 @@ function accountAdd(args) {
143
146
  process.exit(1);
144
147
  }
145
148
  console.log('Step 4: Storing under reagent keychain entry...');
146
- keychainSet(keychainService, newCredential);
149
+ // Store the complete raw blob (including wrapper) so all OAuth metadata
150
+ // needed for token refresh (tokenEndpoint, clientId, etc.) is preserved.
151
+ keychainSetRaw(keychainService, newCredentialRaw);
147
152
  console.log('Step 5: Restoring original Claude Code credential...');
148
153
  if (backupRaw) {
149
154
  writeClaudeCredential(backupRaw);
@@ -188,62 +193,92 @@ function accountList() {
188
193
  // --- switch ---
189
194
  function accountSwitch(args) {
190
195
  const clearFlag = args.includes('--clear');
191
- if (clearFlag) {
192
- const defaultCred = keychainGet('reagent-__default__');
193
- if (!defaultCred) {
194
- console.error('No saved default credential found.');
195
- console.error('Run: claude auth login to establish a default session.');
196
- process.exit(1);
197
- }
198
- writeClaudeCredential(JSON.stringify({ claudeAiOauth: defaultCred }));
199
- console.log('Restored default Claude Code credential.');
200
- console.log('Restart any active Claude Code sessions to pick up the change.');
201
- return;
202
- }
203
- const name = args.find((a) => !a.startsWith('--'));
204
- if (!name) {
205
- console.error('Usage: npx @bookedsolid/reagent@latest account switch <name> | account switch --clear');
196
+ // Acquire advisory lock to prevent concurrent switches from corrupting
197
+ // credential entries (two terminals running rswitch at the same time).
198
+ const releaseLock = acquireSwitchLock();
199
+ if (!releaseLock) {
200
+ console.error('Another account switch is in progress. Try again in a moment.');
206
201
  process.exit(1);
207
202
  }
208
- const config = loadAccounts();
209
- const account = config.accounts[name];
210
- if (!account) {
211
- console.error(`Account "${name}" not found. Run: npx @bookedsolid/reagent@latest account list`);
212
- process.exit(1);
213
- }
214
- const credential = keychainGet(account.keychain_service);
215
- if (!credential) {
216
- console.error(`No credential found for "${name}". Run: npx @bookedsolid/reagent@latest account rotate ${name}`);
217
- process.exit(1);
218
- }
219
- if (credential.expiresAt) {
220
- const expiresAt = typeof credential.expiresAt === 'number'
221
- ? credential.expiresAt
222
- : Date.parse(String(credential.expiresAt));
223
- if (expiresAt < Date.now()) {
224
- console.error(`\u26A0 Token for "${name}" is EXPIRED. Run: npx @bookedsolid/reagent@latest account rotate ${name}`);
203
+ try {
204
+ if (clearFlag) {
205
+ const syncResult = syncBackActiveCredential();
206
+ if (syncResult === 'skipped') {
207
+ console.error('Warning: could not sync credential for previously active account.');
208
+ }
209
+ setActiveAccount(null);
210
+ const defaultCredRaw = keychainGetRaw('reagent-__default__');
211
+ if (!defaultCredRaw) {
212
+ console.error('No saved default credential found.');
213
+ console.error('Run: claude auth login to establish a default session.');
214
+ process.exit(1);
215
+ }
216
+ // Write back the raw blob exactly as stored — no parse/re-wrap
217
+ writeClaudeCredential(defaultCredRaw);
218
+ console.log('Restored default Claude Code credential.');
219
+ console.log('Restart any active Claude Code sessions to pick up the change.');
220
+ return;
221
+ }
222
+ const name = args.find((a) => !a.startsWith('--'));
223
+ if (!name) {
224
+ console.error('Usage: npx @bookedsolid/reagent@latest account switch <name> | account switch --clear');
225
225
  process.exit(1);
226
226
  }
227
- }
228
- // Save current Claude Code credential as default — but only when we're
229
- // not already switched (i.e. REAGENT_ACCOUNT is unset in the shell).
230
- // This ensures --clear always restores the real original, not an intermediate.
231
- if (!process.env.REAGENT_ACCOUNT) {
232
- try {
233
- const currentRaw = execFileSync('security', ['find-generic-password', '-s', 'Claude Code-credentials', '-w'], { stdio: ['pipe', 'pipe', 'pipe'], encoding: 'utf8' }).trim();
234
- const parsed = JSON.parse(currentRaw);
235
- const inner = parsed.claudeAiOauth ?? parsed;
236
- keychainSet('reagent-__default__', inner);
227
+ const config = loadAccounts();
228
+ const account = config.accounts[name];
229
+ if (!account) {
230
+ console.error(`Account "${name}" not found. Run: npx @bookedsolid/reagent@latest account list`);
231
+ process.exit(1);
237
232
  }
238
- catch {
239
- // No existing Claude Code credential nothing to save
233
+ // Sync any refreshed tokens back to the previously active account
234
+ // before we read or overwrite anything. This ensures that if Claude Code
235
+ // refreshed the token since the last switch, our stored copy is up-to-date.
236
+ const syncResult = syncBackActiveCredential();
237
+ if (syncResult === 'skipped') {
238
+ console.error('Warning: could not sync credential for previously active account.');
240
239
  }
240
+ // Read the full raw blob for writing to Claude Code, and parse for expiry check.
241
+ const credentialRaw = keychainGetRaw(account.keychain_service);
242
+ if (!credentialRaw || !rawCredentialHasToken(credentialRaw)) {
243
+ console.error(`No credential found for "${name}". Run: npx @bookedsolid/reagent@latest account rotate ${name}`);
244
+ process.exit(1);
245
+ }
246
+ // Parse on-the-fly for expiry check only
247
+ const credentialForDisplay = parseCredentialForDisplay(credentialRaw);
248
+ if (credentialForDisplay?.expiresAt) {
249
+ const expiresAt = typeof credentialForDisplay.expiresAt === 'number'
250
+ ? credentialForDisplay.expiresAt
251
+ : Date.parse(String(credentialForDisplay.expiresAt));
252
+ if (expiresAt < Date.now()) {
253
+ console.error(`\u26A0 Token for "${name}" is EXPIRED. Run: npx @bookedsolid/reagent@latest account rotate ${name}`);
254
+ process.exit(1);
255
+ }
256
+ }
257
+ // Save current Claude Code credential as default — but only when we're
258
+ // not already switched (i.e. REAGENT_ACCOUNT is unset in the shell).
259
+ // This ensures --clear always restores the real original, not an intermediate.
260
+ if (!process.env.REAGENT_ACCOUNT) {
261
+ try {
262
+ const currentRaw = readClaudeCodeCredentialRaw();
263
+ if (currentRaw && rawCredentialHasToken(currentRaw)) {
264
+ // Store the complete raw blob so --clear restores it exactly
265
+ keychainSetRaw('reagent-__default__', currentRaw);
266
+ }
267
+ }
268
+ catch {
269
+ // No existing Claude Code credential — nothing to save
270
+ }
271
+ }
272
+ // Write the stored raw blob into Claude Code's keychain slot, ensuring
273
+ // the claudeAiOauth wrapper is present so token refresh works.
274
+ writeClaudeCredential(ensureClaudeCodeWrapper(credentialRaw));
275
+ setActiveAccount(name);
276
+ console.log(`Switched to account: ${name}`);
277
+ console.log('Restart any active Claude Code sessions to pick up the change.');
278
+ }
279
+ finally {
280
+ releaseLock();
241
281
  }
242
- // Write target credential into Claude Code's keychain slot.
243
- // Claude Code reads from here with its normal refresh path — sessions survive overnight.
244
- writeClaudeCredential(JSON.stringify({ claudeAiOauth: credential }));
245
- console.log(`Switched to account: ${name}`);
246
- console.log('Restart any active Claude Code sessions to pick up the change.');
247
282
  }
248
283
  // --- env ---
249
284
  function accountEnv(args) {
@@ -265,7 +300,8 @@ function accountEnv(args) {
265
300
  console.error(`Account "${name}" not found. Run: npx @bookedsolid/reagent@latest account list`);
266
301
  process.exit(1);
267
302
  }
268
- const credential = keychainGet(account.keychain_service);
303
+ const credRaw = keychainGetRaw(account.keychain_service);
304
+ const credential = credRaw ? parseCredentialForDisplay(credRaw) : null;
269
305
  if (!credential) {
270
306
  console.error(`No credential found in keychain for "${name}" (service: ${account.keychain_service})`);
271
307
  console.error(`Run: reagent account rotate ${name}`);
@@ -312,7 +348,8 @@ function accountCheck(args) {
312
348
  console.log(` ! ${name}: not found in accounts.yaml`);
313
349
  continue;
314
350
  }
315
- const credential = keychainGet(account.keychain_service);
351
+ const credRaw = keychainGetRaw(account.keychain_service);
352
+ const credential = credRaw ? parseCredentialForDisplay(credRaw) : null;
316
353
  if (!credential) {
317
354
  console.log(` ! ${name}: keychain entry MISSING (${account.keychain_service})`);
318
355
  continue;
@@ -400,15 +437,16 @@ function accountRotate(args) {
400
437
  writeClaudeCredential(backupRaw);
401
438
  process.exit(1);
402
439
  }
403
- const newCredential = readClaudeCodeCredential();
404
- if (!newCredential || !newCredential.accessToken) {
440
+ const newCredentialRaw = readClaudeCodeCredentialRaw();
441
+ if (!newCredentialRaw || !rawCredentialHasToken(newCredentialRaw)) {
405
442
  console.error('Failed to read new credential.');
406
443
  if (backupRaw)
407
444
  writeClaudeCredential(backupRaw);
408
445
  process.exit(1);
409
446
  }
410
447
  console.log('Step 3: Updating keychain entry...');
411
- keychainSet(account.keychain_service, newCredential);
448
+ // Store the complete raw blob so all OAuth metadata is preserved
449
+ keychainSetRaw(account.keychain_service, newCredentialRaw);
412
450
  if (backupRaw) {
413
451
  console.log('Step 4: Restoring original credential...');
414
452
  writeClaudeCredential(backupRaw);
@@ -601,7 +639,8 @@ async function accountVerify(args) {
601
639
  console.log(` ! ${name}: not found in accounts.yaml`);
602
640
  continue;
603
641
  }
604
- const credential = keychainGet(account.keychain_service);
642
+ const credRaw = keychainGetRaw(account.keychain_service);
643
+ const credential = credRaw ? parseCredentialForDisplay(credRaw) : null;
605
644
  if (!credential) {
606
645
  console.log(` ! ${name}: keychain entry MISSING`);
607
646
  continue;
@@ -624,6 +663,107 @@ async function accountVerify(args) {
624
663
  console.log('');
625
664
  }
626
665
  // --- helpers ---
666
+ const REAGENT_DIR = join(homedir(), '.reagent');
667
+ const ACTIVE_ACCOUNT_PATH = join(REAGENT_DIR, 'active-account');
668
+ const SWITCH_LOCK_PATH = join(REAGENT_DIR, 'account-switch.lock');
669
+ const LOCK_STALE_MS = 30_000;
670
+ /** Read which account was last activated via `account switch`. */
671
+ function getActiveAccount() {
672
+ try {
673
+ const name = readFileSync(ACTIVE_ACCOUNT_PATH, 'utf8').trim();
674
+ if (!name || !/^[a-z0-9][a-z0-9-]*$/.test(name))
675
+ return null;
676
+ return name;
677
+ }
678
+ catch {
679
+ return null;
680
+ }
681
+ }
682
+ /**
683
+ * Persist which account is currently active (null to clear).
684
+ * Best-effort — a failure here means the next sync-back will be a no-op,
685
+ * not that the switch itself fails.
686
+ */
687
+ function setActiveAccount(name) {
688
+ try {
689
+ mkdirSync(REAGENT_DIR, { recursive: true });
690
+ writeFileSync(ACTIVE_ACCOUNT_PATH, name || '', 'utf8');
691
+ }
692
+ catch {
693
+ // Best-effort — don't block the switch
694
+ }
695
+ }
696
+ /**
697
+ * Acquire an advisory file lock for the switch operation.
698
+ * Uses O_EXCL (exclusive create) so a second concurrent switch gets EEXIST.
699
+ * Returns a release function, or null if the lock could not be acquired.
700
+ */
701
+ function acquireSwitchLock() {
702
+ mkdirSync(REAGENT_DIR, { recursive: true });
703
+ // Clean up stale locks from crashed processes
704
+ try {
705
+ const st = statSync(SWITCH_LOCK_PATH);
706
+ if (Date.now() - st.mtimeMs > LOCK_STALE_MS) {
707
+ unlinkSync(SWITCH_LOCK_PATH);
708
+ }
709
+ }
710
+ catch {
711
+ // No lock file or stat failed — fine
712
+ }
713
+ try {
714
+ const fd = openSync(SWITCH_LOCK_PATH, 'wx');
715
+ return () => {
716
+ try {
717
+ closeSync(fd);
718
+ }
719
+ catch {
720
+ /* already closed */
721
+ }
722
+ try {
723
+ unlinkSync(SWITCH_LOCK_PATH);
724
+ }
725
+ catch {
726
+ /* already removed */
727
+ }
728
+ };
729
+ }
730
+ catch {
731
+ return null;
732
+ }
733
+ }
734
+ /**
735
+ * Sync Claude Code's current keychain credential back to the previously
736
+ * active reagent account. Claude Code refreshes tokens in-place (new
737
+ * access token + rotated refresh token) but only updates its own keychain
738
+ * slot. Without this sync, reagent's stored copy goes stale and the next
739
+ * `account switch` writes a dead refresh token.
740
+ *
741
+ * Returns 'synced' if the credential was updated, 'no-op' if no active
742
+ * account or no change detected, or 'skipped' if sync was expected but
743
+ * could not complete (caller should warn).
744
+ */
745
+ function syncBackActiveCredential() {
746
+ const prevName = getActiveAccount();
747
+ if (!prevName)
748
+ return 'no-op';
749
+ const config = loadAccounts();
750
+ const prevAccount = config.accounts[prevName];
751
+ if (!prevAccount)
752
+ return 'skipped';
753
+ // Read the full raw credential from Claude Code's keychain — this contains
754
+ // refreshed tokens and all OAuth metadata that Claude Code may have updated.
755
+ const currentRaw = readClaudeCodeCredentialRaw();
756
+ if (!currentRaw)
757
+ return 'skipped';
758
+ // Compare raw strings — if Claude Code refreshed the token, the blob will differ.
759
+ const storedRaw = keychainGetRaw(prevAccount.keychain_service);
760
+ if (currentRaw !== storedRaw) {
761
+ // Store the complete raw blob so all OAuth metadata is preserved
762
+ keychainSetRaw(prevAccount.keychain_service, currentRaw);
763
+ return 'synced';
764
+ }
765
+ return 'no-op';
766
+ }
627
767
  function escapeShellSingleQuote(s) {
628
768
  return s.replace(/'/g, "'\\''");
629
769
  }
@@ -1 +1 @@
1
- {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/cli/commands/account.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../src/cli/commands/account.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,23 @@ import type { AccountCredential } from '../types/accounts.js';
3
3
  * Store a credential blob in macOS Keychain under a reagent-namespaced service.
4
4
  */
5
5
  export declare function keychainSet(service: string, credential: AccountCredential): void;
6
+ /**
7
+ * Store a raw JSON string in macOS Keychain under a reagent-namespaced service.
8
+ * Use this to preserve the full credential blob (including fields beyond AccountCredential)
9
+ * so that Claude Code's token refresh flow continues to work.
10
+ */
11
+ export declare function keychainSetRaw(service: string, data: string): void;
6
12
  /**
7
13
  * Retrieve a credential blob from macOS Keychain.
14
+ * Returns the normalized AccountCredential (6 known fields only).
15
+ * For the full blob, use keychainGetRaw().
8
16
  */
9
17
  export declare function keychainGet(service: string): AccountCredential | null;
18
+ /**
19
+ * Retrieve the raw JSON string from macOS Keychain.
20
+ * Preserves all fields, including those needed for OAuth refresh.
21
+ */
22
+ export declare function keychainGetRaw(service: string): string | null;
10
23
  /**
11
24
  * Delete a credential from macOS Keychain.
12
25
  */
@@ -16,9 +29,43 @@ export declare function keychainDelete(service: string): boolean;
16
29
  */
17
30
  export declare function keychainExists(service: string): boolean;
18
31
  /**
19
- * Read Claude Code's own keychain credential.
32
+ * Read Claude Code's own keychain credential as a normalized AccountCredential.
33
+ * This extracts only the 6 known fields — suitable for display and health checks.
34
+ * For storing/switching, use readClaudeCodeCredentialRaw() to preserve all fields.
20
35
  */
21
36
  export declare function readClaudeCodeCredential(): AccountCredential | null;
37
+ /**
38
+ * Read the raw JSON string from Claude Code's keychain entry.
39
+ * Returns the full blob (e.g., `{"claudeAiOauth": {...all fields...}}`)
40
+ * so that token refresh metadata (tokenEndpoint, clientId, etc.) is preserved.
41
+ */
42
+ export declare function readClaudeCodeCredentialRaw(): string | null;
43
+ /**
44
+ * Extract the claudeAiOauth inner object from a raw Claude Code credential string.
45
+ * Returns the full inner object as a JSON string, preserving all fields.
46
+ *
47
+ * @deprecated Use the raw blob directly — extracting strips sibling fields.
48
+ */
49
+ export declare function extractOAuthBlob(rawCredential: string): string | null;
50
+ /**
51
+ * Parse a raw credential string (which may be a full Claude Code blob
52
+ * like `{ claudeAiOauth: { ... } }` or a bare inner object) into an
53
+ * AccountCredential suitable for display, health checks, and env output.
54
+ *
55
+ * Returns null if the string cannot be parsed or lacks an access token.
56
+ */
57
+ export declare function parseCredentialForDisplay(raw: string): AccountCredential | null;
58
+ /**
59
+ * Validate that a raw credential string contains an access token.
60
+ * Does not extract or transform — just confirms viability.
61
+ */
62
+ export declare function rawCredentialHasToken(raw: string): boolean;
63
+ /**
64
+ * Ensure a raw credential string has the `claudeAiOauth` wrapper that
65
+ * Claude Code expects. Pre-fix keychain entries may store the bare inner
66
+ * object — this re-wraps them so token refresh works.
67
+ */
68
+ export declare function ensureClaudeCodeWrapper(raw: string): string;
22
69
  /**
23
70
  * Write back a credential to Claude Code's own keychain entry.
24
71
  *
@@ -1 +1 @@
1
- {"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../src/platform/keychain.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAI9D;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAiBhF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAWrE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASvD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASvD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,iBAAiB,GAAG,IAAI,CAsBnE;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAc5D"}
1
+ {"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../../src/platform/keychain.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAI9D;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAEhF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAOlE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAQrE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAW7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASvD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CASvD;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,iBAAiB,GAAG,IAAI,CAUnE;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,GAAG,IAAI,CAW3D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWrE;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAW/E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAW3D;AAiBD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAQ5D"}
@@ -5,25 +5,41 @@ const KEYCHAIN_ACCOUNT = 'reagent';
5
5
  * Store a credential blob in macOS Keychain under a reagent-namespaced service.
6
6
  */
7
7
  export function keychainSet(service, credential) {
8
- const data = JSON.stringify(credential);
9
- // Delete existing entry first (ignore errors if it doesn't exist)
8
+ keychainSetRaw(service, JSON.stringify(credential));
9
+ }
10
+ /**
11
+ * Store a raw JSON string in macOS Keychain under a reagent-namespaced service.
12
+ * Use this to preserve the full credential blob (including fields beyond AccountCredential)
13
+ * so that Claude Code's token refresh flow continues to work.
14
+ */
15
+ export function keychainSetRaw(service, data) {
16
+ // -U provides atomic upsert — no need to delete first (avoids race window)
17
+ execFileSync('security', ['add-generic-password', '-s', service, '-a', KEYCHAIN_ACCOUNT, '-w', data, '-U'], { stdio: 'pipe' });
18
+ }
19
+ /**
20
+ * Retrieve a credential blob from macOS Keychain.
21
+ * Returns the normalized AccountCredential (6 known fields only).
22
+ * For the full blob, use keychainGetRaw().
23
+ */
24
+ export function keychainGet(service) {
25
+ const raw = keychainGetRaw(service);
26
+ if (!raw)
27
+ return null;
10
28
  try {
11
- execFileSync('security', ['delete-generic-password', '-s', service, '-a', KEYCHAIN_ACCOUNT], {
12
- stdio: 'pipe',
13
- });
29
+ return normalizeCredential(JSON.parse(raw));
14
30
  }
15
31
  catch {
16
- // Entry doesn't exist yet — that's fine
32
+ return null;
17
33
  }
18
- execFileSync('security', ['add-generic-password', '-s', service, '-a', KEYCHAIN_ACCOUNT, '-w', data, '-U'], { stdio: 'pipe' });
19
34
  }
20
35
  /**
21
- * Retrieve a credential blob from macOS Keychain.
36
+ * Retrieve the raw JSON string from macOS Keychain.
37
+ * Preserves all fields, including those needed for OAuth refresh.
22
38
  */
23
- export function keychainGet(service) {
39
+ export function keychainGetRaw(service) {
24
40
  try {
25
41
  const raw = execFileSync('security', ['find-generic-password', '-s', service, '-a', KEYCHAIN_ACCOUNT, '-w'], { stdio: ['pipe', 'pipe', 'pipe'], encoding: 'utf8' });
26
- return JSON.parse(raw.trim());
42
+ return raw.trim();
27
43
  }
28
44
  catch {
29
45
  return null;
@@ -58,28 +74,127 @@ export function keychainExists(service) {
58
74
  }
59
75
  }
60
76
  /**
61
- * Read Claude Code's own keychain credential.
77
+ * Read Claude Code's own keychain credential as a normalized AccountCredential.
78
+ * This extracts only the 6 known fields — suitable for display and health checks.
79
+ * For storing/switching, use readClaudeCodeCredentialRaw() to preserve all fields.
62
80
  */
63
81
  export function readClaudeCodeCredential() {
64
82
  try {
65
- const raw = execFileSync('security', ['find-generic-password', '-s', 'Claude Code-credentials', '-w'], { stdio: ['pipe', 'pipe', 'pipe'], encoding: 'utf8' });
66
- const parsed = JSON.parse(raw.trim());
67
- // Claude Code stores {claudeAiOauth: {accessToken, refreshToken, expiresAt, subscriptionType, rateLimitTier, ...}}
68
- // Unwrap the outer envelope if present, then normalize field names
83
+ const raw = readClaudeCodeCredentialRaw();
84
+ if (!raw)
85
+ return null;
86
+ const parsed = JSON.parse(raw);
87
+ const inner = parsed.claudeAiOauth || parsed;
88
+ return normalizeCredential(inner);
89
+ }
90
+ catch {
91
+ return null;
92
+ }
93
+ }
94
+ /**
95
+ * Read the raw JSON string from Claude Code's keychain entry.
96
+ * Returns the full blob (e.g., `{"claudeAiOauth": {...all fields...}}`)
97
+ * so that token refresh metadata (tokenEndpoint, clientId, etc.) is preserved.
98
+ */
99
+ export function readClaudeCodeCredentialRaw() {
100
+ try {
101
+ const raw = execFileSync('security', ['find-generic-password', '-s', 'Claude Code-credentials', '-a', userInfo().username, '-w'], { stdio: ['pipe', 'pipe', 'pipe'], encoding: 'utf8' });
102
+ return raw.trim();
103
+ }
104
+ catch {
105
+ return null;
106
+ }
107
+ }
108
+ /**
109
+ * Extract the claudeAiOauth inner object from a raw Claude Code credential string.
110
+ * Returns the full inner object as a JSON string, preserving all fields.
111
+ *
112
+ * @deprecated Use the raw blob directly — extracting strips sibling fields.
113
+ */
114
+ export function extractOAuthBlob(rawCredential) {
115
+ try {
116
+ const parsed = JSON.parse(rawCredential);
69
117
  const inner = parsed.claudeAiOauth || parsed;
70
- return {
71
- accessToken: inner.accessToken || inner.oauth_token,
72
- refreshToken: inner.refreshToken || inner.refresh_token,
73
- expiresAt: inner.expiresAt || inner.expiry,
74
- scopes: inner.scopes,
75
- subscriptionType: inner.subscriptionType,
76
- rateLimitTier: inner.rateLimitTier,
77
- };
118
+ if (!inner || typeof inner !== 'object')
119
+ return null;
120
+ // Verify it has at least an access token
121
+ if (!inner.accessToken && !inner.oauth_token)
122
+ return null;
123
+ return JSON.stringify(inner);
78
124
  }
79
125
  catch {
80
126
  return null;
81
127
  }
82
128
  }
129
+ /**
130
+ * Parse a raw credential string (which may be a full Claude Code blob
131
+ * like `{ claudeAiOauth: { ... } }` or a bare inner object) into an
132
+ * AccountCredential suitable for display, health checks, and env output.
133
+ *
134
+ * Returns null if the string cannot be parsed or lacks an access token.
135
+ */
136
+ export function parseCredentialForDisplay(raw) {
137
+ try {
138
+ const parsed = JSON.parse(raw);
139
+ const inner = parsed.claudeAiOauth || parsed;
140
+ if (!inner || typeof inner !== 'object')
141
+ return null;
142
+ const cred = normalizeCredential(inner);
143
+ if (!cred.accessToken)
144
+ return null;
145
+ return cred;
146
+ }
147
+ catch {
148
+ return null;
149
+ }
150
+ }
151
+ /**
152
+ * Validate that a raw credential string contains an access token.
153
+ * Does not extract or transform — just confirms viability.
154
+ */
155
+ export function rawCredentialHasToken(raw) {
156
+ try {
157
+ const parsed = JSON.parse(raw);
158
+ const inner = parsed.claudeAiOauth || parsed;
159
+ return !!(inner?.accessToken || inner?.oauth_token);
160
+ }
161
+ catch {
162
+ return false;
163
+ }
164
+ }
165
+ /**
166
+ * Ensure a raw credential string has the `claudeAiOauth` wrapper that
167
+ * Claude Code expects. Pre-fix keychain entries may store the bare inner
168
+ * object — this re-wraps them so token refresh works.
169
+ */
170
+ export function ensureClaudeCodeWrapper(raw) {
171
+ try {
172
+ const parsed = JSON.parse(raw);
173
+ if (parsed.claudeAiOauth)
174
+ return raw;
175
+ if (parsed.accessToken || parsed.oauth_token) {
176
+ return JSON.stringify({ claudeAiOauth: parsed });
177
+ }
178
+ return raw;
179
+ }
180
+ catch {
181
+ return raw;
182
+ }
183
+ }
184
+ /**
185
+ * Normalize any credential-like object into the known AccountCredential fields.
186
+ * Used for display, health checks, and env output — NOT for storage.
187
+ */
188
+ function normalizeCredential(inner) {
189
+ return {
190
+ accessToken: (inner.accessToken || inner.oauth_token),
191
+ refreshToken: (inner.refreshToken || inner.refresh_token),
192
+ expiresAt: (inner.expiresAt || inner.expiry),
193
+ scopes: inner.scopes,
194
+ subscriptionType: inner.subscriptionType,
195
+ rateLimitTier: inner.rateLimitTier,
196
+ };
197
+ }
83
198
  /**
84
199
  * Write back a credential to Claude Code's own keychain entry.
85
200
  *
@@ -89,14 +204,7 @@ export function readClaudeCodeCredential() {
89
204
  */
90
205
  export function writeClaudeCodeCredential(data) {
91
206
  const account = userInfo().username;
92
- try {
93
- execFileSync('security', ['delete-generic-password', '-s', 'Claude Code-credentials'], {
94
- stdio: 'pipe',
95
- });
96
- }
97
- catch {
98
- // Doesn't exist yet
99
- }
207
+ // -U provides atomic upsert — no need to delete first (avoids race window)
100
208
  execFileSync('security', ['add-generic-password', '-s', 'Claude Code-credentials', '-a', account, '-w', data, '-U'], { stdio: 'pipe' });
101
209
  }
102
210
  //# sourceMappingURL=keychain.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../src/platform/keychain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keychain.js","sourceRoot":"","sources":["../../src/platform/keychain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEnC;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,UAA6B;IACxE,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,IAAY;IAC1D,2EAA2E;IAC3E,YAAY,CACV,UAAU,EACV,CAAC,sBAAsB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EACjF,EAAE,KAAK,EAAE,MAAM,EAAE,CAClB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CACtB,UAAU,EACV,CAAC,uBAAuB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,CAAC,EACtE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CACtD,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,IAAI,CAAC;QACH,YAAY,CAAC,UAAU,EAAE,CAAC,yBAAyB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,EAAE;YAC3F,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,IAAI,CAAC;QACH,YAAY,CAAC,UAAU,EAAE,CAAC,uBAAuB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,EAAE;YACzF,KAAK,EAAE,MAAM;SACd,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,2BAA2B,EAAE,CAAC;QAC1C,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAC;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC;QAC7C,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,2BAA2B;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CACtB,UAAU,EACV,CAAC,uBAAuB,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,EAC3F,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CACtD,CAAC;QACF,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,aAAqB;IACpD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC;QAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACrD,yCAAyC;QACzC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QAC1D,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACnD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC;QAC7C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACrD,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAgC,CAAC,CAAC;QACnE,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,IAAI,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC;QAC7C,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,WAAW,IAAI,KAAK,EAAE,WAAW,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,GAAW;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,CAAC,aAAa;YAAE,OAAO,GAAG,CAAC;QACrC,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;QACnD,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,KAA8B;IACzD,OAAO;QACL,WAAW,EAAE,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAW;QAC/D,YAAY,EAAE,CAAC,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,aAAa,CAAuB;QAC/E,SAAS,EAAE,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,CAAgC;QAC3E,MAAM,EAAE,KAAK,CAAC,MAA8B;QAC5C,gBAAgB,EAAE,KAAK,CAAC,gBAAsC;QAC9D,aAAa,EAAE,KAAK,CAAC,aAAmC;KACzD,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,MAAM,OAAO,GAAG,QAAQ,EAAE,CAAC,QAAQ,CAAC;IACpC,2EAA2E;IAC3E,YAAY,CACV,UAAU,EACV,CAAC,sBAAsB,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAC1F,EAAE,KAAK,EAAE,MAAM,EAAE,CAClB,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bookedsolid/reagent",
3
- "version": "0.15.5",
3
+ "version": "0.15.8",
4
4
  "description": "Governance layer for Claude Code — policy enforcement, hook-based safety gates, and audit logging for AI-assisted projects",
5
5
  "license": "MIT",
6
6
  "author": "Booked Solid Technology <oss@bookedsolid.tech> (https://bookedsolid.tech)",