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}
}