Skip to content

Commit e643828

Browse files
authored
perf: defer realtime smoke live imports (#100002)
1 parent ba7b5db commit e643828

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

scripts/dev/realtime-talk-live-smoke.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,6 @@ import { mkdtemp, rm, writeFile } from "node:fs/promises";
33
import { tmpdir } from "node:os";
44
import path from "node:path";
55
import { pathToFileURL } from "node:url";
6-
import { GoogleGenAI, Modality } from "@google/genai";
7-
import { chromium, type Browser } from "playwright";
8-
import { createServer } from "vite";
9-
import { buildOpenAIRealtimeVoiceProvider } from "../../extensions/openai/realtime-voice-provider.ts";
106
import { readBoundedResponseText } from "../lib/bounded-response.ts";
117
import {
128
parseStrictIntegerOption,
@@ -30,6 +26,10 @@ type RealtimeSmokeCliOptions = {
3026
help: boolean;
3127
};
3228

29+
// Keep live stacks behind their owning smoke paths so help and safety helpers stay lightweight.
30+
type Browser = import("playwright").Browser;
31+
type ViteDevServer = Awaited<ReturnType<(typeof import("vite"))["createServer"]>>;
32+
3333
type SmokeResult = {
3434
name: string;
3535
ok: boolean;
@@ -269,6 +269,8 @@ async function createOpenAIClientSecret(
269269
}
270270

271271
async function smokeOpenAIBackendBridge(apiKey: string): Promise<SmokeResult> {
272+
const { buildOpenAIRealtimeVoiceProvider } =
273+
await import("../../extensions/openai/realtime-voice-provider.ts");
272274
const provider = buildOpenAIRealtimeVoiceProvider();
273275
const events: string[] = [];
274276
const bridge = provider.createBridge({
@@ -445,6 +447,7 @@ async function smokeOpenAIWebRtc(browser: Browser, apiKey: string): Promise<Smok
445447
}
446448

447449
async function createGoogleLiveToken(apiKey: string): Promise<string> {
450+
const { GoogleGenAI, Modality } = await import("@google/genai");
448451
const ai = new GoogleGenAI({
449452
apiKey,
450453
httpOptions: { apiVersion: "v1alpha" },
@@ -574,9 +577,10 @@ async function smokeGoogleLiveBrowserWs(browser: Browser, apiKey: string): Promi
574577
}
575578

576579
async function smokeGatewayRelayBrowser(browser: Browser): Promise<SmokeResult> {
577-
let server: Awaited<ReturnType<typeof createServer>> | undefined;
580+
let server: ViteDevServer | undefined;
578581
const dir = await mkdtemp(path.join(tmpdir(), "openclaw-realtime-talk-"));
579582
try {
583+
const { createServer } = await import("vite");
580584
const repoRoot = process.cwd().replaceAll("\\", "/");
581585
const relayModulePath = JSON.stringify(
582586
`/@fs/${repoRoot}/ui/src/ui/chat/realtime-talk-gateway-relay.ts`,
@@ -766,6 +770,7 @@ async function main(argv = process.argv.slice(2)): Promise<void> {
766770
console.log(usage());
767771
return;
768772
}
773+
const { chromium } = await import("playwright");
769774
const openAIKey = getEnv("OPENAI_API_KEY");
770775
const googleKey = getEnv("GEMINI_API_KEY") ?? getEnv("GOOGLE_API_KEY");
771776
const browser = await chromium.launch({

0 commit comments

Comments
 (0)