Add deprecated user_name and character_name fields for backward compatibility

cd992472d57f61375316f3928f2782ad0d0ea259

Cohee <18619528+Cohee1207@users.noreply.github.com>

8 files changed, +33 -3Ignore whitespace
public/global.d.ts+4 -0
@@ -43,6 +43,10 @@ declare global {
4343
44 interface ChatHeader {44 interface ChatHeader {
45 chat_metadata: ChatMetadata;45 chat_metadata: ChatMetadata;
46 /** @deprecated For backward compatibility ONLY */
47 user_name: 'unused';
48 /** @deprecated For backward compatibility ONLY */
49 character_name: 'unused';
46 }50 }
4751
48 interface ChatMetadata {52 interface ChatMetadata {
public/script.js+2 -0
@@ -6955,6 +6955,8 @@ export async function saveChat({ chatName, withMetadata, mesId, force = false }
6955 /** @type {ChatHeader} */6955 /** @type {ChatHeader} */
6956 const chatHeader = {6956 const chatHeader = {
6957 chat_metadata: metadata,6957 chat_metadata: metadata,
6958 user_name: 'unused',
6959 character_name: 'unused',
6958 };6960 };
69596961
6960 try {6962 try {
public/scripts/bookmarks.js+5 -1
@@ -303,7 +303,11 @@ export async function convertSoloToGroupChat() {
303 const metadata = Object.assign({}, chat_metadata);303 const metadata = Object.assign({}, chat_metadata);
304 delete metadata.main_chat;304 delete metadata.main_chat;
305 /** @type {ChatHeader} */305 /** @type {ChatHeader} */
306 const chatHeader = { chat_metadata: metadata };306 const chatHeader = {
307 chat_metadata: metadata,
308 user_name: 'unused',
309 character_name: 'unused',
310 };
307 /** @type {Omit<Group, 'id'>} */311 /** @type {Omit<Group, 'id'>} */
308 const groupCreateModel = {312 const groupCreateModel = {
309 name: name,313 name: name,
public/scripts/chats.js+7 -1
@@ -2140,8 +2140,14 @@ export function initChatUtilities() {
2140 });2140 });
21412141
2142 $(document).on('click', '.assistant_note_export', async function (_e) {2142 $(document).on('click', '.assistant_note_export', async function (_e) {
2143 /** @type {ChatHeader} */
2144 const chatHeader = {
2145 chat_metadata: chat_metadata,
2146 user_name: 'unused',
2147 character_name: 'unused',
2148 };
2143 const chatToSave = [2149 const chatToSave = [
2144 { chat_metadata: chat_metadata },2150 chatHeader,
2145 ...chat.filter(x => x?.extra?.type !== system_message_types.ASSISTANT_NOTE),2151 ...chat.filter(x => x?.extra?.type !== system_message_types.ASSISTANT_NOTE),
2146 ];2152 ];
21472153
public/scripts/group-chats.js+4 -0
@@ -626,6 +626,8 @@ async function saveGroupChat(groupId, shouldSaveGroup, force = false) {
626 /** @type {ChatHeader} */626 /** @type {ChatHeader} */
627 const chatHeader = {627 const chatHeader = {
628 chat_metadata: { ...chat_metadata },628 chat_metadata: { ...chat_metadata },
629 user_name: 'unused',
630 character_name: 'unused',
629 };631 };
630 const response = await fetch('/api/chats/group/save', {632 const response = await fetch('/api/chats/group/save', {
631 method: 'POST',633 method: 'POST',
@@ -2334,6 +2336,8 @@ export async function saveGroupBookmarkChat(groupId, name, metadata, mesId) {
2334 /** @type {ChatHeader} */2336 /** @type {ChatHeader} */
2335 const chatHeader = {2337 const chatHeader = {
2336 chat_metadata: { ...chat_metadata, ...(metadata || {}) },2338 chat_metadata: { ...chat_metadata, ...(metadata || {}) },
2339 user_name: 'unused',
2340 character_name: 'unused',
2337 };2341 };
23382342
2339 /** @type {ChatMessage[]} */2343 /** @type {ChatMessage[]} */
src/byaf.js+2 -0
@@ -334,6 +334,8 @@ export class ByafParser {
334 const chatBackground = chatBackgrounds.find(bg => bg.paths.includes(scenario?.backgroundImage || ''))?.name || '';334 const chatBackground = chatBackgrounds.find(bg => bg.paths.includes(scenario?.backgroundImage || ''))?.name || '';
335 /** @type {object[]} */335 /** @type {object[]} */
336 const chat = [{336 const chat = [{
337 user_name: 'unused',
338 character_name: 'unused',
337 chat_metadata: {339 chat_metadata: {
338 scenario: scenario?.narrative ?? '',340 scenario: scenario?.narrative ?? '',
339 mes_example: ByafParser.formatExampleMessages(scenario?.exampleMessages),341 mes_example: ByafParser.formatExampleMessages(scenario?.exampleMessages),
src/endpoints/chats.js+8 -0
@@ -107,6 +107,8 @@ function importOobaChat(userName, characterName, jsonData) {
107 /** @type {object[]} */107 /** @type {object[]} */
108 const chat = [{108 const chat = [{
109 chat_metadata: {},109 chat_metadata: {},
110 user_name: 'unused',
111 character_name: 'unused',
110 }];112 }];
111113
112 for (const arr of jsonData.data_visible) {114 for (const arr of jsonData.data_visible) {
@@ -146,6 +148,8 @@ function importAgnaiChat(userName, characterName, jsonData) {
146 /** @type {object[]} */148 /** @type {object[]} */
147 const chat = [{149 const chat = [{
148 chat_metadata: {},150 chat_metadata: {},
151 user_name: 'unused',
152 character_name: 'unused',
149 }];153 }];
150154
151 for (const message of jsonData.messages) {155 for (const message of jsonData.messages) {
@@ -178,6 +182,8 @@ function importCAIChat(userName, characterName, jsonData) {
178 function convert(history) {182 function convert(history) {
179 const starter = {183 const starter = {
180 chat_metadata: {},184 chat_metadata: {},
185 user_name: 'unused',
186 character_name: 'unused',
181 };187 };
182188
183 const historyData = history.msgs.map((msg) => ({189 const historyData = history.msgs.map((msg) => ({
@@ -276,6 +282,8 @@ function importRisuChat(userName, characterName, jsonData) {
276 /** @type {object[]} */282 /** @type {object[]} */
277 const chat = [{283 const chat = [{
278 chat_metadata: {},284 chat_metadata: {},
285 user_name: 'unused',
286 character_name: 'unused',
279 }];287 }];
280288
281 for (const message of jsonData.data.message) {289 for (const message of jsonData.data.message) {
src/endpoints/groups.js+1 -1
@@ -81,7 +81,7 @@ export async function migrateGroupChatsMetadataFormat(userDirectories) {
81 continue;81 continue;
82 }82 }
83 await fsPromises.copyFile(chatFilePath, path.join(backupPath, chatFileName));83 await fsPromises.copyFile(chatFilePath, path.join(backupPath, chatFileName));
84 const chatHeader = { chat_metadata: chatMetadata };84 const chatHeader = { chat_metadata: chatMetadata, user_name: 'unused', character_name: 'unused' };
85 const newChatData = [chatHeader, ...chatData];85 const newChatData = [chatHeader, ...chatData];
86 const newChatDataRaw = newChatData.map(entry => JSON.stringify(entry)).join('\n');86 const newChatDataRaw = newChatData.map(entry => JSON.stringify(entry)).join('\n');
87 await writeFileAtomic(chatFilePath, newChatDataRaw, 'utf8');87 await writeFileAtomic(chatFilePath, newChatDataRaw, 'utf8');