diff --git a/prompt-profiles.js b/prompt-profiles.js index 344f27d..5d6e5a1 100644 --- a/prompt-profiles.js +++ b/prompt-profiles.js @@ -340,6 +340,7 @@ export function createDefaultTaskProfiles() { } export function createDefaultTaskProfile(taskType) { + const legacyPromptField = LEGACY_PROMPT_FIELD_MAP[taskType]; const defaults = DEFAULT_TASK_BLOCKS[taskType] || {}; return { id: DEFAULT_PROFILE_ID, diff --git a/tests/task-profile-migration.mjs b/tests/task-profile-migration.mjs index 24f0842..f461f54 100644 --- a/tests/task-profile-migration.mjs +++ b/tests/task-profile-migration.mjs @@ -30,7 +30,22 @@ const extractProfile = getActiveTaskProfile( assert.equal(extractProfile.taskType, "extract"); assert.equal(extractProfile.id, "default"); assert.ok(Array.isArray(extractProfile.blocks)); -assert.equal(extractProfile.blocks[0].type, "legacyPrompt"); +assert.equal(extractProfile.blocks.length, 3); +assert.deepEqual( + extractProfile.blocks.map((block) => block.name), + ["角色定义", "输出格式", "行为规则"], +); +assert.ok( + extractProfile.blocks.every((block) => block.type === "custom"), +); +assert.equal( + extractProfile.metadata.legacyPromptField, + "extractPrompt", +); +assert.equal( + extractProfile.metadata.legacyPromptSnapshot, + "旧提取提示", +); const defaults = createDefaultTaskProfiles(); assert.ok(defaults.extract.profiles.length > 0); diff --git a/tests/task-profile-storage.mjs b/tests/task-profile-storage.mjs index 4bb2006..047148a 100644 --- a/tests/task-profile-storage.mjs +++ b/tests/task-profile-storage.mjs @@ -51,12 +51,17 @@ const activeProfile = getActiveTaskProfile( "extract", ); assert.equal(activeProfile.name, "激进提取"); -assert.equal(activeProfile.blocks.length, 3); -assert.equal(activeProfile.blocks[1].type, "builtin"); -assert.equal(activeProfile.blocks[1].sourceKey, "userMessage"); -assert.equal(activeProfile.blocks[1].injectionMode, "prepend"); -assert.equal(activeProfile.blocks[2].type, "custom"); -assert.equal(activeProfile.blocks[2].role, "user"); +assert.equal(activeProfile.blocks.length, 5); +const builtinBlock = activeProfile.blocks.find( + (block) => block.type === "builtin" && block.sourceKey === "userMessage", +); +const customBlock = activeProfile.blocks.find( + (block) => block.type === "custom" && block.name === "补充说明", +); +assert.ok(builtinBlock); +assert.equal(builtinBlock.injectionMode, "prepend"); +assert.ok(customBlock); +assert.equal(customBlock.role, "user"); assert.equal(activeProfile.regex.localRules.length, 1); assert.equal(activeProfile.regex.localRules[0].script_name, "裁边"); @@ -72,7 +77,11 @@ assert.equal(exported.profile.name, "激进提取"); const imported = importTaskProfile(updatedProfiles, JSON.stringify(exported)); assert.equal(imported.taskType, "extract"); assert.notEqual(imported.profile.id, clonedProfile.id); -assert.equal(imported.profile.blocks[1].sourceKey, "userMessage"); +assert.ok( + imported.profile.blocks.some( + (block) => block.type === "builtin" && block.sourceKey === "userMessage", + ), +); const restoredProfiles = restoreDefaultTaskProfile(imported.taskProfiles, "extract"); const restoredActive = getActiveTaskProfile(