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 loreExt:undefined|any = undefined
|
||||
if(charbook){
|
||||
if((!checkNullish(charbook.recursive_scanning)) &&
|
||||
(!checkNullish(charbook.scan_depth)) &&
|
||||
(!checkNullish(charbook.token_budget))){
|
||||
loresettings = {
|
||||
tokenBudget:charbook.token_budget,
|
||||
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
|
||||
const a = convertCharbook({
|
||||
lorebook,
|
||||
charbook,
|
||||
loresettings,
|
||||
loreExt
|
||||
})
|
||||
}
|
||||
|
||||
lorebook = a.lorebook
|
||||
loresettings = a.loresettings
|
||||
loreExt = a.loreExt
|
||||
}
|
||||
|
||||
return {
|
||||
@@ -794,6 +774,116 @@ async function importCharacterCardSpec(card:CharacterCardV2Risu|CharacterCardV3,
|
||||
let loresettings:undefined|loreSettings = undefined
|
||||
let loreExt:undefined|any = undefined
|
||||
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)) &&
|
||||
(!checkNullish(charbook.scan_depth)) &&
|
||||
(!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