Files
2026-07-13 13:39:12 +08:00

77 lines
2.3 KiB
TypeScript

import assert from "node:assert/strict";
import { describe, test } from "node:test";
import {
DEFAULT_MEMORY_SETTINGS,
normalizeMemorySettings,
toMemoryRetrievalConfig,
toMemorySettingsUpdates,
} from "../../src/lib/memory/settings.ts";
describe("memory settings helpers", () => {
test("normalizeMemorySettings applies defaults and clamps persisted values", () => {
const settings = normalizeMemorySettings({
memoryEnabled: "yes",
memoryMaxTokens: 20001,
memoryRetentionDays: 0,
memoryStrategy: "unsupported",
skillsEnabled: true,
});
assert.deepEqual(settings, {
enabled: DEFAULT_MEMORY_SETTINGS.enabled,
maxTokens: 16000,
retentionDays: 1,
strategy: DEFAULT_MEMORY_SETTINGS.strategy,
skillsEnabled: true,
// Plan 21 — Memory Engine Redesign extended fields (default values)
embeddingSource: DEFAULT_MEMORY_SETTINGS.embeddingSource,
embeddingProviderModel: DEFAULT_MEMORY_SETTINGS.embeddingProviderModel,
transformersEnabled: DEFAULT_MEMORY_SETTINGS.transformersEnabled,
staticEnabled: DEFAULT_MEMORY_SETTINGS.staticEnabled,
rerankEnabled: DEFAULT_MEMORY_SETTINGS.rerankEnabled,
rerankProviderModel: DEFAULT_MEMORY_SETTINGS.rerankProviderModel,
vectorStore: DEFAULT_MEMORY_SETTINGS.vectorStore,
});
});
test("toMemorySettingsUpdates maps UI fields to persisted keys", () => {
assert.deepEqual(
toMemorySettingsUpdates({
enabled: false,
maxTokens: 4096,
retentionDays: 21,
strategy: "hybrid",
skillsEnabled: true,
}),
{
memoryEnabled: false,
memoryMaxTokens: 4096,
memoryRetentionDays: 21,
memoryStrategy: "hybrid",
skillsEnabled: true,
}
);
});
test("toMemoryRetrievalConfig disables injection when memory is off and remaps recent strategy", () => {
assert.deepEqual(
toMemoryRetrievalConfig({
enabled: true,
maxTokens: 0,
retentionDays: 10,
strategy: "recent",
skillsEnabled: false,
}),
{
enabled: false,
maxTokens: 0,
retrievalStrategy: "exact",
autoSummarize: false,
persistAcrossModels: false,
retentionDays: 10,
scope: "apiKey",
}
);
});
});