feat: support ANTHROPIC_BASE_URL in EnvManager (#1627)
* feat: add custom OpenRouter base URL support Allow users to configure a custom base URL for OpenRouter API calls through settings UI and environment management. Generated with AI Co-Authored-By: AI Partner * refactor: remove OpenRouter base URL customization, keep Claude URL changes Only retain ANTHROPIC_BASE_URL and ANTHROPIC_AUTH_TOKEN support in EnvManager for custom Claude API endpoint configuration. Generated with AI Co-Authored-By: AI Partner * chore: revert build artifacts to match main Generated with AI Co-Authored-By: AI Partner * fix: remove ANTHROPIC_AUTH_TOKEN, add ANTHROPIC_BASE_URL persistence - Remove unnecessary ANTHROPIC_AUTH_TOKEN (inherited from parent process) - Add ANTHROPIC_BASE_URL to saveClaudeMemEnv() to fix config persistence - Keep only ANTHROPIC_BASE_URL support for custom API endpoint Generated with AI Co-Authored-By: AI Partner
This commit is contained in:
@@ -40,6 +40,7 @@ export const MANAGED_CREDENTIAL_KEYS = [
|
||||
export interface ClaudeMemEnv {
|
||||
// Credentials (optional - empty means use CLI billing for Claude)
|
||||
ANTHROPIC_API_KEY?: string;
|
||||
ANTHROPIC_BASE_URL?: string;
|
||||
GEMINI_API_KEY?: string;
|
||||
OPENROUTER_API_KEY?: string;
|
||||
}
|
||||
@@ -115,6 +116,7 @@ export function loadClaudeMemEnv(): ClaudeMemEnv {
|
||||
// Only return managed credential keys
|
||||
const result: ClaudeMemEnv = {};
|
||||
if (parsed.ANTHROPIC_API_KEY) result.ANTHROPIC_API_KEY = parsed.ANTHROPIC_API_KEY;
|
||||
if (parsed.ANTHROPIC_BASE_URL) result.ANTHROPIC_BASE_URL = parsed.ANTHROPIC_BASE_URL;
|
||||
if (parsed.GEMINI_API_KEY) result.GEMINI_API_KEY = parsed.GEMINI_API_KEY;
|
||||
if (parsed.OPENROUTER_API_KEY) result.OPENROUTER_API_KEY = parsed.OPENROUTER_API_KEY;
|
||||
|
||||
@@ -151,6 +153,13 @@ export function saveClaudeMemEnv(env: ClaudeMemEnv): void {
|
||||
delete updated.ANTHROPIC_API_KEY;
|
||||
}
|
||||
}
|
||||
if (env.ANTHROPIC_BASE_URL !== undefined) {
|
||||
if (env.ANTHROPIC_BASE_URL) {
|
||||
updated.ANTHROPIC_BASE_URL = env.ANTHROPIC_BASE_URL;
|
||||
} else {
|
||||
delete updated.ANTHROPIC_BASE_URL;
|
||||
}
|
||||
}
|
||||
if (env.GEMINI_API_KEY !== undefined) {
|
||||
if (env.GEMINI_API_KEY) {
|
||||
updated.GEMINI_API_KEY = env.GEMINI_API_KEY;
|
||||
@@ -210,6 +219,12 @@ export function buildIsolatedEnv(includeCredentials: boolean = true): Record<str
|
||||
if (credentials.ANTHROPIC_API_KEY) {
|
||||
isolatedEnv.ANTHROPIC_API_KEY = credentials.ANTHROPIC_API_KEY;
|
||||
}
|
||||
// Override ANTHROPIC_BASE_URL from .env if configured
|
||||
// This ensures the SDK subprocess uses a stable API endpoint instead of
|
||||
// inheriting a dynamic local proxy port that may become stale
|
||||
if (credentials.ANTHROPIC_BASE_URL) {
|
||||
isolatedEnv.ANTHROPIC_BASE_URL = credentials.ANTHROPIC_BASE_URL;
|
||||
}
|
||||
// Note: GEMINI_API_KEY and OPENROUTER_API_KEY pass through from process.env,
|
||||
// but claude-mem's .env takes precedence if configured
|
||||
if (credentials.GEMINI_API_KEY) {
|
||||
|
||||
Reference in New Issue
Block a user