mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-06 09:50:42 +00:00
perf: avoid Matrix entry full-channel load in tests
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import { createTestPluginApi } from "../../test/helpers/plugins/plugin-api.js";
|
||||
import { registerMatrixCliMetadata } from "./cli-metadata.js";
|
||||
import entry from "./index.js";
|
||||
import entry, { registerMatrixFullRuntime } from "./index.js";
|
||||
|
||||
const cliMocks = vi.hoisted(() => ({
|
||||
registerMatrixCli: vi.fn(),
|
||||
@@ -68,9 +68,8 @@ describe("matrix plugin", () => {
|
||||
expect(entry.name).toBe("Matrix");
|
||||
});
|
||||
|
||||
it("registers subagent lifecycle hooks during full registration", () => {
|
||||
it("registers subagent lifecycle hooks during full runtime registration", () => {
|
||||
const on = vi.fn();
|
||||
const registerChannel = vi.fn();
|
||||
const registerGatewayMethod = vi.fn();
|
||||
const api = createTestPluginApi({
|
||||
id: "matrix",
|
||||
@@ -80,15 +79,11 @@ describe("matrix plugin", () => {
|
||||
runtime: {} as never,
|
||||
registrationMode: "full",
|
||||
on,
|
||||
registerChannel,
|
||||
registerGatewayMethod,
|
||||
});
|
||||
|
||||
entry.register(api);
|
||||
registerMatrixFullRuntime(api);
|
||||
|
||||
expect(registerChannel).toHaveBeenCalledWith({
|
||||
plugin: expect.objectContaining({ id: "matrix" }),
|
||||
});
|
||||
expect(on.mock.calls.map(([hookName]) => hookName)).toEqual([
|
||||
"subagent_spawning",
|
||||
"subagent_ended",
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
import { defineBundledChannelEntry } from "openclaw/plugin-sdk/channel-entry-contract";
|
||||
import {
|
||||
defineBundledChannelEntry,
|
||||
type OpenClawPluginApi,
|
||||
} from "openclaw/plugin-sdk/channel-entry-contract";
|
||||
import { formatErrorMessage } from "openclaw/plugin-sdk/error-runtime";
|
||||
import { registerMatrixCliMetadata } from "./cli-metadata.js";
|
||||
|
||||
@@ -11,6 +14,48 @@ function loadMatrixSubagentHooksModule() {
|
||||
return matrixSubagentHooksPromise;
|
||||
}
|
||||
|
||||
export function registerMatrixFullRuntime(api: OpenClawPluginApi): void {
|
||||
void import("./plugin-entry.handlers.runtime.js")
|
||||
.then(({ ensureMatrixCryptoRuntime }) =>
|
||||
ensureMatrixCryptoRuntime({ log: api.logger.info }).catch((err: unknown) => {
|
||||
const message = formatErrorMessage(err);
|
||||
api.logger.warn?.(`matrix: crypto runtime bootstrap failed: ${message}`);
|
||||
}),
|
||||
)
|
||||
.catch((err: unknown) => {
|
||||
const message = formatErrorMessage(err);
|
||||
api.logger.warn?.(`matrix: failed loading crypto bootstrap runtime: ${message}`);
|
||||
});
|
||||
|
||||
api.registerGatewayMethod("matrix.verify.recoveryKey", async (ctx) => {
|
||||
const { handleVerifyRecoveryKey } = await import("./plugin-entry.handlers.runtime.js");
|
||||
await handleVerifyRecoveryKey(ctx);
|
||||
});
|
||||
|
||||
api.registerGatewayMethod("matrix.verify.bootstrap", async (ctx) => {
|
||||
const { handleVerificationBootstrap } = await import("./plugin-entry.handlers.runtime.js");
|
||||
await handleVerificationBootstrap(ctx);
|
||||
});
|
||||
|
||||
api.registerGatewayMethod("matrix.verify.status", async (ctx) => {
|
||||
const { handleVerificationStatus } = await import("./plugin-entry.handlers.runtime.js");
|
||||
await handleVerificationStatus(ctx);
|
||||
});
|
||||
|
||||
api.on("subagent_spawning", async (event) => {
|
||||
const { handleMatrixSubagentSpawning } = await loadMatrixSubagentHooksModule();
|
||||
return await handleMatrixSubagentSpawning(api, event);
|
||||
});
|
||||
api.on("subagent_ended", async (event) => {
|
||||
const { handleMatrixSubagentEnded } = await loadMatrixSubagentHooksModule();
|
||||
await handleMatrixSubagentEnded(event);
|
||||
});
|
||||
api.on("subagent_delivery_target", async (event) => {
|
||||
const { handleMatrixSubagentDeliveryTarget } = await loadMatrixSubagentHooksModule();
|
||||
return handleMatrixSubagentDeliveryTarget(event);
|
||||
});
|
||||
}
|
||||
|
||||
export default defineBundledChannelEntry({
|
||||
id: "matrix",
|
||||
name: "Matrix",
|
||||
@@ -29,45 +74,5 @@ export default defineBundledChannelEntry({
|
||||
exportName: "setMatrixRuntime",
|
||||
},
|
||||
registerCliMetadata: registerMatrixCliMetadata,
|
||||
registerFull(api) {
|
||||
void import("./plugin-entry.handlers.runtime.js")
|
||||
.then(({ ensureMatrixCryptoRuntime }) =>
|
||||
ensureMatrixCryptoRuntime({ log: api.logger.info }).catch((err: unknown) => {
|
||||
const message = formatErrorMessage(err);
|
||||
api.logger.warn?.(`matrix: crypto runtime bootstrap failed: ${message}`);
|
||||
}),
|
||||
)
|
||||
.catch((err: unknown) => {
|
||||
const message = formatErrorMessage(err);
|
||||
api.logger.warn?.(`matrix: failed loading crypto bootstrap runtime: ${message}`);
|
||||
});
|
||||
|
||||
api.registerGatewayMethod("matrix.verify.recoveryKey", async (ctx) => {
|
||||
const { handleVerifyRecoveryKey } = await import("./plugin-entry.handlers.runtime.js");
|
||||
await handleVerifyRecoveryKey(ctx);
|
||||
});
|
||||
|
||||
api.registerGatewayMethod("matrix.verify.bootstrap", async (ctx) => {
|
||||
const { handleVerificationBootstrap } = await import("./plugin-entry.handlers.runtime.js");
|
||||
await handleVerificationBootstrap(ctx);
|
||||
});
|
||||
|
||||
api.registerGatewayMethod("matrix.verify.status", async (ctx) => {
|
||||
const { handleVerificationStatus } = await import("./plugin-entry.handlers.runtime.js");
|
||||
await handleVerificationStatus(ctx);
|
||||
});
|
||||
|
||||
api.on("subagent_spawning", async (event) => {
|
||||
const { handleMatrixSubagentSpawning } = await loadMatrixSubagentHooksModule();
|
||||
return await handleMatrixSubagentSpawning(api, event);
|
||||
});
|
||||
api.on("subagent_ended", async (event) => {
|
||||
const { handleMatrixSubagentEnded } = await loadMatrixSubagentHooksModule();
|
||||
await handleMatrixSubagentEnded(event);
|
||||
});
|
||||
api.on("subagent_delivery_target", async (event) => {
|
||||
const { handleMatrixSubagentDeliveryTarget } = await loadMatrixSubagentHooksModule();
|
||||
return handleMatrixSubagentDeliveryTarget(event);
|
||||
});
|
||||
},
|
||||
registerFull: registerMatrixFullRuntime,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user