





























@@ -1,4 +1,4 @@
1-import { afterAll, afterEach, beforeAll } from "vitest";
1+import { afterAll, afterEach, beforeAll, vi } from "vitest";
22import type {
33ChannelId,
44ChannelOutboundAdapter,
@@ -12,12 +12,17 @@ import { installSharedTestSetup } from "./setup.shared.js";
1212installSharedTestSetup();
13131414const WORKER_RUNTIME_STATE = Symbol.for("openclaw.testSetupRuntimeState");
15-const WORKER_RUNTIME_HELPERS = Symbol.for("openclaw.testSetupRuntimeHelpers");
15+const WORKER_PLUGIN_RUNTIME_HELPERS = Symbol.for("openclaw.testSetupPluginRuntimeHelpers");
16+const WORKER_CLEANUP_HELPERS = Symbol.for("openclaw.testSetupCleanupHelpers");
1617type WorkerRuntimeState = {
1718defaultPluginRegistry: PluginRegistry | null;
1819materializedDefaultPluginRegistry: PluginRegistry | null;
1920};
20-type WorkerRuntimeHelpers = {
21+type WorkerPluginRuntimeHelpers = {
22+resetPluginRuntimeStateForTest: typeof import("../src/plugins/runtime.js").resetPluginRuntimeStateForTest;
23+setActivePluginRegistry: typeof import("../src/plugins/runtime.js").setActivePluginRegistry;
24+};
25+type WorkerCleanupHelpers = {
2126clearPluginDiscoveryCache: typeof import("../src/plugins/discovery.js").clearPluginDiscoveryCache;
2227clearPluginManifestRegistryCache: typeof import("../src/plugins/manifest-registry-state.js").clearPluginManifestRegistryCache;
2328clearSessionStoreCaches: typeof import("../src/config/sessions/store-cache.js").clearSessionStoreCaches;
@@ -27,9 +32,7 @@ type WorkerRuntimeHelpers = {
2732resetContextWindowCacheForTest: typeof import("../src/agents/context-runtime-state.js").resetContextWindowCacheForTest;
2833resetFileLockStateForTest: typeof import("../src/infra/file-lock.js").resetFileLockStateForTest;
2934resetModelsJsonReadyCacheForTest: typeof import("../src/agents/models-config-state.js").resetModelsJsonReadyCacheForTest;
30-resetPluginRuntimeStateForTest: typeof import("../src/plugins/runtime.js").resetPluginRuntimeStateForTest;
3135resetSessionWriteLockStateForTest: typeof import("../src/agents/session-write-lock.js").resetSessionWriteLockStateForTest;
32-setActivePluginRegistry: typeof import("../src/plugins/runtime.js").setActivePluginRegistry;
3336};
34373538type ReplyToModeResolver = NonNullable<
@@ -49,20 +52,44 @@ const workerRuntimeState = (() => {
4952return globalState[WORKER_RUNTIME_STATE];
5053})();
515452-function loadWorkerRuntimeHelpers(): Promise<WorkerRuntimeHelpers> {
55+function loadWorkerPluginRuntimeHelpers(): Promise<WorkerPluginRuntimeHelpers> {
5356const globalState = globalThis as typeof globalThis & {
54-[WORKER_RUNTIME_HELPERS]?: Promise<WorkerRuntimeHelpers>;
57+[WORKER_PLUGIN_RUNTIME_HELPERS]?: Promise<WorkerPluginRuntimeHelpers>;
5558};
56-globalState[WORKER_RUNTIME_HELPERS] ??= Promise.all([
57-import("../src/agents/context-runtime-state.js"),
58-import("../src/agents/models-config-state.js"),
59-import("../src/agents/session-write-lock.js"),
60-import("../src/config/sessions/store-cache.js"),
61-import("../src/config/sessions/store-lock-state.js"),
62-import("../src/infra/file-lock.js"),
63-import("../src/plugins/discovery.js"),
64-import("../src/plugins/manifest-registry-state.js"),
65-import("../src/plugins/runtime.js"),
59+globalState[WORKER_PLUGIN_RUNTIME_HELPERS] ??= import("../src/plugins/runtime.js").then(
60+(pluginRuntime) => ({
61+resetPluginRuntimeStateForTest: pluginRuntime.resetPluginRuntimeStateForTest,
62+setActivePluginRegistry: pluginRuntime.setActivePluginRegistry,
63+}),
64+);
65+return globalState[WORKER_PLUGIN_RUNTIME_HELPERS];
66+}
67+68+function loadWorkerCleanupHelpers(): Promise<WorkerCleanupHelpers> {
69+const globalState = globalThis as typeof globalThis & {
70+[WORKER_CLEANUP_HELPERS]?: Promise<WorkerCleanupHelpers>;
71+};
72+globalState[WORKER_CLEANUP_HELPERS] ??= Promise.all([
73+vi.importActual<typeof import("../src/agents/context-runtime-state.js")>(
74+"../src/agents/context-runtime-state.js",
75+),
76+vi.importActual<typeof import("../src/agents/models-config-state.js")>(
77+"../src/agents/models-config-state.js",
78+),
79+vi.importActual<typeof import("../src/agents/session-write-lock.js")>(
80+"../src/agents/session-write-lock.js",
81+),
82+vi.importActual<typeof import("../src/config/sessions/store-cache.js")>(
83+"../src/config/sessions/store-cache.js",
84+),
85+vi.importActual<typeof import("../src/config/sessions/store-lock-state.js")>(
86+"../src/config/sessions/store-lock-state.js",
87+),
88+vi.importActual<typeof import("../src/infra/file-lock.js")>("../src/infra/file-lock.js"),
89+vi.importActual<typeof import("../src/plugins/discovery.js")>("../src/plugins/discovery.js"),
90+vi.importActual<typeof import("../src/plugins/manifest-registry-state.js")>(
91+"../src/plugins/manifest-registry-state.js",
92+),
6693]).then(
6794([
6895contextRuntimeState,
@@ -73,7 +100,6 @@ function loadWorkerRuntimeHelpers(): Promise<WorkerRuntimeHelpers> {
73100fileLock,
74101discovery,
75102manifestRegistryState,
76-pluginRuntime,
77103]) => ({
78104clearPluginDiscoveryCache: discovery.clearPluginDiscoveryCache,
79105clearPluginManifestRegistryCache: manifestRegistryState.clearPluginManifestRegistryCache,
@@ -84,12 +110,10 @@ function loadWorkerRuntimeHelpers(): Promise<WorkerRuntimeHelpers> {
84110resetContextWindowCacheForTest: contextRuntimeState.resetContextWindowCacheForTest,
85111resetFileLockStateForTest: fileLock.resetFileLockStateForTest,
86112resetModelsJsonReadyCacheForTest: modelsConfigState.resetModelsJsonReadyCacheForTest,
87-resetPluginRuntimeStateForTest: pluginRuntime.resetPluginRuntimeStateForTest,
88113resetSessionWriteLockStateForTest: sessionWriteLock.resetSessionWriteLockStateForTest,
89-setActivePluginRegistry: pluginRuntime.setActivePluginRegistry,
90114}),
91115);
92-return globalState[WORKER_RUNTIME_HELPERS];
116+return globalState[WORKER_CLEANUP_HELPERS];
93117}
9411895119const pickSendFn = (id: ChannelId, deps?: OutboundSendDeps) => {
@@ -359,7 +383,7 @@ function resolveDefaultPluginRegistryProxy(): PluginRegistry {
359383360384async function installDefaultPluginRegistry(): Promise<void> {
361385const { resetPluginRuntimeStateForTest, setActivePluginRegistry } =
362-await loadWorkerRuntimeHelpers();
386+await loadWorkerPluginRuntimeHelpers();
363387workerRuntimeState.materializedDefaultPluginRegistry = null;
364388resetPluginRuntimeStateForTest();
365389setActivePluginRegistry(resolveDefaultPluginRegistryProxy());
@@ -386,7 +410,7 @@ afterEach(async () => {
386410 resetFileLockStateForTest,
387411 resetModelsJsonReadyCacheForTest,
388412 resetSessionWriteLockStateForTest,
389-} = await loadWorkerRuntimeHelpers();
413+} = await loadWorkerCleanupHelpers();
390414await drainSessionStoreLockQueuesForTest();
391415clearSessionStoreCaches();
392416await drainFileLockStateForTest();
@@ -407,7 +431,7 @@ afterAll(async () => {
407431 clearSessionStoreCaches,
408432 drainFileLockStateForTest,
409433 drainSessionWriteLockStateForTest,
410-} = await loadWorkerRuntimeHelpers();
434+} = await loadWorkerCleanupHelpers();
411435clearSessionStoreCaches();
412436await drainFileLockStateForTest();
413437await drainSessionWriteLockStateForTest();
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。