feat: show memory summary in status

This commit is contained in:
Peter Steinberger
2026-01-18 01:57:37 +00:00
parent 14e6b21b50
commit 8013c4717c
5 changed files with 95 additions and 2 deletions

View File

@@ -71,6 +71,31 @@ const mocks = vi.hoisted(() => ({
}),
}));
vi.mock("../memory/manager.js", () => ({
MemoryIndexManager: {
get: vi.fn(async ({ agentId }: { agentId: string }) => ({
probeVectorAvailability: vi.fn(async () => true),
status: () => ({
files: 2,
chunks: 3,
dirty: false,
workspaceDir: "/tmp/clawd",
dbPath: "/tmp/memory.sqlite",
provider: "openai",
model: "text-embedding-3-small",
requestedProvider: "openai",
sources: ["memory"],
sourceCounts: [{ source: "memory", files: 2, chunks: 3 }],
cache: { enabled: true, entries: 10, maxEntries: 500 },
fts: { enabled: true, available: true },
vector: { enabled: true, available: true, extensionPath: "/opt/vec0.dylib", dims: 1024 },
}),
close: vi.fn(async () => {}),
__agentId: agentId,
})),
},
}));
vi.mock("../config/sessions.js", () => ({
loadSessionStore: mocks.loadSessionStore,
resolveMainSessionKey: mocks.resolveMainSessionKey,
@@ -234,6 +259,8 @@ describe("statusCommand", () => {
await statusCommand({ json: true }, runtime as never);
const payload = JSON.parse((runtime.log as vi.Mock).mock.calls[0][0]);
expect(payload.linkChannel.linked).toBe(true);
expect(payload.memory.agentId).toBe("main");
expect(payload.memory.vector.available).toBe(true);
expect(payload.sessions.count).toBe(1);
expect(payload.sessions.paths).toContain("/tmp/sessions.json");
expect(payload.sessions.defaults.model).toBeTruthy();
@@ -256,6 +283,7 @@ describe("statusCommand", () => {
expect(logs.some((l) => l.includes("CRITICAL"))).toBe(true);
expect(logs.some((l) => l.includes("Dashboard"))).toBe(true);
expect(logs.some((l) => l.includes("macos 14.0 (arm64)"))).toBe(true);
expect(logs.some((l) => l.includes("Memory"))).toBe(true);
expect(logs.some((l) => l.includes("Channels"))).toBe(true);
expect(logs.some((l) => l.includes("WhatsApp"))).toBe(true);
expect(logs.some((l) => l.includes("Sessions"))).toBe(true);