Refactor character card processing by consolidating logic into convertCharbook function
This commit is contained in:
@@ -494,36 +494,16 @@ function convertOffSpecCards(charaData:OldTavernChar|CharacterCardV2Risu, imgp:s
|
|||||||
let loresettings:undefined|loreSettings = undefined
|
let loresettings:undefined|loreSettings = undefined
|
||||||
let loreExt:undefined|any = undefined
|
let loreExt:undefined|any = undefined
|
||||||
if(charbook){
|
if(charbook){
|
||||||
if((!checkNullish(charbook.recursive_scanning)) &&
|
const a = convertCharbook({
|
||||||
(!checkNullish(charbook.scan_depth)) &&
|
lorebook,
|
||||||
(!checkNullish(charbook.token_budget))){
|
charbook,
|
||||||
loresettings = {
|
loresettings,
|
||||||
tokenBudget:charbook.token_budget,
|
loreExt
|
||||||
scanDepth:charbook.scan_depth,
|
|
||||||
recursiveScanning: charbook.recursive_scanning,
|
|
||||||
fullWordMatching: charbook?.extensions?.risu_fullWordMatching ?? false,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
loreExt = charbook.extensions
|
|
||||||
|
|
||||||
for(const book of charbook.entries){
|
|
||||||
lorebook.push({
|
|
||||||
key: book.keys.join(', '),
|
|
||||||
secondkey: book.secondary_keys?.join(', ') ?? '',
|
|
||||||
insertorder: book.insertion_order,
|
|
||||||
comment: book.name ?? book.comment ?? "",
|
|
||||||
content: book.content,
|
|
||||||
mode: "normal",
|
|
||||||
alwaysActive: book.constant ?? false,
|
|
||||||
selective: book.selective ?? false,
|
|
||||||
extentions: {...book.extensions, risu_case_sensitive: book.case_sensitive},
|
|
||||||
activationPercent: book.extensions?.risu_activationPercent,
|
|
||||||
loreCache: book.extensions?.risu_loreCache ?? null,
|
|
||||||
//@ts-ignore
|
|
||||||
useRegex: book.use_regex ?? false
|
|
||||||
})
|
})
|
||||||
}
|
|
||||||
|
lorebook = a.lorebook
|
||||||
|
loresettings = a.loresettings
|
||||||
|
loreExt = a.loreExt
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -794,6 +774,116 @@ async function importCharacterCardSpec(card:CharacterCardV2Risu|CharacterCardV3,
|
|||||||
let loresettings:undefined|loreSettings = undefined
|
let loresettings:undefined|loreSettings = undefined
|
||||||
let loreExt:undefined|any = undefined
|
let loreExt:undefined|any = undefined
|
||||||
if(charbook){
|
if(charbook){
|
||||||
|
const a = convertCharbook({
|
||||||
|
lorebook,
|
||||||
|
charbook,
|
||||||
|
loresettings,
|
||||||
|
loreExt
|
||||||
|
})
|
||||||
|
|
||||||
|
lorebook = a.lorebook
|
||||||
|
loresettings = a.loresettings
|
||||||
|
loreExt = a.loreExt
|
||||||
|
}
|
||||||
|
|
||||||
|
let ext = safeStructuredClone(data?.extensions ?? {})
|
||||||
|
|
||||||
|
for(const key in ext){
|
||||||
|
if(key === 'risuai'){
|
||||||
|
delete ext[key]
|
||||||
|
}
|
||||||
|
if(key === 'depth_prompt'){
|
||||||
|
delete ext[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let char:character = {
|
||||||
|
name: data.name ?? '',
|
||||||
|
firstMessage: data.first_mes ?? '',
|
||||||
|
desc: data.description ?? '',
|
||||||
|
notes: '',
|
||||||
|
chats: [{
|
||||||
|
message: [],
|
||||||
|
note: '',
|
||||||
|
name: 'Chat 1',
|
||||||
|
localLore: []
|
||||||
|
}],
|
||||||
|
chatPage: 0,
|
||||||
|
image: im,
|
||||||
|
emotionImages: emotions,
|
||||||
|
bias: bias,
|
||||||
|
globalLore: lorebook, //lorebook
|
||||||
|
viewScreen: viewScreen,
|
||||||
|
chaId: uuidv4(),
|
||||||
|
sdData: sdData,
|
||||||
|
utilityBot: utilityBot,
|
||||||
|
customscript: customScripts,
|
||||||
|
exampleMessage: data.mes_example ?? '',
|
||||||
|
creatorNotes:data.creator_notes ?? '',
|
||||||
|
systemPrompt:data.system_prompt ?? '',
|
||||||
|
postHistoryInstructions:'',
|
||||||
|
alternateGreetings:data.alternate_greetings ?? [],
|
||||||
|
tags:data.tags ?? [],
|
||||||
|
creator:data.creator ?? '',
|
||||||
|
characterVersion: `${data.character_version}` || '',
|
||||||
|
personality:data.personality ?? '',
|
||||||
|
scenario:data.scenario ?? '',
|
||||||
|
firstMsgIndex: -1,
|
||||||
|
removedQuotes: false,
|
||||||
|
loreSettings: loresettings,
|
||||||
|
loreExt: loreExt,
|
||||||
|
additionalData: {
|
||||||
|
tag: data.tags ?? [],
|
||||||
|
creator: data.creator,
|
||||||
|
character_version: data.character_version
|
||||||
|
},
|
||||||
|
additionalAssets: extAssets,
|
||||||
|
replaceGlobalNote: data.post_history_instructions ?? '',
|
||||||
|
backgroundHTML: data?.extensions?.risuai?.backgroundHTML,
|
||||||
|
license: data?.extensions?.risuai?.license,
|
||||||
|
triggerscript: data?.extensions?.risuai?.triggerscript ?? [],
|
||||||
|
private: data?.extensions?.risuai?.private ?? false,
|
||||||
|
additionalText: data?.extensions?.risuai?.additionalText ?? '',
|
||||||
|
virtualscript: '', //removed dude to security issue
|
||||||
|
extentions: ext ?? {},
|
||||||
|
largePortrait: data?.extensions?.risuai?.largePortrait ?? (!data?.extensions?.risuai),
|
||||||
|
lorePlus: data?.extensions?.risuai?.lorePlus ?? false,
|
||||||
|
inlayViewScreen: data?.extensions?.risuai?.inlayViewScreen ?? false,
|
||||||
|
newGenData: data?.extensions?.risuai?.newGenData ?? undefined,
|
||||||
|
vits: vits,
|
||||||
|
ttsMode: vits ? 'vits' : 'normal',
|
||||||
|
imported: true,
|
||||||
|
source: card?.data?.extensions?.risuai?.source ?? [],
|
||||||
|
ccAssets: ccAssets,
|
||||||
|
lowLevelAccess: risuext?.lowLevelAccess ?? false,
|
||||||
|
defaultVariables: data?.extensions?.risuai?.defaultVariables ?? '',
|
||||||
|
}
|
||||||
|
|
||||||
|
if(card.spec === 'chara_card_v3'){
|
||||||
|
char.group_only_greetings = card.data.group_only_greetings ?? []
|
||||||
|
char.nickname = card.data.nickname ?? ''
|
||||||
|
char.source = card.data.source ?? card.data?.extensions?.risuai?.source ?? []
|
||||||
|
char.creation_date = card.data.creation_date ?? 0
|
||||||
|
char.modification_date = card.data.modification_date ?? 0
|
||||||
|
}
|
||||||
|
|
||||||
|
db.characters.push(char)
|
||||||
|
|
||||||
|
|
||||||
|
setDatabase(db)
|
||||||
|
|
||||||
|
alertNormal(language.importedCharacter)
|
||||||
|
return true
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function convertCharbook(arg:{
|
||||||
|
lorebook:loreBook[]
|
||||||
|
charbook:CharacterBook
|
||||||
|
loresettings:loreSettings
|
||||||
|
loreExt:any
|
||||||
|
}){
|
||||||
|
let {lorebook, loresettings, loreExt, charbook} = arg
|
||||||
if((!checkNullish(charbook.recursive_scanning)) &&
|
if((!checkNullish(charbook.recursive_scanning)) &&
|
||||||
(!checkNullish(charbook.scan_depth)) &&
|
(!checkNullish(charbook.scan_depth)) &&
|
||||||
(!checkNullish(charbook.token_budget))){
|
(!checkNullish(charbook.token_budget))){
|
||||||
@@ -887,97 +977,11 @@ async function importCharacterCardSpec(card:CharacterCardV2Risu|CharacterCardV3,
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
lorebook,
|
||||||
|
loresettings,
|
||||||
|
loreExt
|
||||||
}
|
}
|
||||||
|
|
||||||
let ext = safeStructuredClone(data?.extensions ?? {})
|
|
||||||
|
|
||||||
for(const key in ext){
|
|
||||||
if(key === 'risuai'){
|
|
||||||
delete ext[key]
|
|
||||||
}
|
|
||||||
if(key === 'depth_prompt'){
|
|
||||||
delete ext[key]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let char:character = {
|
|
||||||
name: data.name ?? '',
|
|
||||||
firstMessage: data.first_mes ?? '',
|
|
||||||
desc: data.description ?? '',
|
|
||||||
notes: '',
|
|
||||||
chats: [{
|
|
||||||
message: [],
|
|
||||||
note: '',
|
|
||||||
name: 'Chat 1',
|
|
||||||
localLore: []
|
|
||||||
}],
|
|
||||||
chatPage: 0,
|
|
||||||
image: im,
|
|
||||||
emotionImages: emotions,
|
|
||||||
bias: bias,
|
|
||||||
globalLore: lorebook, //lorebook
|
|
||||||
viewScreen: viewScreen,
|
|
||||||
chaId: uuidv4(),
|
|
||||||
sdData: sdData,
|
|
||||||
utilityBot: utilityBot,
|
|
||||||
customscript: customScripts,
|
|
||||||
exampleMessage: data.mes_example ?? '',
|
|
||||||
creatorNotes:data.creator_notes ?? '',
|
|
||||||
systemPrompt:data.system_prompt ?? '',
|
|
||||||
postHistoryInstructions:'',
|
|
||||||
alternateGreetings:data.alternate_greetings ?? [],
|
|
||||||
tags:data.tags ?? [],
|
|
||||||
creator:data.creator ?? '',
|
|
||||||
characterVersion: `${data.character_version}` || '',
|
|
||||||
personality:data.personality ?? '',
|
|
||||||
scenario:data.scenario ?? '',
|
|
||||||
firstMsgIndex: -1,
|
|
||||||
removedQuotes: false,
|
|
||||||
loreSettings: loresettings,
|
|
||||||
loreExt: loreExt,
|
|
||||||
additionalData: {
|
|
||||||
tag: data.tags ?? [],
|
|
||||||
creator: data.creator,
|
|
||||||
character_version: data.character_version
|
|
||||||
},
|
|
||||||
additionalAssets: extAssets,
|
|
||||||
replaceGlobalNote: data.post_history_instructions ?? '',
|
|
||||||
backgroundHTML: data?.extensions?.risuai?.backgroundHTML,
|
|
||||||
license: data?.extensions?.risuai?.license,
|
|
||||||
triggerscript: data?.extensions?.risuai?.triggerscript ?? [],
|
|
||||||
private: data?.extensions?.risuai?.private ?? false,
|
|
||||||
additionalText: data?.extensions?.risuai?.additionalText ?? '',
|
|
||||||
virtualscript: '', //removed dude to security issue
|
|
||||||
extentions: ext ?? {},
|
|
||||||
largePortrait: data?.extensions?.risuai?.largePortrait ?? (!data?.extensions?.risuai),
|
|
||||||
lorePlus: data?.extensions?.risuai?.lorePlus ?? false,
|
|
||||||
inlayViewScreen: data?.extensions?.risuai?.inlayViewScreen ?? false,
|
|
||||||
newGenData: data?.extensions?.risuai?.newGenData ?? undefined,
|
|
||||||
vits: vits,
|
|
||||||
ttsMode: vits ? 'vits' : 'normal',
|
|
||||||
imported: true,
|
|
||||||
source: card?.data?.extensions?.risuai?.source ?? [],
|
|
||||||
ccAssets: ccAssets,
|
|
||||||
lowLevelAccess: risuext?.lowLevelAccess ?? false,
|
|
||||||
defaultVariables: data?.extensions?.risuai?.defaultVariables ?? '',
|
|
||||||
}
|
|
||||||
|
|
||||||
if(card.spec === 'chara_card_v3'){
|
|
||||||
char.group_only_greetings = card.data.group_only_greetings ?? []
|
|
||||||
char.nickname = card.data.nickname ?? ''
|
|
||||||
char.source = card.data.source ?? card.data?.extensions?.risuai?.source ?? []
|
|
||||||
char.creation_date = card.data.creation_date ?? 0
|
|
||||||
char.modification_date = card.data.modification_date ?? 0
|
|
||||||
}
|
|
||||||
|
|
||||||
db.characters.push(char)
|
|
||||||
|
|
||||||
|
|
||||||
setDatabase(db)
|
|
||||||
|
|
||||||
alertNormal(language.importedCharacter)
|
|
||||||
return true
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user