mirror of
https://github.com/Youzini-afk/ST-Bionic-Memory-Ecology.git
synced 2026-05-15 22:30:38 +08:00
fix: align default task profiles with runtime prompt blocks
This commit is contained in:
93
tests/prompt-builder-defaults.mjs
Normal file
93
tests/prompt-builder-defaults.mjs
Normal file
@@ -0,0 +1,93 @@
|
||||
import assert from "node:assert/strict";
|
||||
import { registerHooks } from "node:module";
|
||||
|
||||
const extensionsShimSource = [
|
||||
"export function getContext() {",
|
||||
" return {",
|
||||
" chat: [],",
|
||||
" chatMetadata: {},",
|
||||
" extensionSettings: {},",
|
||||
" powerUserSettings: {},",
|
||||
" characters: {},",
|
||||
" characterId: null,",
|
||||
" name1: '',",
|
||||
" name2: '',",
|
||||
" chatId: 'test-chat',",
|
||||
" };",
|
||||
"}",
|
||||
].join("\n");
|
||||
|
||||
registerHooks({
|
||||
resolve(specifier, context, nextResolve) {
|
||||
if (
|
||||
specifier === "../../../extensions.js" ||
|
||||
specifier === "../../../../extensions.js"
|
||||
) {
|
||||
return {
|
||||
shortCircuit: true,
|
||||
url: `data:text/javascript,${encodeURIComponent(extensionsShimSource)}`,
|
||||
};
|
||||
}
|
||||
return nextResolve(specifier, context);
|
||||
},
|
||||
});
|
||||
|
||||
const { buildTaskLlmPayload, buildTaskPrompt } = await import("../prompt-builder.js");
|
||||
const { createDefaultTaskProfiles } = await import("../prompt-profiles.js");
|
||||
|
||||
const settings = {
|
||||
taskProfilesVersion: 2,
|
||||
taskProfiles: createDefaultTaskProfiles(),
|
||||
};
|
||||
|
||||
const extractPromptBuild = await buildTaskPrompt(settings, "extract", {
|
||||
taskName: "extract",
|
||||
charDescription: "角色描述",
|
||||
userPersona: "用户设定",
|
||||
recentMessages: "A: 你好\nB: 世界",
|
||||
graphStats: "node_count=3",
|
||||
schema: "event(title, summary)",
|
||||
currentRange: "1 ~ 2",
|
||||
});
|
||||
const extractPayload = buildTaskLlmPayload(extractPromptBuild, "fallback-user");
|
||||
assert.equal(extractPayload.userPrompt, "");
|
||||
assert.deepEqual(
|
||||
extractPayload.promptMessages
|
||||
.map((message) => message.sourceKey)
|
||||
.filter(Boolean),
|
||||
[
|
||||
"charDescription",
|
||||
"userPersona",
|
||||
"recentMessages",
|
||||
"graphStats",
|
||||
"schema",
|
||||
"currentRange",
|
||||
],
|
||||
);
|
||||
|
||||
const recallPromptBuild = await buildTaskPrompt(settings, "recall", {
|
||||
taskName: "recall",
|
||||
charDescription: "角色描述",
|
||||
userPersona: "用户设定",
|
||||
recentMessages: "上下文",
|
||||
userMessage: "用户最新发言",
|
||||
candidateNodes: "候选 1\n候选 2",
|
||||
graphStats: "candidate_count=2",
|
||||
});
|
||||
const recallPayload = buildTaskLlmPayload(recallPromptBuild, "fallback-user");
|
||||
assert.equal(recallPayload.userPrompt, "");
|
||||
assert.deepEqual(
|
||||
recallPayload.promptMessages
|
||||
.map((message) => message.sourceKey)
|
||||
.filter(Boolean),
|
||||
[
|
||||
"charDescription",
|
||||
"userPersona",
|
||||
"recentMessages",
|
||||
"userMessage",
|
||||
"candidateNodes",
|
||||
"graphStats",
|
||||
],
|
||||
);
|
||||
|
||||
console.log("prompt-builder-defaults tests passed");
|
||||
Reference in New Issue
Block a user