mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-27 21:07:01 -06:00
fix(memory): skip blank search provider bootstrap (#103728)
* fix(memory): skip blank search provider bootstrap * refactor(memory): simplify blank search preflight --------- Co-authored-by: Vincent Koc <vincentkoc@ieee.org> Co-authored-by: Peter Steinberger <steipete@gmail.com> Co-authored-by: Peter Steinberger <peter@steipete.me>
This commit is contained in:
@@ -4,6 +4,27 @@ import { awaitPendingManagerWork, startAsyncSearchSync } from "./manager-async-s
|
||||
import { MemoryIndexManager } from "./manager.js";
|
||||
|
||||
describe("memory search async sync", () => {
|
||||
it("returns before provider or index bootstrap for a blank query", async () => {
|
||||
const manager = Object.create(MemoryIndexManager.prototype) as MemoryIndexManager;
|
||||
const ensureProviderInitialized = vi.fn(async () => {});
|
||||
const assertRequiredProviderAvailable = vi.fn();
|
||||
const hasIndexedContent = vi.fn(() => false);
|
||||
const sync = vi.fn(async () => {});
|
||||
Object.assign(manager as unknown as Record<string, unknown>, {
|
||||
providerRequirement: { mode: "required" },
|
||||
ensureProviderInitialized,
|
||||
assertRequiredProviderAvailable,
|
||||
hasIndexedContent,
|
||||
sync,
|
||||
});
|
||||
|
||||
await expect(manager.search(" \n\t ")).resolves.toStrictEqual([]);
|
||||
expect(ensureProviderInitialized).not.toHaveBeenCalled();
|
||||
expect(assertRequiredProviderAvailable).not.toHaveBeenCalled();
|
||||
expect(hasIndexedContent).not.toHaveBeenCalled();
|
||||
expect(sync).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("waits for dirty sync before querying", async () => {
|
||||
let releaseSync = () => {};
|
||||
const pendingSync = new Promise<void>((resolve) => {
|
||||
|
||||
@@ -635,6 +635,10 @@ export class MemoryIndexManager extends MemoryManagerEmbeddingOps implements Mem
|
||||
},
|
||||
): Promise<MemorySearchResult[]> {
|
||||
opts?.onDebug?.({ backend: "builtin" });
|
||||
const normalizedQuery = query.trim();
|
||||
if (!normalizedQuery) {
|
||||
return [];
|
||||
}
|
||||
if (this.providerRequirement.mode === "required") {
|
||||
await this.ensureProviderInitialized();
|
||||
this.assertRequiredProviderAvailable("search");
|
||||
@@ -652,7 +656,7 @@ export class MemoryIndexManager extends MemoryManagerEmbeddingOps implements Mem
|
||||
hasIndexedContent = this.hasIndexedContent();
|
||||
}
|
||||
const preflight = resolveMemorySearchPreflight({
|
||||
query,
|
||||
query: normalizedQuery,
|
||||
hasIndexedContent,
|
||||
});
|
||||
if (!preflight.shouldSearch) {
|
||||
|
||||
Reference in New Issue
Block a user