From 322920587f4a6b257ce93e6c5f1501a0caedf7fa Mon Sep 17 00:00:00 2001 From: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com> Date: Mon, 15 Jun 2026 19:50:18 -0700 Subject: [PATCH] fix(memory): treat qmd lexical status as ready --- extensions/memory-core/src/cli.test.ts | 36 +++++++++++++++++++ .../src/memory/qmd-manager.test.ts | 4 +-- .../memory-core/src/memory/qmd-manager.ts | 3 ++ 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/extensions/memory-core/src/cli.test.ts b/extensions/memory-core/src/cli.test.ts index cf137e15aed5..61a450b6f662 100644 --- a/extensions/memory-core/src/cli.test.ts +++ b/extensions/memory-core/src/cli.test.ts @@ -677,6 +677,42 @@ describe("memory cli", () => { expect(close).toHaveBeenCalled(); }); + it("does not report qmd lexical search mode as embedding unavailable", async () => { + const close = vi.fn(async () => {}); + const probeVectorStoreAvailability = vi.fn(async () => true); + const probeVectorAvailability = vi.fn(async () => false); + const probeEmbeddingAvailability = vi.fn(async () => ({ ok: true, checked: false })); + mockManager({ + probeVectorStoreAvailability, + probeVectorAvailability, + probeEmbeddingAvailability, + status: () => + makeMemoryStatus({ + backend: "qmd", + provider: "qmd", + model: "qmd", + requestedProvider: "qmd", + vector: { + enabled: false, + semanticAvailable: false, + available: false, + }, + }), + close, + }); + + const log = spyRuntimeLogs(defaultRuntime); + await runMemoryCli(["status", "--deep"]); + + expect(probeVectorStoreAvailability).not.toHaveBeenCalled(); + expect(probeVectorAvailability).toHaveBeenCalled(); + expect(probeEmbeddingAvailability).toHaveBeenCalled(); + expectLogged(log, "Vector: disabled"); + expectLogged(log, "Embeddings: ready"); + expectNotLogged(log, "Embeddings error:"); + expect(close).toHaveBeenCalled(); + }); + it("prints recall-store audit details during status", async () => { await withTempWorkspace(async (workspaceDir) => { await recordShortTermRecalls({ diff --git a/extensions/memory-core/src/memory/qmd-manager.test.ts b/extensions/memory-core/src/memory/qmd-manager.test.ts index 52f468aa8b69..5a041a979f4c 100644 --- a/extensions/memory-core/src/memory/qmd-manager.test.ts +++ b/extensions/memory-core/src/memory/qmd-manager.test.ts @@ -6062,8 +6062,8 @@ describe("QmdMemoryManager", () => { await expect(manager.probeVectorAvailability()).resolves.toBe(false); await expect(manager.probeEmbeddingAvailability()).resolves.toEqual({ - ok: false, - error: "QMD semantic vectors are unavailable", + ok: true, + checked: false, }); expect(spawnMock.mock.calls.length).toBe(baselineCalls); expect(manager.status().vector).toEqual({ diff --git a/extensions/memory-core/src/memory/qmd-manager.ts b/extensions/memory-core/src/memory/qmd-manager.ts index 0f04106a7e11..0e2b422c2f22 100644 --- a/extensions/memory-core/src/memory/qmd-manager.ts +++ b/extensions/memory-core/src/memory/qmd-manager.ts @@ -1566,6 +1566,9 @@ export class QmdMemoryManager implements MemorySearchManager { } async probeEmbeddingAvailability(): Promise { + if (!qmdUsesVectors(this.qmd.searchMode)) { + return { ok: true, checked: false }; + } const ok = await this.probeVectorAvailability(); return { ok,