Skip to content

Commit 5a4f868

Browse files
committed
fix(memory): scope provider-none FTS bypass
1 parent 4115f0c commit 5a4f868

3 files changed

Lines changed: 21 additions & 11 deletions

File tree

extensions/memory-core/src/memory/manager-sync-ops.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ export abstract class MemoryManagerSyncOps {
290290
}): MemoryIndexIdentityState {
291291
const hasProviderOverride = params && "provider" in params;
292292
const configuredProvider =
293-
!this.vector.enabled || this.settings.provider === "none"
293+
this.settings.provider === "none"
294294
? null
295295
: {
296296
id:

extensions/memory-core/src/memory/manager.fts-only-reindex.test.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ describe("memory manager FTS-only reindex", () => {
129129
expect(countChunksContaining("Alpha topic")).toBeGreaterThan(0);
130130
});
131131

132-
it("syncs vector-disabled memory without resolving an embedding provider", async () => {
132+
it("syncs explicit provider-none memory without resolving an embedding provider", async () => {
133133
const memoryManager = await createManager({ provider: "none", vectorEnabled: false });
134134

135135
await memoryManager.sync({ force: true });
@@ -139,6 +139,15 @@ describe("memory manager FTS-only reindex", () => {
139139
expect(memoryManager.status().custom?.indexIdentity).toEqual({ status: "valid" });
140140
});
141141

142+
it("still initializes configured providers when vector storage is disabled", async () => {
143+
const memoryManager = await createManager({ provider: "auto", vectorEnabled: false });
144+
145+
await memoryManager.sync({ force: true });
146+
147+
expect(createEmbeddingProviderMock).toHaveBeenCalledOnce();
148+
expect(countChunksContaining("Alpha topic")).toBeGreaterThan(0);
149+
});
150+
142151
it("refreshes FTS-only indexed content after memory file updates", async () => {
143152
const memoryManager = await createManager();
144153
await memoryManager.sync({ force: true });

extensions/memory-core/src/memory/manager.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -392,13 +392,14 @@ export class MemoryIndexManager extends MemoryManagerEmbeddingOps implements Mem
392392
}
393393

394394
private refreshIndexIdentityDirty(params?: { providerKeyKnown?: boolean }) {
395-
const provider = !this.vector.enabled
396-
? null
397-
: this.providerInitialized
398-
? this.provider
399-
? { id: this.provider.id, model: this.provider.model }
400-
: null
401-
: undefined;
395+
const provider =
396+
this.settings.provider === "none"
397+
? null
398+
: this.providerInitialized
399+
? this.provider
400+
? { id: this.provider.id, model: this.provider.model }
401+
: null
402+
: undefined;
402403
const state = this.resolveCurrentIndexIdentityState({
403404
...(provider !== undefined ? { provider } : {}),
404405
providerKeyKnown: params?.providerKeyKnown,
@@ -453,7 +454,7 @@ export class MemoryIndexManager extends MemoryManagerEmbeddingOps implements Mem
453454
log.warn(`memory sync failed (search): ${String(err)}`);
454455
},
455456
});
456-
if (preflight.shouldInitializeProvider && this.vector.enabled) {
457+
if (preflight.shouldInitializeProvider && this.settings.provider !== "none") {
457458
await this.ensureProviderInitialized();
458459
}
459460
if (!this.provider && this.providerLifecycle.mode === "degraded") {
@@ -791,7 +792,7 @@ export class MemoryIndexManager extends MemoryManagerEmbeddingOps implements Mem
791792
return this.syncing;
792793
}
793794
this.syncing = (async () => {
794-
if (this.vector.enabled) {
795+
if (this.settings.provider !== "none") {
795796
await this.ensureProviderInitialized();
796797
}
797798
await this.runSyncWithReadonlyRecovery(params);

0 commit comments

Comments
 (0)