import { describe, expect, it } from "vitest"; import type { ResolvedMemoryWikiConfig } from "./config.js"; import { createWikiApplyTool } from "./tool.js"; function asSchemaObject(value: unknown): Record { if (typeof value !== "object" || value === null || Array.isArray(value)) { throw new Error("Expected JSON schema object"); } return value as Record; } describe("memory-wiki tools", () => { it("allows provenance metadata in wiki_apply claim evidence", () => { const tool = createWikiApplyTool({} as ResolvedMemoryWikiConfig); const applyProperties = asSchemaObject(asSchemaObject(tool.parameters).properties); const claimsSchema = asSchemaObject(applyProperties.claims); const claimSchema = asSchemaObject(claimsSchema.items); const claimProperties = asSchemaObject(claimSchema.properties); const evidenceSchema = asSchemaObject(claimProperties.evidence); const evidenceArraySchema = asSchemaObject(evidenceSchema.items); const evidenceProperties = asSchemaObject(evidenceArraySchema.properties); expect(Object.keys(evidenceProperties).toSorted()).toEqual([ "confidence", "kind", "lines", "note", "path", "privacyTier", "sourceId", "updatedAt", "weight", ]); expect(evidenceProperties.confidence).toEqual({ type: "number", minimum: 0, maximum: 1 }); }); });