import { afterEach, describe, expect, it } from "vitest"; import { clearMemoryPluginState, registerMemoryCapability, registerMemoryPromptSection, } from "../plugins/memory-state.js"; import { buildActiveMemoryPromptSection, listActiveMemoryPublicArtifacts, } from "./memory-host-core.js"; describe("memory-host-core helpers", () => { afterEach(() => { clearMemoryPluginState(); }); it("exposes the active memory prompt guidance builder for context engines", () => { registerMemoryPromptSection(({ citationsMode }) => [ "## Memory Recall", `citations=${citationsMode ?? "default"}`, "", ]); expect( buildActiveMemoryPromptSection({ availableTools: new Set(["memory_search"]), citationsMode: "off", }), ).toEqual(["## Memory Recall", "citations=off", ""]); }); it("exposes active memory public artifacts for companion plugins", async () => { registerMemoryCapability("memory-core", { publicArtifacts: { async listArtifacts() { return [ { kind: "memory-root", workspaceDir: "/tmp/workspace", relativePath: "MEMORY.md", absolutePath: "/tmp/workspace/MEMORY.md", agentIds: ["main"], contentType: "markdown" as const, }, ]; }, }, }); await expect(listActiveMemoryPublicArtifacts({ cfg: {} as never })).resolves.toEqual([ { kind: "memory-root", workspaceDir: "/tmp/workspace", relativePath: "MEMORY.md", absolutePath: "/tmp/workspace/MEMORY.md", agentIds: ["main"], contentType: "markdown", }, ]); }); });