auth: add Anthropic auth token storage

This commit is contained in:
William Valentin
2026-02-15 10:27:32 -08:00
parent bcf6c377d5
commit 6375f56f67
3 changed files with 75 additions and 3 deletions
+41 -2
View File
@@ -7,7 +7,9 @@ const AUTH_FILE = resolve(AUTH_DIR, 'auth.json');
export interface AnthropicAuthInfo {
/** Anthropic API key. */
api_key: string;
api_key?: string;
/** Anthropic auth token (OAuth/token mode). */
auth_token?: string;
created_at: string;
}
@@ -51,7 +53,21 @@ export function storeAnthropicAuth(apiKey: string): void {
throw new Error('Anthropic API key is empty');
}
const store = readAuthStore();
store.anthropic = { api_key: trimmed, created_at: new Date().toISOString() };
store.anthropic = { ...store.anthropic, api_key: trimmed, created_at: new Date().toISOString() };
writeAuthStore(store);
}
export function loadStoredAnthropicAuthToken(): string | null {
return loadStoredAnthropicAuth()?.auth_token ?? null;
}
export function storeAnthropicAuthToken(token: string): void {
const trimmed = token.trim();
if (!trimmed) {
throw new Error('Anthropic auth token is empty');
}
const store = readAuthStore();
store.anthropic = { ...store.anthropic, auth_token: trimmed, created_at: new Date().toISOString() };
writeAuthStore(store);
}
@@ -61,6 +77,19 @@ export function clearAnthropicAuth(): void {
writeAuthStore(store);
}
export function clearAnthropicAuthToken(): void {
const store = readAuthStore();
if (!store.anthropic) {
writeAuthStore(store);
return;
}
delete store.anthropic.auth_token;
if (!store.anthropic.api_key && !store.anthropic.auth_token) {
delete store.anthropic;
}
writeAuthStore(store);
}
/**
* Get an Anthropic API key from any available source.
* Priority: ANTHROPIC_API_KEY → stored auth.json.
@@ -70,3 +99,13 @@ export function getAnthropicApiKey(): string | null {
?? loadStoredAnthropicAuth()?.api_key
?? null;
}
/**
* Get an Anthropic auth token from any available source.
* Priority: ANTHROPIC_AUTH_TOKEN → stored auth.json.
*/
export function getAnthropicAuthToken(): string | null {
return process.env.ANTHROPIC_AUTH_TOKEN
?? loadStoredAnthropicAuth()?.auth_token
?? null;
}