























@@ -1,13 +1,26 @@
1-import { describe, expect, it, vi } from "vitest";
1+import { afterEach, describe, expect, it, vi } from "vitest";
223-vi.mock("sqlite-vec", () => {
4-throw new Error("bundled sqlite-vec should not load when extensionPath is explicit");
5-});
3+function mockMissingSqliteVecPackage(): void {
4+vi.doMock("sqlite-vec", () => {
5+const err = new Error("Cannot find package 'sqlite-vec' imported from sqlite-vec.test.ts");
6+Object.assign(err, { code: "ERR_MODULE_NOT_FOUND" });
7+throw err;
8+});
9+}
6107-import { loadSqliteVecExtension } from "./sqlite-vec.js";
11+async function importLoader() {
12+return import("./sqlite-vec.js");
13+}
14+15+afterEach(() => {
16+vi.doUnmock("sqlite-vec");
17+vi.resetModules();
18+});
819920describe("loadSqliteVecExtension", () => {
1021it("loads explicit extensionPath without importing bundled sqlite-vec", async () => {
22+mockMissingSqliteVecPackage();
23+const { loadSqliteVecExtension } = await importLoader();
1124const db = {
1225enableLoadExtension: vi.fn(),
1326loadExtension: vi.fn(),
@@ -22,4 +35,23 @@ describe("loadSqliteVecExtension", () => {
2235expect(db.enableLoadExtension).toHaveBeenCalledWith(true);
2336expect(db.loadExtension).toHaveBeenCalledWith("/opt/openclaw/sqlite-vec.so");
2437});
38+39+it("returns a valid memorySearch extensionPath hint when sqlite-vec is absent", async () => {
40+mockMissingSqliteVecPackage();
41+const { loadSqliteVecExtension } = await importLoader();
42+const db = {
43+enableLoadExtension: vi.fn(),
44+loadExtension: vi.fn(),
45+};
46+47+const result = await loadSqliteVecExtension({ db: db as never });
48+49+expect(result.ok).toBe(false);
50+expect(result.error).toContain("sqlite-vec package is not installed.");
51+expect(result.error).toContain("agents.defaults.memorySearch.store.vector.extensionPath");
52+expect(result.error).toContain("agent-specific memorySearch.store.vector.extensionPath");
53+expect(result.error).not.toContain("memory.store.vector.extensionPath");
54+expect(db.enableLoadExtension).toHaveBeenCalledWith(true);
55+expect(db.loadExtension).not.toHaveBeenCalled();
56+});
2557});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。