feat: Add default variables to character settings
This commit is contained in:
@@ -9,7 +9,7 @@ import { get } from 'svelte/store';
|
||||
import css from '@adobe/css-tools'
|
||||
import { selectedCharID } from './stores';
|
||||
import { calcString } from './process/infunctions';
|
||||
import { findCharacterbyId, sfc32, uuidtoNumber } from './util';
|
||||
import { findCharacterbyId, parseKeyValue, sfc32, uuidtoNumber } from './util';
|
||||
import { getInlayImage } from './process/files/image';
|
||||
import { autoMarkNew } from './plugins/automark';
|
||||
import { getModuleLorebooks } from './process/modules';
|
||||
@@ -1461,7 +1461,18 @@ export function getChatVar(key:string){
|
||||
}
|
||||
const chat = char.chats[char.chatPage]
|
||||
chat.scriptstate = chat.scriptstate ?? {}
|
||||
return (chat.scriptstate['$' + key])?.toString() ?? 'null'
|
||||
const state = (chat.scriptstate['$' + key])
|
||||
if(state === undefined || state === null){
|
||||
const defaultVariables = parseKeyValue(char.defaultVariables).concat(parseKeyValue(db.templateDefaultVariables))
|
||||
const findResult = defaultVariables.find((f) => {
|
||||
return f[0] === key
|
||||
})
|
||||
if(findResult){
|
||||
return findResult[1]
|
||||
}
|
||||
return 'null'
|
||||
}
|
||||
return state.toString()
|
||||
}
|
||||
|
||||
export function getGlobalChatVar(key:string){
|
||||
|
||||
@@ -5,6 +5,7 @@ import { getModuleTriggers } from "./modules";
|
||||
import { get } from "svelte/store";
|
||||
import { CurrentCharacter, CurrentChat, selectedCharID } from "../stores";
|
||||
import { processMultiCommand } from "./command";
|
||||
import { parseKeyValue } from "../util";
|
||||
|
||||
export interface triggerscript{
|
||||
comment: string;
|
||||
@@ -94,13 +95,25 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{
|
||||
promptend: ''
|
||||
}
|
||||
const triggers = char.triggerscript.concat(getModuleTriggers())
|
||||
const db = get(DataBase)
|
||||
const defaultVariables = parseKeyValue(char.defaultVariables).concat(parseKeyValue(db.templateDefaultVariables))
|
||||
let chat = structuredClone(arg.chat ?? char.chats[char.chatPage])
|
||||
if((!triggers) || (triggers.length === 0)){
|
||||
return null
|
||||
}
|
||||
|
||||
function getVar(key:string){
|
||||
return `${chat.scriptstate?.['$' + key] ?? "null"}`
|
||||
const state = chat.scriptstate?.['$' + key]
|
||||
if(state === undefined || state === null){
|
||||
const findResult = defaultVariables.find((f) => {
|
||||
return f[0] === key
|
||||
})
|
||||
if(findResult){
|
||||
return findResult[1]
|
||||
}
|
||||
return 'null'
|
||||
}
|
||||
return state.toString()
|
||||
}
|
||||
|
||||
function setVar(key:string, value:string){
|
||||
|
||||
@@ -402,6 +402,7 @@ export function setDatabase(data:Database){
|
||||
data.combineTranslation ??= false
|
||||
data.customPromptTemplateToggle ??= ''
|
||||
data.globalChatVariables ??= {}
|
||||
data.templateDefaultVariables ??= ''
|
||||
|
||||
changeLanguage(data.language)
|
||||
DataBase.set(data)
|
||||
@@ -661,6 +662,7 @@ export interface Database{
|
||||
dynamicAssetsEditDisplay:boolean
|
||||
customPromptTemplateToggle:string
|
||||
globalChatVariables:{[key:string]:string}
|
||||
templateDefaultVariables:string
|
||||
}
|
||||
|
||||
export interface customscript{
|
||||
@@ -789,6 +791,7 @@ export interface character{
|
||||
name: string
|
||||
ext: string
|
||||
}>
|
||||
defaultVariables?:string
|
||||
}
|
||||
|
||||
|
||||
@@ -834,6 +837,7 @@ export interface groupChat{
|
||||
lorePlus?:boolean
|
||||
trashTime?:number
|
||||
nickname?:string
|
||||
defaultVariables?:string
|
||||
}
|
||||
|
||||
export interface botPreset{
|
||||
@@ -882,6 +886,7 @@ export interface botPreset{
|
||||
openrouterProvider?:string
|
||||
useInstructPrompt?:boolean
|
||||
customPromptTemplateToggle?:string
|
||||
templateDefaultVariables?:string
|
||||
}
|
||||
|
||||
|
||||
@@ -1149,7 +1154,8 @@ export function saveCurrentPreset(){
|
||||
top_a: db.top_a,
|
||||
openrouterProvider: db.openrouterProvider,
|
||||
useInstructPrompt: db.useInstructPrompt,
|
||||
customPromptTemplateToggle: db.customPromptTemplateToggle ?? ""
|
||||
customPromptTemplateToggle: db.customPromptTemplateToggle ?? "",
|
||||
templateDefaultVariables: db.templateDefaultVariables ?? ""
|
||||
}
|
||||
db.botPresets = pres
|
||||
setDatabase(db)
|
||||
@@ -1233,6 +1239,7 @@ export function setPreset(db:Database, newPres: botPreset){
|
||||
db.openrouterProvider = newPres.openrouterProvider
|
||||
db.useInstructPrompt = newPres.useInstructPrompt ?? false
|
||||
db.customPromptTemplateToggle = newPres.customPromptTemplateToggle ?? ''
|
||||
db.templateDefaultVariables = newPres.templateDefaultVariables ?? ''
|
||||
return db
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user