From 6aff1e8f9ea451f2d00e7840ddfa14a7c1e5a5bf Mon Sep 17 00:00:00 2001 From: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com> Date: Mon, 15 Jun 2026 23:34:01 -0700 Subject: [PATCH] fix(memory): report skipped QMD embedding probe (#93473) Merged via squash. Prepared head SHA: eea1ba563b958dbd5632fec36223d9ee76da1f5d Co-authored-by: TurboTheTurtle <35905412+TurboTheTurtle@users.noreply.github.com> Co-authored-by: vincentkoc <25068+vincentkoc@users.noreply.github.com> Reviewed-by: @vincentkoc --- extensions/memory-core/src/cli.runtime.ts | 10 ++++-- extensions/memory-core/src/cli.test.ts | 36 +++++++++++++++++++ .../src/memory/qmd-manager.test.ts | 4 +-- .../memory-core/src/memory/qmd-manager.ts | 3 ++ 4 files changed, 49 insertions(+), 4 deletions(-) diff --git a/extensions/memory-core/src/cli.runtime.ts b/extensions/memory-core/src/cli.runtime.ts index 3dbcb3104947..625551296701 100644 --- a/extensions/memory-core/src/cli.runtime.ts +++ b/extensions/memory-core/src/cli.runtime.ts @@ -884,8 +884,14 @@ export async function runMemoryStatus(opts: MemoryCommandOptions) { `${label("Dreaming")} ${info(formatDreamingSummary(cfg))}`, ].filter(Boolean) as string[]; if (embeddingProbe) { - const state = embeddingProbe.ok ? "ready" : "unavailable"; - const stateColor = embeddingProbe.ok ? theme.success : theme.warn; + const state = + embeddingProbe.ok && embeddingProbe.checked === false + ? "skipped" + : embeddingProbe.ok + ? "ready" + : "unavailable"; + const stateColor = + state === "skipped" ? theme.muted : embeddingProbe.ok ? theme.success : theme.warn; lines.push(`${label("Embeddings")} ${colorize(rich, stateColor, state)}`); if (embeddingProbe.error) { lines.push(`${label("Embeddings error")} ${warn(embeddingProbe.error)}`); diff --git a/extensions/memory-core/src/cli.test.ts b/extensions/memory-core/src/cli.test.ts index cf137e15aed5..f37b6471c97e 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: skipped"); + 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,