From b0629d7ee5b1b2da8a10e0716a036ea3a246ee13 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 22:34:21 +0000 Subject: [PATCH 1/2] Initial plan From bb808ff9c31141d41c049499de180632193840e4 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 27 Feb 2026 22:38:19 +0000 Subject: [PATCH 2/2] Fix review feedback: timeout cleanup, transcript_segments shape, ENABLE_VERTEX_AI boolean parsing Co-authored-by: groupthinking <154503486+groupthinking@users.noreply.github.com> --- apps/web/src/app/api/transcribe/route.ts | 3 +-- apps/web/src/app/api/video/route.ts | 6 ++---- src/youtube_extension/services/ai/gemini_service.py | 2 +- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/apps/web/src/app/api/transcribe/route.ts b/apps/web/src/app/api/transcribe/route.ts index 342d06c74..c7209c6fc 100644 --- a/apps/web/src/app/api/transcribe/route.ts +++ b/apps/web/src/app/api/transcribe/route.ts @@ -47,8 +47,7 @@ export async function POST(request: Request) { headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ video_url: url, language }), signal: controller.signal, - }); - clearTimeout(timeout); + }).finally(() => clearTimeout(timeout)); if (ytResponse.ok) { const result = await ytResponse.json(); diff --git a/apps/web/src/app/api/video/route.ts b/apps/web/src/app/api/video/route.ts index 11fe945f3..b0ebc2b91 100644 --- a/apps/web/src/app/api/video/route.ts +++ b/apps/web/src/app/api/video/route.ts @@ -29,8 +29,7 @@ export async function POST(request: Request) { headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ video_url: url, language: 'en' }), signal: controller.signal, - }); - clearTimeout(timeout); + }).finally(() => clearTimeout(timeout)); if (response.ok) { const result = await response.json(); @@ -75,7 +74,7 @@ export async function POST(request: Request) { result: { success: result.success, insights, - transcript_segments: result.transcript?.length || 0, + transcript_segments: result.transcript?.segments?.length || 0, agents_used: result.orchestration_meta?.agents_used || [], errors: result.errors || [], raw_response: result, @@ -96,7 +95,6 @@ export async function POST(request: Request) { // Step 1: Get transcript let transcript = ''; - let transcript = ''; let transcriptSource = 'none'; try { const transcribeRes = await fetch(`${origin}/api/transcribe`, { diff --git a/src/youtube_extension/services/ai/gemini_service.py b/src/youtube_extension/services/ai/gemini_service.py index 4d4c9a283..ee05892c4 100644 --- a/src/youtube_extension/services/ai/gemini_service.py +++ b/src/youtube_extension/services/ai/gemini_service.py @@ -37,7 +37,7 @@ # Vertex AI SDK probes the GCE metadata server on import which can hang # for 5+ seconds outside GCP. Only import when explicitly requested via # environment variables to keep startup fast in local / CI environments. - if os.getenv("GOOGLE_CLOUD_PROJECT") or os.getenv("ENABLE_VERTEX_AI"): + if os.getenv("GOOGLE_CLOUD_PROJECT") or os.getenv("ENABLE_VERTEX_AI", "").lower() in {"1", "true", "yes"}: import vertexai from vertexai.generative_models import GenerativeModel, Part