mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-17 08:00:59 +00:00
fix(ai): cache vertex adc credentials file check
This commit is contained in:
parent
a3f30e085a
commit
63093bf7e4
2 changed files with 13 additions and 3 deletions
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Vertex AI dummy value for `getEnvApiKey()`: Returns `"<authenticated>"` when Application Default Credentials are configured (`~/.config/gcloud/application_default_credentials.json` exists) and both `GOOGLE_CLOUD_PROJECT` (or `GCLOUD_PROJECT`) and `GOOGLE_CLOUD_LOCATION` are set. This allows `streamSimple()` to work with Vertex AI without explicit `apiKey` option.
|
- Vertex AI dummy value for `getEnvApiKey()`: Returns `"<authenticated>"` when Application Default Credentials are configured (`~/.config/gcloud/application_default_credentials.json` exists) and both `GOOGLE_CLOUD_PROJECT` (or `GCLOUD_PROJECT`) and `GOOGLE_CLOUD_LOCATION` are set. This allows `streamSimple()` to work with Vertex AI without explicit `apiKey` option. The ADC credentials file existence check is cached per-process to avoid repeated filesystem access.
|
||||||
|
|
||||||
## [0.34.2] - 2026-01-04
|
## [0.34.2] - 2026-01-04
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,17 @@ import type {
|
||||||
SimpleStreamOptions,
|
SimpleStreamOptions,
|
||||||
} from "./types.js";
|
} from "./types.js";
|
||||||
|
|
||||||
|
const VERTEX_ADC_CREDENTIALS_PATH = join(homedir(), ".config", "gcloud", "application_default_credentials.json");
|
||||||
|
|
||||||
|
let cachedVertexAdcCredentialsExists: boolean | null = null;
|
||||||
|
|
||||||
|
function hasVertexAdcCredentials(): boolean {
|
||||||
|
if (cachedVertexAdcCredentialsExists === null) {
|
||||||
|
cachedVertexAdcCredentialsExists = existsSync(VERTEX_ADC_CREDENTIALS_PATH);
|
||||||
|
}
|
||||||
|
return cachedVertexAdcCredentialsExists;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get API key for provider from known environment variables, e.g. OPENAI_API_KEY.
|
* Get API key for provider from known environment variables, e.g. OPENAI_API_KEY.
|
||||||
*
|
*
|
||||||
|
|
@ -45,8 +56,7 @@ export function getEnvApiKey(provider: any): string | undefined {
|
||||||
// Vertex AI uses Application Default Credentials, not API keys.
|
// Vertex AI uses Application Default Credentials, not API keys.
|
||||||
// Auth is configured via `gcloud auth application-default login`.
|
// Auth is configured via `gcloud auth application-default login`.
|
||||||
if (provider === "google-vertex") {
|
if (provider === "google-vertex") {
|
||||||
const credentialsPath = join(homedir(), ".config", "gcloud", "application_default_credentials.json");
|
const hasCredentials = hasVertexAdcCredentials();
|
||||||
const hasCredentials = existsSync(credentialsPath);
|
|
||||||
const hasProject = !!(process.env.GOOGLE_CLOUD_PROJECT || process.env.GCLOUD_PROJECT);
|
const hasProject = !!(process.env.GOOGLE_CLOUD_PROJECT || process.env.GCLOUD_PROJECT);
|
||||||
const hasLocation = !!process.env.GOOGLE_CLOUD_LOCATION;
|
const hasLocation = !!process.env.GOOGLE_CLOUD_LOCATION;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue