refactor: Update lowLevelAccess check in importCharacterCardSpec
This commit is contained in:
@@ -16,6 +16,7 @@ export interface RisuModule{
|
|||||||
cjs?: string
|
cjs?: string
|
||||||
trigger?: triggerscript[]
|
trigger?: triggerscript[]
|
||||||
id: string
|
id: string
|
||||||
|
lowLevelAccess?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function exportModule(module:RisuModule){
|
export async function exportModule(module:RisuModule){
|
||||||
@@ -152,7 +153,10 @@ export function getModuleTriggers() {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if (module.trigger) {
|
if (module.trigger) {
|
||||||
triggers = triggers.concat(module.trigger)
|
triggers = triggers.concat(module.trigger.map((t) => {
|
||||||
|
t.lowLevelAccess = module.lowLevelAccess
|
||||||
|
return t
|
||||||
|
}))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return triggers
|
return triggers
|
||||||
|
|||||||
@@ -10,17 +10,20 @@ import { alertError, alertInput, alertNormal, alertSelect } from "../alert";
|
|||||||
import type { OpenAIChat } from ".";
|
import type { OpenAIChat } from ".";
|
||||||
import { HypaProcesser } from "./memory/hypamemory";
|
import { HypaProcesser } from "./memory/hypamemory";
|
||||||
import { requestChatData } from "./request";
|
import { requestChatData } from "./request";
|
||||||
|
import { generateAIImage } from "./stableDiff";
|
||||||
|
import { writeInlayImage } from "./files/image";
|
||||||
|
|
||||||
export interface triggerscript{
|
export interface triggerscript{
|
||||||
comment: string;
|
comment: string;
|
||||||
type: 'start'|'manual'|'output'|'input'
|
type: 'start'|'manual'|'output'|'input'
|
||||||
conditions: triggerCondition[]
|
conditions: triggerCondition[]
|
||||||
effect:triggerEffect[]
|
effect:triggerEffect[]
|
||||||
|
lowLevelAccess?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export type triggerCondition = triggerConditionsVar|triggerConditionsExists|triggerConditionsChatIndex
|
export type triggerCondition = triggerConditionsVar|triggerConditionsExists|triggerConditionsChatIndex
|
||||||
|
|
||||||
export type triggerEffect = triggerEffectRunLLM|triggerEffectCheckSimilarity|triggerEffectSendAIprompt|triggerEffectShowAlert|triggerEffectSetvar|triggerEffectSystemPrompt|triggerEffectImpersonate|triggerEffectCommand|triggerEffectStop|triggerEffectRunTrigger
|
export type triggerEffect = triggerEffectImgGen|triggerEffectRegex|triggerEffectRunLLM|triggerEffectCheckSimilarity|triggerEffectSendAIprompt|triggerEffectShowAlert|triggerEffectSetvar|triggerEffectSystemPrompt|triggerEffectImpersonate|triggerEffectCommand|triggerEffectStop|triggerEffectRunTrigger
|
||||||
|
|
||||||
export type triggerConditionsVar = {
|
export type triggerConditionsVar = {
|
||||||
type:'var'|'value'
|
type:'var'|'value'
|
||||||
@@ -66,6 +69,15 @@ export interface triggerEffectCommand{
|
|||||||
value: string
|
value: string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface triggerEffectRegex{
|
||||||
|
type: 'extractRegex',
|
||||||
|
value: string
|
||||||
|
regex: string
|
||||||
|
flags: string
|
||||||
|
result: string
|
||||||
|
inputVar: string
|
||||||
|
}
|
||||||
|
|
||||||
export interface triggerEffectShowAlert{
|
export interface triggerEffectShowAlert{
|
||||||
type: 'showAlert',
|
type: 'showAlert',
|
||||||
alertType: string
|
alertType: string
|
||||||
@@ -86,6 +98,14 @@ export interface triggerEffectSendAIprompt{
|
|||||||
type: 'sendAIprompt'
|
type: 'sendAIprompt'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface triggerEffectImgGen{
|
||||||
|
type: 'runImgGen',
|
||||||
|
value: string,
|
||||||
|
negValue: string,
|
||||||
|
inputVar: string
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
export interface triggerEffectCheckSimilarity{
|
export interface triggerEffectCheckSimilarity{
|
||||||
type: 'checkSimilarity',
|
type: 'checkSimilarity',
|
||||||
source: string,
|
source: string,
|
||||||
@@ -116,7 +136,7 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{
|
|||||||
char = structuredClone(char)
|
char = structuredClone(char)
|
||||||
let varChanged = false
|
let varChanged = false
|
||||||
let stopSending = arg.stopSending ?? false
|
let stopSending = arg.stopSending ?? false
|
||||||
let lowLevelAccess = char.lowLevelAccess ?? false
|
const CharacterlowLevelAccess = char.lowLevelAccess ?? false
|
||||||
let sendAIprompt = false
|
let sendAIprompt = false
|
||||||
const currentChat = get(CurrentChat)
|
const currentChat = get(CurrentChat)
|
||||||
let additonalSysPrompt:additonalSysPrompt = arg.additonalSysPrompt ?? {
|
let additonalSysPrompt:additonalSysPrompt = arg.additonalSysPrompt ?? {
|
||||||
@@ -124,7 +144,10 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{
|
|||||||
historyend: '',
|
historyend: '',
|
||||||
promptend: ''
|
promptend: ''
|
||||||
}
|
}
|
||||||
const triggers = char.triggerscript.concat(getModuleTriggers())
|
const triggers = char.triggerscript.map((v) => {
|
||||||
|
v.lowLevelAccess = CharacterlowLevelAccess
|
||||||
|
return v
|
||||||
|
}).concat(getModuleTriggers())
|
||||||
const db = get(DataBase)
|
const db = get(DataBase)
|
||||||
const defaultVariables = parseKeyValue(char.defaultVariables).concat(parseKeyValue(db.templateDefaultVariables))
|
const defaultVariables = parseKeyValue(char.defaultVariables).concat(parseKeyValue(db.templateDefaultVariables))
|
||||||
let chat = structuredClone(arg.chat ?? char.chats[char.chatPage])
|
let chat = structuredClone(arg.chat ?? char.chats[char.chatPage])
|
||||||
@@ -305,7 +328,7 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
case 'runtrigger':{
|
case 'runtrigger':{
|
||||||
if(arg.recursiveCount < 10 || lowLevelAccess){
|
if(arg.recursiveCount < 10 || trigger.lowLevelAccess){
|
||||||
arg.recursiveCount++
|
arg.recursiveCount++
|
||||||
const r = await runTrigger(char,'manual',{
|
const r = await runTrigger(char,'manual',{
|
||||||
chat,
|
chat,
|
||||||
@@ -325,7 +348,7 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{
|
|||||||
|
|
||||||
// low level access only
|
// low level access only
|
||||||
case 'showAlert':{
|
case 'showAlert':{
|
||||||
if(!lowLevelAccess){
|
if(!trigger.lowLevelAccess){
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -354,7 +377,7 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 'sendAIprompt':{
|
case 'sendAIprompt':{
|
||||||
if(!lowLevelAccess){
|
if(!trigger.lowLevelAccess){
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
sendAIprompt = true
|
sendAIprompt = true
|
||||||
@@ -362,7 +385,7 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 'runLLM':{
|
case 'runLLM':{
|
||||||
if(!lowLevelAccess){
|
if(!trigger.lowLevelAccess){
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
const effectValue = risuChatParser(effect.value,{chara:char})
|
const effectValue = risuChatParser(effect.value,{chara:char})
|
||||||
@@ -420,7 +443,7 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{
|
|||||||
}
|
}
|
||||||
|
|
||||||
case 'checkSimilarity':{
|
case 'checkSimilarity':{
|
||||||
if(!lowLevelAccess){
|
if(!trigger.lowLevelAccess){
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -432,6 +455,42 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{
|
|||||||
setVar(effect.inputVar, val.join('§'))
|
setVar(effect.inputVar, val.join('§'))
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case 'extractRegex':{
|
||||||
|
if(!trigger.lowLevelAccess){
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
const effectValue = risuChatParser(effect.value,{chara:char})
|
||||||
|
const regex = new RegExp(effect.regex, effect.flags)
|
||||||
|
const regexResult = regex.exec(effectValue)
|
||||||
|
const result = effect.result.replace(/\$[0-9]+/g, (match) => {
|
||||||
|
const index = Number(match.slice(1))
|
||||||
|
return regexResult[index]
|
||||||
|
}).replace(/\$&/g, regexResult[0]).replace(/\$\$/g, '$')
|
||||||
|
|
||||||
|
setVar(effect.inputVar, result)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
case 'runImgGen':{
|
||||||
|
if(!trigger.lowLevelAccess){
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
const effectValue = risuChatParser(effect.value,{chara:char})
|
||||||
|
const negValue = risuChatParser(effect.negValue,{chara:char})
|
||||||
|
const gen = await generateAIImage(effectValue, char, negValue, 'inlay')
|
||||||
|
if(!gen){
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
const imgHTML = new Image()
|
||||||
|
imgHTML.src = gen
|
||||||
|
const inlay = await writeInlayImage(imgHTML)
|
||||||
|
const res = `{{inlay::${inlay}}}`
|
||||||
|
setVar(effect.inputVar, res)
|
||||||
|
break
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user