

























@@ -1,5 +1,8 @@
11import { beforeEach, describe, expect, it, vi } from "vitest";
2-import { resolveGatewayProbeSnapshot } from "./status.scan.shared.js";
2+import {
3+resolveGatewayProbeSnapshot,
4+resolveSharedMemoryStatusSnapshot,
5+} from "./status.scan.shared.js";
3647const mocks = vi.hoisted(() => ({
58buildGatewayConnectionDetailsWithResolvers: vi.fn(),
@@ -140,3 +143,83 @@ describe("resolveGatewayProbeSnapshot", () => {
140143expect(result.gatewayProbeAuthWarning).toBeUndefined();
141144});
142145});
146+147+describe("resolveSharedMemoryStatusSnapshot", () => {
148+it("asks custom memory-slot runtimes for status without requiring built-in memorySearch", async () => {
149+const manager = {
150+probeVectorAvailability: vi.fn(async () => true),
151+status: vi.fn(() => ({
152+backend: "builtin" as const,
153+provider: "memory-lancedb-pro",
154+files: 66,
155+chunks: 128,
156+vector: { enabled: true, available: true },
157+fts: { enabled: true, available: true },
158+})),
159+close: vi.fn(async () => {}),
160+};
161+const resolveMemoryConfig = vi.fn(() => null);
162+const getMemorySearchManager = vi.fn(async () => ({ manager }));
163+const requireDefaultStore = vi.fn(() => `/tmp/openclaw-missing-memory-${process.pid}.sqlite`);
164+165+const result = await resolveSharedMemoryStatusSnapshot({
166+cfg: {
167+plugins: {
168+slots: { memory: "memory-lancedb-pro" },
169+},
170+agents: {
171+defaults: {
172+memorySearch: { enabled: false },
173+},
174+},
175+},
176+agentStatus: { defaultId: "main" },
177+memoryPlugin: { enabled: true, slot: "memory-lancedb-pro" },
178+ resolveMemoryConfig,
179+ getMemorySearchManager,
180+ requireDefaultStore,
181+});
182+183+expect(resolveMemoryConfig).not.toHaveBeenCalled();
184+expect(requireDefaultStore).not.toHaveBeenCalled();
185+expect(getMemorySearchManager).toHaveBeenCalledWith({
186+cfg: expect.objectContaining({
187+plugins: expect.objectContaining({
188+slots: { memory: "memory-lancedb-pro" },
189+}),
190+}),
191+agentId: "main",
192+purpose: "status",
193+});
194+expect(manager.probeVectorAvailability).toHaveBeenCalled();
195+expect(manager.status).toHaveBeenCalled();
196+expect(manager.close).toHaveBeenCalled();
197+expect(result).toEqual({
198+agentId: "main",
199+backend: "builtin",
200+provider: "memory-lancedb-pro",
201+files: 66,
202+chunks: 128,
203+vector: { enabled: true, available: true },
204+fts: { enabled: true, available: true },
205+});
206+});
207+208+it("keeps default memory-core on the cold-start store shortcut", async () => {
209+const resolveMemoryConfig = vi.fn(() => null);
210+const getMemorySearchManager = vi.fn(async () => ({ manager: null }));
211+212+const result = await resolveSharedMemoryStatusSnapshot({
213+cfg: {},
214+agentStatus: { defaultId: "main" },
215+memoryPlugin: { enabled: true, slot: "memory-core" },
216+ resolveMemoryConfig,
217+ getMemorySearchManager,
218+requireDefaultStore: () => `/tmp/openclaw-missing-memory-${process.pid}.sqlite`,
219+});
220+221+expect(result).toBeNull();
222+expect(resolveMemoryConfig).not.toHaveBeenCalled();
223+expect(getMemorySearchManager).not.toHaveBeenCalled();
224+});
225+});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。