Skip to content

Commit fced29d

Browse files
committed
perf(extensions): cache meeting runtime loaders
1 parent 4f074c3 commit fced29d

2 files changed

Lines changed: 18 additions & 6 deletions

File tree

extensions/google-meet/index.ts

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,19 @@ import { handleGoogleMeetNodeHostCommand } from "./src/node-host.js";
3737
import { GoogleMeetRuntime } from "./src/runtime.js";
3838
import { isGoogleMeetBrowserManualActionError } from "./src/transports/chrome-create.js";
3939

40+
let googleMeetCreateModulePromise: Promise<typeof import("./src/create.js")> | null = null;
41+
let googleMeetCliModulePromise: Promise<typeof import("./src/cli.js")> | null = null;
42+
43+
const loadGoogleMeetCreateModule = async () => {
44+
googleMeetCreateModulePromise ??= import("./src/create.js");
45+
return await googleMeetCreateModulePromise;
46+
};
47+
48+
const loadGoogleMeetCliModule = async () => {
49+
googleMeetCliModulePromise ??= import("./src/cli.js");
50+
return await googleMeetCliModulePromise;
51+
};
52+
4053
const googleMeetConfigSchema = {
4154
parse(value: unknown) {
4255
return resolveGoogleMeetConfig(value);
@@ -493,7 +506,7 @@ async function createMeetFromParams(params: {
493506
runtime: OpenClawPluginApi["runtime"];
494507
raw: Record<string, unknown>;
495508
}) {
496-
const create = await import("./src/create.js");
509+
const create = await loadGoogleMeetCreateModule();
497510
return create.createMeetFromParams(params);
498511
}
499512

@@ -503,7 +516,7 @@ async function createAndJoinMeetFromParams(params: {
503516
raw: Record<string, unknown>;
504517
ensureRuntime: () => Promise<GoogleMeetRuntime>;
505518
}) {
506-
const create = await import("./src/create.js");
519+
const create = await loadGoogleMeetCreateModule();
507520
return create.createAndJoinMeetFromParams(params);
508521
}
509522

@@ -615,7 +628,7 @@ async function exportGoogleMeetBundleFromParams(
615628
}),
616629
]);
617630
const { buildGoogleMeetExportManifest, googleMeetExportFileNames, writeMeetExportBundle } =
618-
await import("./src/cli.js");
631+
await loadGoogleMeetCliModule();
619632
const calendarId = normalizeOptionalString(raw.calendarId);
620633
const request = {
621634
...(resolved.meeting ? { meeting: resolved.meeting } : {}),
@@ -1189,7 +1202,7 @@ export default definePluginEntry({
11891202

11901203
api.registerCli(
11911204
async ({ program }) => {
1192-
const { registerGoogleMeetCli } = await import("./src/cli.js");
1205+
const { registerGoogleMeetCli } = await loadGoogleMeetCliModule();
11931206
registerGoogleMeetCli({
11941207
program,
11951208
config,

extensions/imessage/src/actions.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import {
2424
rememberIMessageReplyCache,
2525
type IMessageChatContext,
2626
} from "./monitor-reply-cache.js";
27-
import { getCachedIMessagePrivateApiStatus } from "./probe.js";
27+
import { getCachedIMessagePrivateApiStatus, probeIMessagePrivateApi } from "./probe.js";
2828
import { parseIMessageTarget, type IMessageTarget } from "./targets.js";
2929

3030
const loadIMessageActionsRuntime = createLazyRuntimeNamedExport(
@@ -417,7 +417,6 @@ export const imessageMessageActions: ChannelMessageActionAdapter = {
417417
// status adapter, which doesn't fire eagerly on first dispatch. Run
418418
// an inline probe so the first react/send-rich attempt after `imsg
419419
// launch` succeeds without requiring a manual `channels status`.
420-
const { probeIMessagePrivateApi } = await import("./probe.js");
421420
privateApiStatus = await probeIMessagePrivateApi(
422421
cliPathForProbe,
423422
account.config.probeTimeoutMs ?? DEFAULT_IMESSAGE_PROBE_TIMEOUT_MS,

0 commit comments

Comments
 (0)