From 4fd1e1c64f31464a507689ff388eceb70f39de5d Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Thu, 2 Apr 2026 13:50:44 +0900 Subject: [PATCH] perf(memory): lazy-load matrix client runtime deps --- .../matrix/src/matrix/client/create-client.ts | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/extensions/matrix/src/matrix/client/create-client.ts b/extensions/matrix/src/matrix/client/create-client.ts index ca255e6929f..44fe74c7f63 100644 --- a/extensions/matrix/src/matrix/client/create-client.ts +++ b/extensions/matrix/src/matrix/client/create-client.ts @@ -1,15 +1,32 @@ import fs from "node:fs"; import type { PinnedDispatcherPolicy } from "openclaw/plugin-sdk/infra-runtime"; import type { SsrFPolicy } from "../../runtime-api.js"; -import { MatrixClient } from "../sdk.js"; +import type { MatrixClient } from "../sdk.js"; import { resolveValidatedMatrixHomeserverUrl } from "./config.js"; -import { ensureMatrixSdkLoggingConfigured } from "./logging.js"; import { maybeMigrateLegacyStorage, resolveMatrixStoragePaths, writeStorageMeta, } from "./storage.js"; +type MatrixCreateClientRuntimeDeps = { + MatrixClient: typeof import("../sdk.js").MatrixClient; + ensureMatrixSdkLoggingConfigured: typeof import("./logging.js").ensureMatrixSdkLoggingConfigured; +}; + +let matrixCreateClientRuntimeDepsPromise: Promise | undefined; + +async function loadMatrixCreateClientRuntimeDeps(): Promise { + matrixCreateClientRuntimeDepsPromise ??= Promise.all([ + import("../sdk.js"), + import("./logging.js"), + ]).then(([sdkModule, loggingModule]) => ({ + MatrixClient: sdkModule.MatrixClient, + ensureMatrixSdkLoggingConfigured: loggingModule.ensureMatrixSdkLoggingConfigured, + })); + return await matrixCreateClientRuntimeDepsPromise; +} + export async function createMatrixClient(params: { homeserver: string; userId?: string; @@ -25,6 +42,8 @@ export async function createMatrixClient(params: { ssrfPolicy?: SsrFPolicy; dispatcherPolicy?: PinnedDispatcherPolicy; }): Promise { + const { MatrixClient, ensureMatrixSdkLoggingConfigured } = + await loadMatrixCreateClientRuntimeDeps(); ensureMatrixSdkLoggingConfigured(); const env = process.env; const homeserver = await resolveValidatedMatrixHomeserverUrl(params.homeserver, {