import path from "node:path"; import { describe, expect, it } from "vitest"; import type { MoltbotConfig } from "../config/config.js"; import { resolveAgentWorkspaceDir } from "../agents/agent-scope.js"; import { resolveMemoryBackendConfig } from "./backend-config.js"; describe("resolveMemoryBackendConfig", () => { it("defaults to builtin backend when config missing", () => { const cfg = { agents: { defaults: { workspace: "/tmp/memory-test" } } } as MoltbotConfig; const resolved = resolveMemoryBackendConfig({ cfg, agentId: "main" }); expect(resolved.backend).toBe("builtin"); expect(resolved.citations).toBe("auto"); expect(resolved.qmd).toBeUndefined(); }); it("resolves qmd backend with default collections", () => { const cfg = { agents: { defaults: { workspace: "/tmp/memory-test" } }, memory: { backend: "qmd", qmd: {}, }, } as MoltbotConfig; const resolved = resolveMemoryBackendConfig({ cfg, agentId: "main" }); expect(resolved.backend).toBe("qmd"); expect(resolved.qmd?.collections.length).toBeGreaterThanOrEqual(3); expect(resolved.qmd?.command).toBe("qmd"); expect(resolved.qmd?.update.intervalMs).toBeGreaterThan(0); }); it("resolves custom paths relative to workspace", () => { const cfg = { agents: { defaults: { workspace: "/workspace/root" }, list: [{ id: "main", workspace: "/workspace/root" }], }, memory: { backend: "qmd", qmd: { paths: [ { path: "notes", name: "custom-notes", pattern: "**/*.md", }, ], }, }, } as MoltbotConfig; const resolved = resolveMemoryBackendConfig({ cfg, agentId: "main" }); const custom = resolved.qmd?.collections.find((c) => c.name.startsWith("custom-notes")); expect(custom).toBeDefined(); const workspaceRoot = resolveAgentWorkspaceDir(cfg, "main"); expect(custom?.path).toBe(path.resolve(workspaceRoot, "notes")); }); });