Files
openclaw/extensions/memory-wiki/src/memory-palace.test.ts
Mariano 64693d2e96 [codex] Dreaming: surface memory wiki imports and palace (#64505)
Merged via squash.

Prepared head SHA: 12d5e37222
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Reviewed-by: @mbelinky
2026-04-11 07:04:08 +02:00

92 lines
3.1 KiB
TypeScript

import fs from "node:fs/promises";
import path from "node:path";
import { describe, expect, it } from "vitest";
import { renderWikiMarkdown } from "./markdown.js";
import { listMemoryWikiPalace } from "./memory-palace.js";
import { createMemoryWikiTestHarness } from "./test-helpers.js";
const { createVault } = createMemoryWikiTestHarness();
describe("listMemoryWikiPalace", () => {
it("groups wiki pages by kind and surfaces claims, questions, and contradictions", async () => {
const { rootDir, config } = await createVault({
prefix: "memory-wiki-palace-",
initialize: true,
});
await fs.mkdir(path.join(rootDir, "syntheses"), { recursive: true });
await fs.mkdir(path.join(rootDir, "entities"), { recursive: true });
await fs.writeFile(
path.join(rootDir, "syntheses", "travel-system.md"),
renderWikiMarkdown({
frontmatter: {
pageType: "synthesis",
id: "synthesis.travel.system",
title: "Travel system",
claims: [
{ text: "Mariano prefers direct receipts from airlines when possible." },
{ text: "Travel admin friction keeps showing up across chats." },
],
questions: ["Should flight receipts be standardized into one process?"],
contradictions: ["Old BA receipts guidance may now be stale."],
updatedAt: "2026-04-10T12:00:00.000Z",
},
body: [
"# Travel system",
"",
"This synthesis rolls up recurring travel admin patterns from imported chats.",
"",
].join("\n"),
}),
"utf8",
);
await fs.writeFile(
path.join(rootDir, "entities", "mariano.md"),
renderWikiMarkdown({
frontmatter: {
pageType: "entity",
id: "entity.mariano",
title: "Mariano",
claims: [{ text: "He prefers compact, inspectable systems." }],
updatedAt: "2026-04-09T08:00:00.000Z",
},
body: ["# Mariano", "", "Primary operator profile page.", ""].join("\n"),
}),
"utf8",
);
const result = await listMemoryWikiPalace(config);
expect(result).toMatchObject({
totalItems: 2,
totalClaims: 3,
totalQuestions: 1,
totalContradictions: 1,
});
expect(result.clusters[0]).toMatchObject({
key: "synthesis",
label: "Syntheses",
itemCount: 1,
claimCount: 2,
questionCount: 1,
contradictionCount: 1,
});
expect(result.clusters[0]?.items[0]).toMatchObject({
title: "Travel system",
claims: [
"Mariano prefers direct receipts from airlines when possible.",
"Travel admin friction keeps showing up across chats.",
],
questions: ["Should flight receipts be standardized into one process?"],
contradictions: ["Old BA receipts guidance may now be stale."],
snippet: "This synthesis rolls up recurring travel admin patterns from imported chats.",
});
expect(result.clusters[1]).toMatchObject({
key: "entity",
label: "Entities",
itemCount: 1,
claimCount: 1,
});
});
});