perf(memory): lazy-load matrix client runtime deps

This commit is contained in:
Vincent Koc 2026-04-02 13:50:44 +09:00
parent 9bbbee32e1
commit 4fd1e1c64f
1 changed files with 21 additions and 2 deletions

View File

@ -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<MatrixCreateClientRuntimeDeps> | undefined;
async function loadMatrixCreateClientRuntimeDeps(): Promise<MatrixCreateClientRuntimeDeps> {
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<MatrixClient> {
const { MatrixClient, ensureMatrixSdkLoggingConfigured } =
await loadMatrixCreateClientRuntimeDeps();
ensureMatrixSdkLoggingConfigured();
const env = process.env;
const homeserver = await resolveValidatedMatrixHomeserverUrl(params.homeserver, {