import { googleVertexApi } from "../api/google-vertex.lazy.js";
import { createProvider } from "../models.js";
import { GOOGLE_VERTEX_MODELS } from "./google-vertex.models.js";
const VERTEX_ADC_PATH = "~/.config/gcloud/application_default_credentials.json";
/**
 * Vertex accepts an explicit API key or Application Default Credentials
 * (`gcloud auth application-default login`). ADC additionally requires
 * project and location env vars, which the implementation reads itself.
 */
const vertexAuth = {
    name: "Google Cloud credentials",
    resolve: async ({ ctx, credential }) => {
        const key = credential?.key ?? (await ctx.env("GOOGLE_CLOUD_API_KEY"));
        if (key)
            return { auth: { apiKey: key }, source: credential?.key ? "stored credential" : "GOOGLE_CLOUD_API_KEY" };
        const adcPath = await ctx.env("GOOGLE_APPLICATION_CREDENTIALS");
        const hasCredentials = await ctx.fileExists(adcPath ?? VERTEX_ADC_PATH);
        const hasProject = Boolean((await ctx.env("GOOGLE_CLOUD_PROJECT")) ?? (await ctx.env("GCLOUD_PROJECT")));
        const hasLocation = Boolean(await ctx.env("GOOGLE_CLOUD_LOCATION"));
        if (hasCredentials && hasProject && hasLocation) {
            return { auth: {}, source: "gcloud application default credentials" };
        }
        return undefined;
    },
};
export function googleVertexProvider() {
    return createProvider({
        id: "google-vertex",
        name: "Google Vertex AI",
        auth: { apiKey: vertexAuth },
        models: Object.values(GOOGLE_VERTEX_MODELS),
        api: googleVertexApi(),
    });
}
//# sourceMappingURL=google-vertex.js.map