Backfill missing swipe_info (#4831) * Backfill missing swipe_info * Add type for SwipeInfo * Init SwipeInfo with empty extra
Signed| @@ -17,6 +17,7 @@ declare global { | |||
| 17 | type TextCompletionSettings = typeof textgenerationwebui_settings; | 17 | type TextCompletionSettings = typeof textgenerationwebui_settings; |
| 18 | type MessageTimestamp = string | number | Date; | 18 | type MessageTimestamp = string | number | Date; |
| 19 | type Character = import('./scripts/char-data').v1CharData; | 19 | type Character = import('./scripts/char-data').v1CharData; |
| 20 | type ChatMessageExtra = BaseMessageExtra & Partial<ReasoningMessageExtra> & Record<string, any>; | ||
| 20 | 21 | ||
| 21 | interface Group { | 22 | interface Group { |
| 22 | id: string; | 23 | id: string; |
| @@ -69,12 +70,19 @@ declare global { | |||
| 69 | force_avatar?: string; | 70 | force_avatar?: string; |
| 70 | original_avatar?: string; | 71 | original_avatar?: string; |
| 71 | swipes?: string[]; | 72 | swipes?: string[]; |
| 72 | swipe_info?: Record<string, any>; | 73 | swipe_info?: SwipeInfo[]; |
| 73 | swipe_id?: number; | 74 | swipe_id?: number; |
| 74 | extra?: ChatMessageExtra & Partial<ReasoningMessageExtra> & Record<string, any>; | 75 | extra?: ChatMessageExtra; |
| 75 | }; | 76 | }; |
| 76 | 77 | ||
| 77 | interface ChatMessageExtra { | 78 | interface SwipeInfo { |
| 79 | send_date?: MessageTimestamp; | ||
| 80 | gen_started?: MessageTimestamp; | ||
| 81 | gen_finished?: MessageTimestamp; | ||
| 82 | extra?: ChatMessageExtra; | ||
| 83 | } | ||
| 84 | |||
| 85 | interface BaseMessageExtra { | ||
| 78 | gen_id?: number; | 86 | gen_id?: number; |
| 79 | bias?: string; | 87 | bias?: string; |
| 80 | uses_system_ui?: boolean; | 88 | uses_system_ui?: boolean; |
| @@ -6404,27 +6404,35 @@ export function ensureSwipes(message) { | |||
| 6404 | updated = true; | 6404 | updated = true; |
| 6405 | } | 6405 | } |
| 6406 | 6406 | ||
| 6407 | for (let i = 0; i < message.swipes.length; i++) { | ||
| 6408 | if (typeof message.swipes[i] !== 'string') { | ||
| 6409 | updated = true; | ||
| 6410 | console.warn('The message had a swipe that is not a string. It has has been set to \'\'.', message); | ||
| 6411 | message.swipes[i] = ''; | ||
| 6412 | } | ||
| 6413 | } | ||
| 6414 | |||
| 6415 | if (typeof message.swipe_id !== 'number') { | 6407 | if (typeof message.swipe_id !== 'number') { |
| 6416 | message.swipe_id = 0; | 6408 | message.swipe_id = 0; |
| 6417 | updated = true; | 6409 | updated = true; |
| 6418 | } | 6410 | } |
| 6419 | 6411 | ||
| 6420 | if (!Array.isArray(message.swipe_info)) { | 6412 | /** @type {() => SwipeInfo} */ |
| 6421 | message.swipe_info = message.swipes.map(_ => ({ | 6413 | const createSwipeInfo = () => ({ |
| 6422 | send_date: message.send_date, | 6414 | send_date: message.send_date, |
| 6423 | gen_started: message.gen_started, | 6415 | gen_started: message.gen_started, |
| 6424 | gen_finished: message.gen_finished, | 6416 | gen_finished: message.gen_finished, |
| 6425 | extra: structuredClone(message.extra) ?? {}, | 6417 | extra: {}, |
| 6426 | })); | 6418 | }); |
| 6419 | |||
| 6420 | if (!Array.isArray(message.swipe_info)) { | ||
| 6421 | message.swipe_info = message.swipes.map(_ => createSwipeInfo()); | ||
| 6422 | updated = true; | ||
| 6423 | } | ||
| 6424 | |||
| 6425 | for (let i = 0; i < message.swipes.length; i++) { | ||
| 6426 | if (typeof message.swipes[i] !== 'string') { | ||
| 6427 | updated = true; | ||
| 6428 | console.warn('The message had a swipe that is not a string. It has has been set to \'\'.', message); | ||
| 6429 | message.swipes[i] = ''; | ||
| 6430 | } | ||
| 6431 | if (!message.swipe_info[i] || typeof message.swipe_info[i] !== 'object') { | ||
| 6427 | updated = true; | 6432 | updated = true; |
| 6433 | console.warn('The message had missing or invalid swipe_info for a swipe. It has been backfilled.', message); | ||
| 6434 | message.swipe_info[i] = createSwipeInfo(); | ||
| 6435 | } | ||
| 6428 | } | 6436 | } |
| 6429 | 6437 | ||
| 6430 | return updated; | 6438 | return updated; |
| @@ -417,6 +417,7 @@ function createSwipe(messageId, prompt) { | |||
| 417 | 417 | ||
| 418 | console.debug('cleanedPrompt: ', cleanedPrompt); | 418 | console.debug('cleanedPrompt: ', cleanedPrompt); |
| 419 | 419 | ||
| 420 | /** @type {SwipeInfo} */ | ||
| 420 | const newSwipeInfo = { | 421 | const newSwipeInfo = { |
| 421 | send_date: msg.send_date, | 422 | send_date: msg.send_date, |
| 422 | gen_started: msg.gen_started, | 423 | gen_started: msg.gen_started, |