diff --git a/src/lang/en.ts b/src/lang/en.ts index e8c51c94..a6a7a674 100644 --- a/src/lang/en.ts +++ b/src/lang/en.ts @@ -439,5 +439,6 @@ export const languageEnglish = { defaultPrompt: "Default Prompt", additionalText: 'Additional Description', seed: "Seed", - charjs: "CharacterJS" + charjs: "CharacterJS", + depthPrompt: "Depth Prompt" } \ No newline at end of file diff --git a/src/lib/SideBars/CharConfig.svelte b/src/lib/SideBars/CharConfig.svelte index 75068ebe..a67ca958 100644 --- a/src/lib/SideBars/CharConfig.svelte +++ b/src/lib/SideBars/CharConfig.svelte @@ -650,6 +650,12 @@ {language.CharVersion} + {language.depthPrompt} +
+ + +
+ {language.altGreet}
diff --git a/src/ts/characterCards.ts b/src/ts/characterCards.ts index abd9d715..98607542 100644 --- a/src/ts/characterCards.ts +++ b/src/ts/characterCards.ts @@ -301,6 +301,16 @@ async function importSpecv2(card:CharacterCardV2, img?:Uint8Array, mode?:'hub'|' } + let ext = cloneDeep(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 ?? '', @@ -350,6 +360,7 @@ async function importSpecv2(card:CharacterCardV2, img?:Uint8Array, mode?:'hub'|' private: data?.extensions?.risuai?.private ?? false, additionalText: data?.extensions?.risuai?.additionalText ?? '', virtualscript: data?.extensions?.risuai?.virtualscript ?? '', + extentions: ext ?? {} } db.characters.push(char) @@ -431,11 +442,20 @@ async function createBaseV2(char:character) { triggerscript: char.triggerscript, additionalText: char.additionalText, virtualscript: char.virtualscript, - } + }, + depth_prompt: char.depth_prompt } } } - console.log(card) + + if(char.extentions){ + for(const key in char.extentions){ + if(key === 'risuai' || key === 'depth_prompt'){ + continue + } + card.data.extensions[key] = char.extentions[key] + } + } return card } @@ -703,6 +723,7 @@ type CharacterCardV2 = { additionalText?:string virtualscript?:string } + depth_prompt?: { depth: number, prompt: string } } } } diff --git a/src/ts/characters.ts b/src/ts/characters.ts index e86696ad..adbc496a 100644 --- a/src/ts/characters.ts +++ b/src/ts/characters.ts @@ -290,7 +290,10 @@ export function characterFormatUpdate(index:number|character){ cha.postHistoryInstructions = null } cha.additionalText ??= '' - + cha.depth_prompt ??= { + depth: 0, + prompt: '' + } } else{ if((!cha.characterTalks) || cha.characterTalks.length !== cha.characters.length){ diff --git a/src/ts/process/index.ts b/src/ts/process/index.ts index bbc2450d..6595ad52 100644 --- a/src/ts/process/index.ts +++ b/src/ts/process/index.ts @@ -727,6 +727,16 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n formated = cipherChat(formated) } + + if(currentChar.depth_prompt && currentChar.depth_prompt.prompt.length > 0){ + //depth_prompt + const depthPrompt = currentChar.depth_prompt + formated.splice(formated.length - depthPrompt.depth, 0, { + role: 'system', + content: risuChatParser(depthPrompt.prompt, {chara: currentChar}) + }) + } + { //token rechecking let tokens = 0 diff --git a/src/ts/storage/database.ts b/src/ts/storage/database.ts index 8663d16e..d392c3e0 100644 --- a/src/ts/storage/database.ts +++ b/src/ts/storage/database.ts @@ -579,6 +579,8 @@ export interface character{ oaiVoice?:string virtualscript?:string scriptstate?:{[key:string]:string|number|boolean} + depth_prompt?: { depth: number, prompt: string } + extentions?:{[key:string]:any} }