Files
ST-Bionic-Memory-Ecology/tests/prompt-node-references.mjs

55 lines
1.5 KiB
JavaScript

import assert from "node:assert/strict";
const {
createPromptNodeReferenceMap,
getPromptNodeLabel,
resolvePromptNodeId,
} = await import("../prompting/prompt-node-references.js");
const rawNodeId = "550e8400-e29b-41d4-a716-446655440000";
const map = createPromptNodeReferenceMap(
[
{
nodeId: rawNodeId,
node: {
id: rawNodeId,
type: "event",
fields: {
title: "这是一个非常非常长的节点标题,用于测试提取提示里的标签截断行为",
},
},
score: 0.91,
},
{
node: {
id: "node-2",
type: "thread",
fields: {
summary: "关系持续升温",
},
},
score: 0.77,
},
],
{
prefix: "G",
maxLength: 12,
buildMeta: ({ entry }) => ({
score: entry.score,
}),
},
);
assert.deepEqual(Object.keys(map.keyToNodeId), ["G1", "G2"]);
assert.equal(map.keyToNodeId.G1, rawNodeId);
assert.equal(map.nodeIdToKey[rawNodeId], "G1");
assert.equal(resolvePromptNodeId({ nodeId: rawNodeId }), rawNodeId);
assert.equal(resolvePromptNodeId({ node: { id: "node-2" } }), "node-2");
assert.equal(getPromptNodeLabel({ id: "node-3", fields: { title: "短标题" } }), "短标题");
assert.equal(map.keyToMeta.G1.score, 0.91);
assert.match(map.keyToMeta.G1.label, /^这是一个非常非常长的节…$/);
assert.equal(map.keyToMeta.G2.label, "关系持续升温");
assert.equal(map.keyToMeta.G1.nodeId, rawNodeId);
console.log("prompt-node-references tests passed");