From 82d96806d801becee63b3e1cfa52362bc5e0ae39 Mon Sep 17 00:00:00 2001 From: Alex Castillo Date: Fri, 30 Oct 2026 14:10:49 -0400 Subject: [PATCH 1/2] fix(cli): default Vertex captioning to a live Gemini model Co-Authored-By: Claude Sonnet 5.5 --- packages/cli/src/capture/contentExtractor.test.ts | 2 +- packages/cli/src/capture/contentExtractor.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/capture/contentExtractor.test.ts b/packages/cli/src/capture/contentExtractor.test.ts index 10d7c5e75f..a311fc474b 100644 --- a/packages/cli/src/capture/contentExtractor.test.ts +++ b/packages/cli/src/capture/contentExtractor.test.ts @@ -579,7 +579,7 @@ describe("captionImagesWithGemini — Vertex AI provider", () => { expect(generateContentMock).toHaveBeenCalledTimes(1); expect(thinkingConfig).toEqual({ thinkingBudget: 0 }); // The API's flash-lite preview id is not resolvable on Vertex, so the default differs. - expect(model).toBe("gemini-2.5-flash"); + expect(model).toBe("gemini-3.1-flash-lite"); }); it("skips captioning when the service account is unparseable, without echoing it", async () => { diff --git a/packages/cli/src/capture/contentExtractor.ts b/packages/cli/src/capture/contentExtractor.ts index a951f43177..e546085098 100644 --- a/packages/cli/src/capture/contentExtractor.ts +++ b/packages/cli/src/capture/contentExtractor.ts @@ -308,7 +308,7 @@ export async function captionImagesWithGemini( // the API's flash-lite preview id is not resolvable there — so it carries its own default. const model = { openrouter: process.env.HYPERFRAMES_OPENROUTER_MODEL || "google/gemini-3.1-flash-lite", - vertex: process.env.HYPERFRAMES_VERTEX_MODEL || "gemini-2.5-flash", + vertex: process.env.HYPERFRAMES_VERTEX_MODEL || "gemini-3.1-flash-lite", gemini: process.env.HYPERFRAMES_GEMINI_MODEL || "gemini-3.1-flash-lite-preview", }[provider]; const requestTimeoutMs = resolveVisionRequestTimeoutMs(); From 0ef576e57ae4a9a6e9ac0ceb5646fe3b80252a42 Mon Sep 17 00:00:00 2001 From: Alex Castillo Date: Fri, 30 Oct 2026 15:44:57 -0400 Subject: [PATCH 2/2] fix(cli): default Vertex captioning location to global gemini-3.1-flash-lite is served on global and the us/eu multi-regions, not on a single region, so the us-central1 default still failed every caption request for deployments that set no location. The Vertex default test now pins the location the client is built with. Co-Authored-By: Claude Sonnet 5.5 --- packages/cli/src/capture/contentExtractor.test.ts | 2 +- packages/cli/src/capture/contentExtractor.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/cli/src/capture/contentExtractor.test.ts b/packages/cli/src/capture/contentExtractor.test.ts index a311fc474b..1cfee8d806 100644 --- a/packages/cli/src/capture/contentExtractor.test.ts +++ b/packages/cli/src/capture/contentExtractor.test.ts @@ -524,7 +524,7 @@ describe("captionImagesWithGemini — Vertex AI provider", () => { expect(clientOptions[0]).toMatchObject({ vertexai: true, project: "prefab-kit-000000", - location: "us-central1", + location: "global", googleAuthOptions: { credentials: JSON.parse(SERVICE_ACCOUNT) }, }); expect(clientOptions[0]).not.toHaveProperty("apiKey"); diff --git a/packages/cli/src/capture/contentExtractor.ts b/packages/cli/src/capture/contentExtractor.ts index e546085098..6786fe3651 100644 --- a/packages/cli/src/capture/contentExtractor.ts +++ b/packages/cli/src/capture/contentExtractor.ts @@ -391,7 +391,7 @@ export async function captionImagesWithGemini( ai = new GoogleGenAI({ vertexai: true, project: vertexProject, - location: process.env.HYPERFRAMES_VERTEX_LOCATION || "us-central1", + location: process.env.HYPERFRAMES_VERTEX_LOCATION || "global", googleAuthOptions: { credentials }, }); } else {