Replace cloneDeep to native structuredclone and remove unused import
This commit is contained in:
@@ -82,7 +82,6 @@
|
|||||||
"@types/dompurify": "^3.0.5",
|
"@types/dompurify": "^3.0.5",
|
||||||
"@types/libsodium-wrappers-sumo": "^0.7.8",
|
"@types/libsodium-wrappers-sumo": "^0.7.8",
|
||||||
"@types/lodash": "^4.14.202",
|
"@types/lodash": "^4.14.202",
|
||||||
"@types/lodash.clonedeep": "^4.5.9",
|
|
||||||
"@types/lodash.isequal": "^4.5.8",
|
"@types/lodash.isequal": "^4.5.8",
|
||||||
"@types/marked": "^5.0.2",
|
"@types/marked": "^5.0.2",
|
||||||
"@types/node": "^18.19.7",
|
"@types/node": "^18.19.7",
|
||||||
|
|||||||
9
pnpm-lock.yaml
generated
9
pnpm-lock.yaml
generated
@@ -199,9 +199,6 @@ devDependencies:
|
|||||||
'@types/lodash':
|
'@types/lodash':
|
||||||
specifier: ^4.14.202
|
specifier: ^4.14.202
|
||||||
version: 4.14.202
|
version: 4.14.202
|
||||||
'@types/lodash.clonedeep':
|
|
||||||
specifier: ^4.5.9
|
|
||||||
version: 4.5.9
|
|
||||||
'@types/lodash.isequal':
|
'@types/lodash.isequal':
|
||||||
specifier: ^4.5.8
|
specifier: ^4.5.8
|
||||||
version: 4.5.8
|
version: 4.5.8
|
||||||
@@ -1612,12 +1609,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-KeAKtlObirLJk/na6jHBFEdTDjDfFS6Vcr0eG2FjiHKn3Nw8axJFfIu0Y9TpwaauRldQBj/pZm/MHtK76r6OWg==}
|
resolution: {integrity: sha512-KeAKtlObirLJk/na6jHBFEdTDjDfFS6Vcr0eG2FjiHKn3Nw8axJFfIu0Y9TpwaauRldQBj/pZm/MHtK76r6OWg==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
/@types/lodash.clonedeep@4.5.9:
|
|
||||||
resolution: {integrity: sha512-19429mWC+FyaAhOLzsS8kZUsI+/GmBAQ0HFiCPsKGU+7pBXOQWhyrY6xNNDwUSX8SMZMJvuFVMF9O5dQOlQK9Q==}
|
|
||||||
dependencies:
|
|
||||||
'@types/lodash': 4.14.202
|
|
||||||
dev: true
|
|
||||||
|
|
||||||
/@types/lodash.isequal@4.5.8:
|
/@types/lodash.isequal@4.5.8:
|
||||||
resolution: {integrity: sha512-uput6pg4E/tj2LGxCZo9+y27JNyB2OZuuI/T5F+ylVDYuqICLG2/ktjxx0v6GvVntAf8TvEzeQLcV0ffRirXuA==}
|
resolution: {integrity: sha512-uput6pg4E/tj2LGxCZo9+y27JNyB2OZuuI/T5F+ylVDYuqICLG2/ktjxx0v6GvVntAf8TvEzeQLcV0ffRirXuA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { cloneDeep, merge } from "lodash";
|
import { merge } from "lodash";
|
||||||
import { languageChinese } from "./cn";
|
import { languageChinese } from "./cn";
|
||||||
import { languageGerman } from "./de";
|
import { languageGerman } from "./de";
|
||||||
import { languageEnglish } from "./en";
|
import { languageEnglish } from "./en";
|
||||||
@@ -10,16 +10,16 @@ export let language:typeof languageEnglish = languageEnglish
|
|||||||
|
|
||||||
export function changeLanguage(lang:string){
|
export function changeLanguage(lang:string){
|
||||||
if(lang === 'cn'){
|
if(lang === 'cn'){
|
||||||
language = merge(cloneDeep(languageEnglish), languageChinese)
|
language = merge(structuredClone(languageEnglish), languageChinese)
|
||||||
}
|
}
|
||||||
else if(lang === 'de'){
|
else if(lang === 'de'){
|
||||||
language = merge(cloneDeep(languageEnglish), languageGerman)
|
language = merge(structuredClone(languageEnglish), languageGerman)
|
||||||
}
|
}
|
||||||
else if(lang === 'ko'){
|
else if(lang === 'ko'){
|
||||||
language = merge(cloneDeep(languageEnglish), languageKorean)
|
language = merge(structuredClone(languageEnglish), languageKorean)
|
||||||
}
|
}
|
||||||
else if(lang === 'vi'){
|
else if(lang === 'vi'){
|
||||||
language = merge(cloneDeep(languageEnglish), LanguageVietnamese)
|
language = merge(structuredClone(languageEnglish), LanguageVietnamese)
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
language = languageEnglish
|
language = languageEnglish
|
||||||
|
|||||||
@@ -9,9 +9,10 @@
|
|||||||
import { translateHTML } from "../../ts/translator/translator";
|
import { translateHTML } from "../../ts/translator/translator";
|
||||||
import { risuChatParser } from "src/ts/process/scripts";
|
import { risuChatParser } from "src/ts/process/scripts";
|
||||||
import { get } from "svelte/store";
|
import { get } from "svelte/store";
|
||||||
import { capitalize, isEqual } from "lodash";
|
import { isEqual } from "lodash";
|
||||||
import { sayTTS } from "src/ts/process/tts";
|
import { sayTTS } from "src/ts/process/tts";
|
||||||
import { getModelShortName } from "src/ts/model/names";
|
import { getModelShortName } from "src/ts/model/names";
|
||||||
|
import { capitalize } from "src/ts/util";
|
||||||
export let message = ''
|
export let message = ''
|
||||||
export let name = ''
|
export let name = ''
|
||||||
export let largePortrait = false
|
export let largePortrait = false
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
import { isExpTranslator, translate } from "../../ts/translator/translator";
|
import { isExpTranslator, translate } from "../../ts/translator/translator";
|
||||||
import { alertError, alertNormal, alertWait } from "../../ts/alert";
|
import { alertError, alertNormal, alertWait } from "../../ts/alert";
|
||||||
import sendSound from '../../etc/send.mp3'
|
import sendSound from '../../etc/send.mp3'
|
||||||
import {cloneDeep} from 'lodash'
|
|
||||||
import { processScript } from "src/ts/process/scripts";
|
import { processScript } from "src/ts/process/scripts";
|
||||||
import CreatorQuote from "./CreatorQuote.svelte";
|
import CreatorQuote from "./CreatorQuote.svelte";
|
||||||
import { stopTTS } from "src/ts/process/tts";
|
import { stopTTS } from "src/ts/process/tts";
|
||||||
@@ -140,7 +139,7 @@
|
|||||||
if(Array.isArray(rerolls[rerollid + 1])){
|
if(Array.isArray(rerolls[rerollid + 1])){
|
||||||
let db = $DataBase
|
let db = $DataBase
|
||||||
rerollid += 1
|
rerollid += 1
|
||||||
let rerollData = cloneDeep(rerolls[rerollid])
|
let rerollData = structuredClone(rerolls[rerollid])
|
||||||
let msgs = db.characters[$selectedCharID].chats[$CurrentCharacter.chatPage].message
|
let msgs = db.characters[$selectedCharID].chats[$CurrentCharacter.chatPage].message
|
||||||
for(let i = 0; i < rerollData.length; i++){
|
for(let i = 0; i < rerollData.length; i++){
|
||||||
msgs[msgs.length - rerollData.length + i] = rerollData[i]
|
msgs[msgs.length - rerollData.length + i] = rerollData[i]
|
||||||
@@ -151,10 +150,10 @@
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if(rerolls.length === 0){
|
if(rerolls.length === 0){
|
||||||
rerolls.push(cloneDeep([$CurrentChat.message.at(-1)]))
|
rerolls.push(structuredClone([$CurrentChat.message.at(-1)]))
|
||||||
rerollid = rerolls.length - 1
|
rerollid = rerolls.length - 1
|
||||||
}
|
}
|
||||||
let cha = cloneDeep($CurrentChat.message)
|
let cha = structuredClone($CurrentChat.message)
|
||||||
if(cha.length === 0 ){
|
if(cha.length === 0 ){
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -199,7 +198,7 @@
|
|||||||
if(Array.isArray(rerolls[rerollid - 1])){
|
if(Array.isArray(rerolls[rerollid - 1])){
|
||||||
let db = $DataBase
|
let db = $DataBase
|
||||||
rerollid -= 1
|
rerollid -= 1
|
||||||
let rerollData = cloneDeep(rerolls[rerollid])
|
let rerollData = structuredClone(rerolls[rerollid])
|
||||||
let msgs = db.characters[$selectedCharID].chats[$CurrentCharacter.chatPage].message
|
let msgs = db.characters[$selectedCharID].chats[$CurrentCharacter.chatPage].message
|
||||||
for(let i = 0; i < rerollData.length; i++){
|
for(let i = 0; i < rerollData.length; i++){
|
||||||
msgs[msgs.length - rerollData.length + i] = rerollData[i]
|
msgs[msgs.length - rerollData.length + i] = rerollData[i]
|
||||||
@@ -222,7 +221,7 @@
|
|||||||
continue:continued
|
continue:continued
|
||||||
})
|
})
|
||||||
if(previousLength < $CurrentChat.message.length){
|
if(previousLength < $CurrentChat.message.length){
|
||||||
rerolls.push(cloneDeep($CurrentChat.message).slice(previousLength))
|
rerolls.push(structuredClone($CurrentChat.message).slice(previousLength))
|
||||||
rerollid = rerolls.length - 1
|
rerollid = rerolls.length - 1
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@@ -3,9 +3,8 @@
|
|||||||
import { language } from "../../lang";
|
import { language } from "../../lang";
|
||||||
import { DataBase, changeToPreset, copyPreset, downloadPreset, importPreset, presetTemplate } from "../../ts/storage/database";
|
import { DataBase, changeToPreset, copyPreset, downloadPreset, importPreset, presetTemplate } from "../../ts/storage/database";
|
||||||
import { CopyIcon, DownloadIcon, EditIcon, FolderUpIcon, PlusIcon, TrashIcon, XIcon } from "lucide-svelte";
|
import { CopyIcon, DownloadIcon, EditIcon, FolderUpIcon, PlusIcon, TrashIcon, XIcon } from "lucide-svelte";
|
||||||
import { cloneDeep } from "lodash";
|
import TextInput from "../UI/GUI/TextInput.svelte";
|
||||||
import TextInput from "../UI/GUI/TextInput.svelte";
|
import { prebuiltPresets } from "src/ts/process/templates/templates";
|
||||||
import { prebuiltPresets } from "src/ts/process/templates/templates";
|
|
||||||
|
|
||||||
let editMode = false
|
let editMode = false
|
||||||
export let close = () => {}
|
export let close = () => {}
|
||||||
@@ -74,7 +73,7 @@
|
|||||||
<div class="flex mt-2 items-center">
|
<div class="flex mt-2 items-center">
|
||||||
<button class="text-textcolor2 hover:text-green-500 cursor-pointer mr-1" on:click={() => {
|
<button class="text-textcolor2 hover:text-green-500 cursor-pointer mr-1" on:click={() => {
|
||||||
let botPresets = $DataBase.botPresets
|
let botPresets = $DataBase.botPresets
|
||||||
let newPreset = cloneDeep(prebuiltPresets.OAI2)
|
let newPreset = structuredClone(prebuiltPresets.OAI2)
|
||||||
newPreset.name = `New Preset`
|
newPreset.name = `New Preset`
|
||||||
botPresets.push(newPreset)
|
botPresets.push(newPreset)
|
||||||
|
|
||||||
|
|||||||
@@ -1,19 +1,18 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { language } from "../../lang";
|
import { language } from "../../lang";
|
||||||
import { tokenize, tokenizeAccurate } from "../../ts/tokenizer";
|
import { tokenizeAccurate } from "../../ts/tokenizer";
|
||||||
import { DataBase, saveImage as saveAsset, type Database, type character, type groupChat } from "../../ts/storage/database";
|
import { DataBase, saveImage as saveAsset, type Database, type character, type groupChat } from "../../ts/storage/database";
|
||||||
import { selectedCharID } from "../../ts/stores";
|
import { selectedCharID } from "../../ts/stores";
|
||||||
import { PlusIcon, SmileIcon, TrashIcon, UserIcon, ActivityIcon, BookIcon, LoaderIcon, User, DnaIcon, CurlyBraces, Volume2Icon, XIcon } from 'lucide-svelte'
|
import { PlusIcon, SmileIcon, TrashIcon, UserIcon, ActivityIcon, BookIcon, User, CurlyBraces, Volume2Icon } from 'lucide-svelte'
|
||||||
import Check from "../UI/GUI/CheckInput.svelte";
|
import Check from "../UI/GUI/CheckInput.svelte";
|
||||||
import { addCharEmotion, addingEmotion, getCharImage, rmCharEmotion, selectCharImg, makeGroupImage } from "../../ts/characters";
|
import { addCharEmotion, addingEmotion, getCharImage, rmCharEmotion, selectCharImg, makeGroupImage } from "../../ts/characters";
|
||||||
import LoreBook from "./LoreBook/LoreBookSetting.svelte";
|
import LoreBook from "./LoreBook/LoreBookSetting.svelte";
|
||||||
import { alertConfirm, alertError, alertNormal, alertSelectChar, alertTOS } from "../../ts/alert";
|
import { alertConfirm, alertNormal, alertSelectChar, alertTOS } from "../../ts/alert";
|
||||||
import BarIcon from "./BarIcon.svelte";
|
import BarIcon from "./BarIcon.svelte";
|
||||||
import { findCharacterbyId, getAuthorNoteDefaultText, selectMultipleFile } from "../../ts/util";
|
import { findCharacterbyId, getAuthorNoteDefaultText, selectMultipleFile } from "../../ts/util";
|
||||||
import { onDestroy } from "svelte";
|
import { onDestroy } from "svelte";
|
||||||
import {isEqual, cloneDeep} from 'lodash'
|
import {isEqual} from 'lodash'
|
||||||
import Help from "../Others/Help.svelte";
|
import Help from "../Others/Help.svelte";
|
||||||
import RegexData from "./Scripts/RegexData.svelte";
|
|
||||||
import { exportChar, shareRisuHub } from "src/ts/characterCards";
|
import { exportChar, shareRisuHub } from "src/ts/characterCards";
|
||||||
import { getElevenTTSVoices, getWebSpeechTTSVoices, getVOICEVOXVoices, oaiVoices, getNovelAIVoices, FixNAITTS } from "src/ts/process/tts";
|
import { getElevenTTSVoices, getWebSpeechTTSVoices, getVOICEVOXVoices, oaiVoices, getNovelAIVoices, FixNAITTS } from "src/ts/process/tts";
|
||||||
import { checkCharOrder, getFileSrc } from "src/ts/storage/globalApi";
|
import { checkCharOrder, getFileSrc } from "src/ts/storage/globalApi";
|
||||||
@@ -92,13 +91,13 @@
|
|||||||
if(cha.type === 'character'){
|
if(cha.type === 'character'){
|
||||||
currentChar = {
|
currentChar = {
|
||||||
type: 'character',
|
type: 'character',
|
||||||
data: cloneDeep(cha)
|
data: structuredClone(cha)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
currentChar = {
|
currentChar = {
|
||||||
type: 'group',
|
type: 'group',
|
||||||
data: cloneDeep(cha)
|
data: structuredClone(cha)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@
|
|||||||
FolderIcon,
|
FolderIcon,
|
||||||
FolderOpenIcon,
|
FolderOpenIcon,
|
||||||
HomeIcon,
|
HomeIcon,
|
||||||
MilestoneIcon,
|
|
||||||
} from "lucide-svelte";
|
} from "lucide-svelte";
|
||||||
import {
|
import {
|
||||||
characterFormatUpdate,
|
characterFormatUpdate,
|
||||||
@@ -38,18 +37,17 @@
|
|||||||
import CharConfig from "./CharConfig.svelte";
|
import CharConfig from "./CharConfig.svelte";
|
||||||
import { language } from "../../lang";
|
import { language } from "../../lang";
|
||||||
import Botpreset from "../Setting/botpreset.svelte";
|
import Botpreset from "../Setting/botpreset.svelte";
|
||||||
import { onDestroy, onMount } from "svelte";
|
import { onDestroy } from "svelte";
|
||||||
import { cloneDeep, isEqual } from "lodash";
|
import { isEqual } from "lodash";
|
||||||
import SidebarAvatar from "./SidebarAvatar.svelte";
|
import SidebarAvatar from "./SidebarAvatar.svelte";
|
||||||
import BaseRoundedButton from "../UI/BaseRoundedButton.svelte";
|
import BaseRoundedButton from "../UI/BaseRoundedButton.svelte";
|
||||||
import { get } from "svelte/store";
|
import { get } from "svelte/store";
|
||||||
import { findCharacterIndexbyId, findCharacterbyId, getCharacterIndexObject, sleep } from "src/ts/util";
|
import { getCharacterIndexObject } from "src/ts/util";
|
||||||
import { v4 } from "uuid";
|
import { v4 } from "uuid";
|
||||||
import { checkCharOrder } from "src/ts/storage/globalApi";
|
import { checkCharOrder } from "src/ts/storage/globalApi";
|
||||||
import { doingChat } from "src/ts/process";
|
import { doingChat } from "src/ts/process";
|
||||||
import { BotCreator } from "src/ts/creation/creator";
|
import { BotCreator } from "src/ts/creation/creator";
|
||||||
import Button from "../UI/GUI/Button.svelte";
|
import Button from "../UI/GUI/Button.svelte";
|
||||||
import { fly } from "svelte/transition";
|
|
||||||
import { alertAddCharacter, alertInput, alertSelect } from "src/ts/alert";
|
import { alertAddCharacter, alertInput, alertSelect } from "src/ts/alert";
|
||||||
import SideChatList from "./SideChatList.svelte";
|
import SideChatList from "./SideChatList.svelte";
|
||||||
import { joinMultiuserRoom } from "src/ts/sync/multiuser";
|
import { joinMultiuserRoom } from "src/ts/sync/multiuser";
|
||||||
@@ -57,7 +55,6 @@
|
|||||||
let sideBarMode = 0;
|
let sideBarMode = 0;
|
||||||
let editMode = false;
|
let editMode = false;
|
||||||
let menuMode = 0;
|
let menuMode = 0;
|
||||||
let dragable = navigator.maxTouchPoints <= 1
|
|
||||||
export let openGrid = () => {};
|
export let openGrid = () => {};
|
||||||
|
|
||||||
function createScratch() {
|
function createScratch() {
|
||||||
@@ -178,7 +175,7 @@
|
|||||||
const da = db.characterOrder[mainIndex.index]
|
const da = db.characterOrder[mainIndex.index]
|
||||||
if(typeof(da) !== 'string'){
|
if(typeof(da) !== 'string'){
|
||||||
mainId = da.id
|
mainId = da.id
|
||||||
movingFolder = cloneDeep(da)
|
movingFolder = structuredClone(da)
|
||||||
if(targetIndex.folder){
|
if(targetIndex.folder){
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import { language } from "src/lang"
|
|||||||
import { v4 as uuidv4 } from 'uuid';
|
import { v4 as uuidv4 } from 'uuid';
|
||||||
import { characterFormatUpdate } from "./characters"
|
import { characterFormatUpdate } from "./characters"
|
||||||
import { AppendableBuffer, checkCharOrder, downloadFile, loadAsset, LocalWriter, readImage, saveAsset, VirtualWriter } from "./storage/globalApi"
|
import { AppendableBuffer, checkCharOrder, downloadFile, loadAsset, LocalWriter, readImage, saveAsset, VirtualWriter } from "./storage/globalApi"
|
||||||
import { cloneDeep, update } from "lodash"
|
|
||||||
import { CurrentCharacter, selectedCharID } from "./stores"
|
import { CurrentCharacter, selectedCharID } from "./stores"
|
||||||
import { convertImage, hasher } from "./parser"
|
import { convertImage, hasher } from "./parser"
|
||||||
|
|
||||||
@@ -275,7 +274,7 @@ function convertOldTavernAndJSON(charaData:OldTavernChar, imgp:string|undefined
|
|||||||
|
|
||||||
export async function exportChar(charaID:number) {
|
export async function exportChar(charaID:number) {
|
||||||
const db = get(DataBase)
|
const db = get(DataBase)
|
||||||
let char = cloneDeep(db.characters[charaID])
|
let char = structuredClone(db.characters[charaID])
|
||||||
|
|
||||||
if(char.type === 'group'){
|
if(char.type === 'group'){
|
||||||
return
|
return
|
||||||
@@ -314,7 +313,7 @@ async function importSpecv2(card:CharacterCardV2, img?:Uint8Array, mode:'hub'|'n
|
|||||||
const im = img ? await saveAsset(await reencodeImage(img)) : undefined
|
const im = img ? await saveAsset(await reencodeImage(img)) : undefined
|
||||||
let db = get(DataBase)
|
let db = get(DataBase)
|
||||||
|
|
||||||
const risuext = cloneDeep(data.extensions.risuai)
|
const risuext = structuredClone(data.extensions.risuai)
|
||||||
let emotions:[string, string][] = []
|
let emotions:[string, string][] = []
|
||||||
let bias:[string, number][] = []
|
let bias:[string, number][] = []
|
||||||
let viewScreen: "none" | "emotion" | "imggen" = 'none'
|
let viewScreen: "none" | "emotion" | "imggen" = 'none'
|
||||||
@@ -442,7 +441,7 @@ async function importSpecv2(card:CharacterCardV2, img?:Uint8Array, mode:'hub'|'n
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let ext = cloneDeep(data?.extensions ?? {})
|
let ext = structuredClone(data?.extensions ?? {})
|
||||||
|
|
||||||
for(const key in ext){
|
for(const key in ext){
|
||||||
if(key === 'risuai'){
|
if(key === 'risuai'){
|
||||||
@@ -533,7 +532,7 @@ async function createBaseV2(char:character) {
|
|||||||
key:string
|
key:string
|
||||||
data:string[]
|
data:string[]
|
||||||
}
|
}
|
||||||
} = cloneDeep(lore.extentions ?? {})
|
} = structuredClone(lore.extentions ?? {})
|
||||||
|
|
||||||
let caseSensitive = ext.risu_case_sensitive ?? false
|
let caseSensitive = ext.risu_case_sensitive ?? false
|
||||||
ext.risu_activationPercent = lore.activationPercent
|
ext.risu_activationPercent = lore.activationPercent
|
||||||
@@ -733,7 +732,7 @@ export async function shareRisuHub2(char:character, arg:{
|
|||||||
update: boolean
|
update: boolean
|
||||||
}) {
|
}) {
|
||||||
try {
|
try {
|
||||||
char = cloneDeep(char)
|
char = structuredClone(char)
|
||||||
char.license = arg.license
|
char.license = arg.license
|
||||||
let tagList = arg.tag.split(',')
|
let tagList = arg.tag.split(',')
|
||||||
|
|
||||||
@@ -794,7 +793,7 @@ export async function shareRisuHub(char:character, arg:{
|
|||||||
license: string
|
license: string
|
||||||
anon: boolean
|
anon: boolean
|
||||||
}) {
|
}) {
|
||||||
char = cloneDeep(char)
|
char = structuredClone(char)
|
||||||
char.license = arg.license
|
char.license = arg.license
|
||||||
let tagList = arg.tag.split(',')
|
let tagList = arg.tag.split(',')
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,7 @@ import { forageStorage, getUnpargeables, isNodeServer, isTauri, openURL } from "
|
|||||||
import { BaseDirectory, exists, readBinaryFile, readDir, writeBinaryFile } from "@tauri-apps/api/fs";
|
import { BaseDirectory, exists, readBinaryFile, readDir, writeBinaryFile } from "@tauri-apps/api/fs";
|
||||||
import { language } from "../../lang";
|
import { language } from "../../lang";
|
||||||
import { relaunch } from '@tauri-apps/api/process';
|
import { relaunch } from '@tauri-apps/api/process';
|
||||||
import { open } from '@tauri-apps/api/shell';
|
import { isEqual } from "lodash";
|
||||||
import { cloneDeep, isEqual, last } from "lodash";
|
|
||||||
import { sleep } from "../util";
|
import { sleep } from "../util";
|
||||||
import { hubURL } from "../characterCards";
|
import { hubURL } from "../characterCards";
|
||||||
import { decodeRisuSave, encodeRisuSave } from "../storage/risuSave";
|
import { decodeRisuSave, encodeRisuSave } from "../storage/risuSave";
|
||||||
@@ -108,7 +107,7 @@ let BackupDb:Database = null
|
|||||||
|
|
||||||
|
|
||||||
export async function syncDrive() {
|
export async function syncDrive() {
|
||||||
BackupDb = cloneDeep(get(DataBase))
|
BackupDb = structuredClone(get(DataBase))
|
||||||
return
|
return
|
||||||
while(true){
|
while(true){
|
||||||
const maindb = get(DataBase)
|
const maindb = get(DataBase)
|
||||||
@@ -136,7 +135,7 @@ export async function syncDrive() {
|
|||||||
localStorage.setItem('risu_lastsaved', `${lastSaved}`)
|
localStorage.setItem('risu_lastsaved', `${lastSaved}`)
|
||||||
const hadNoSync = d === 'noSync'
|
const hadNoSync = d === 'noSync'
|
||||||
if((!isEqual(maindb, BackupDb)) || hadNoSync){
|
if((!isEqual(maindb, BackupDb)) || hadNoSync){
|
||||||
BackupDb = cloneDeep(maindb)
|
BackupDb = structuredClone(maindb)
|
||||||
const files:DriveFile[] = await getFilesInFolder(ACCESS_TOKEN)
|
const files:DriveFile[] = await getFilesInFolder(ACCESS_TOKEN)
|
||||||
const fileNames = files.map((d) => {
|
const fileNames = files.map((d) => {
|
||||||
return d.name
|
return d.name
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import { get } from "svelte/store";
|
import { get } from "svelte/store";
|
||||||
import { DataBase, setDatabase } from "../storage/database";
|
import { DataBase, setDatabase } from "../storage/database";
|
||||||
import { cloneDeep } from "lodash";
|
|
||||||
import { downloadFile } from "../storage/globalApi";
|
import { downloadFile } from "../storage/globalApi";
|
||||||
import { BufferToText, selectSingleFile } from "../util";
|
import { BufferToText, selectSingleFile } from "../util";
|
||||||
import { alertError } from "../alert";
|
import { alertError } from "../alert";
|
||||||
@@ -102,7 +101,7 @@ export const colorSchemeList = Object.keys(colorShemes) as (keyof typeof colorSh
|
|||||||
export function changeColorScheme(colorScheme: string){
|
export function changeColorScheme(colorScheme: string){
|
||||||
let db = get(DataBase)
|
let db = get(DataBase)
|
||||||
if(colorScheme !== 'custom'){
|
if(colorScheme !== 'custom'){
|
||||||
db.colorScheme = cloneDeep(colorShemes[colorScheme])
|
db.colorScheme = structuredClone(colorShemes[colorScheme])
|
||||||
}
|
}
|
||||||
db.colorSchemeName = colorScheme
|
db.colorSchemeName = colorScheme
|
||||||
setDatabase(db)
|
setDatabase(db)
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import { selectSingleFile, sleep } from "./util"
|
|||||||
import { alertError, alertNormal, alertStore } from "./alert"
|
import { alertError, alertNormal, alertStore } from "./alert"
|
||||||
import { downloadFile, readImage } from "./storage/globalApi"
|
import { downloadFile, readImage } from "./storage/globalApi"
|
||||||
import { language } from "src/lang"
|
import { language } from "src/lang"
|
||||||
import { cloneDeep } from "lodash"
|
|
||||||
import { reencodeImage } from "./process/files/image"
|
import { reencodeImage } from "./process/files/image"
|
||||||
import { PngChunk } from "./pngChunk"
|
import { PngChunk } from "./pngChunk"
|
||||||
|
|
||||||
@@ -70,7 +69,7 @@ export async function exportUserPersona(){
|
|||||||
|
|
||||||
let img = await readImage(db.userIcon)
|
let img = await readImage(db.userIcon)
|
||||||
|
|
||||||
let card:PersonaCard = cloneDeep({
|
let card:PersonaCard = structuredClone({
|
||||||
name: db.username,
|
name: db.username,
|
||||||
personaPrompt: db.personaPrompt,
|
personaPrompt: db.personaPrompt,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -2,11 +2,8 @@ import { get } from 'svelte/store'
|
|||||||
import type { ScriptMode } from '../process/scripts'
|
import type { ScriptMode } from '../process/scripts'
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
import WorkerUrl from './embedworker?worker&url'
|
import WorkerUrl from './embedworker?worker&url'
|
||||||
import { DataBase, type Chat, type character, type Message } from '../storage/database'
|
import { DataBase, type Message } from '../storage/database'
|
||||||
import { selectedCharID } from '../stores'
|
import { selectedCharID } from '../stores'
|
||||||
import { add, cloneDeep } from 'lodash'
|
|
||||||
import { sleep } from '../util'
|
|
||||||
import { characterFormatUpdate } from '../characters'
|
|
||||||
import { setDatabase } from '../storage/database'
|
import { setDatabase } from '../storage/database'
|
||||||
|
|
||||||
let worker = new Worker(WorkerUrl, {type: 'module'})
|
let worker = new Worker(WorkerUrl, {type: 'module'})
|
||||||
@@ -83,7 +80,7 @@ addWorkerFunction('getChat', async () => {
|
|||||||
const db = get(DataBase)
|
const db = get(DataBase)
|
||||||
const selectedChar = get(selectedCharID)
|
const selectedChar = get(selectedCharID)
|
||||||
const char = db.characters[selectedChar]
|
const char = db.characters[selectedChar]
|
||||||
return cloneDeep(char.chats[char.chatPage].message)
|
return structuredClone(char.chats[char.chatPage].message)
|
||||||
})
|
})
|
||||||
|
|
||||||
addWorkerFunction('setChat', async (data:Message[]) => {
|
addWorkerFunction('setChat', async (data:Message[]) => {
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import { exampleMessage } from "./exampleMessages";
|
|||||||
import { sayTTS } from "./tts";
|
import { sayTTS } from "./tts";
|
||||||
import { supaMemory } from "./memory/supaMemory";
|
import { supaMemory } from "./memory/supaMemory";
|
||||||
import { v4 } from "uuid";
|
import { v4 } from "uuid";
|
||||||
import { cloneDeep } from "lodash";
|
|
||||||
import { groupOrder } from "./group";
|
import { groupOrder } from "./group";
|
||||||
import { runTrigger } from "./triggers";
|
import { runTrigger } from "./triggers";
|
||||||
import { HypaProcesser } from "./memory/hypamemory";
|
import { HypaProcesser } from "./memory/hypamemory";
|
||||||
@@ -207,7 +206,7 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
|
|||||||
'personaPrompt':([] as OpenAIChat[])
|
'personaPrompt':([] as OpenAIChat[])
|
||||||
}
|
}
|
||||||
|
|
||||||
let promptTemplate = cloneDeep(db.promptTemplate)
|
let promptTemplate = structuredClone(db.promptTemplate)
|
||||||
const usingPromptTemplate = !!promptTemplate
|
const usingPromptTemplate = !!promptTemplate
|
||||||
if(promptTemplate){
|
if(promptTemplate){
|
||||||
let hasPostEverything = false
|
let hasPostEverything = false
|
||||||
@@ -394,7 +393,7 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
|
|||||||
for(const card of template){
|
for(const card of template){
|
||||||
switch(card.type){
|
switch(card.type){
|
||||||
case 'persona':{
|
case 'persona':{
|
||||||
let pmt = cloneDeep(unformated.personaPrompt)
|
let pmt = structuredClone(unformated.personaPrompt)
|
||||||
if(card.innerFormat && pmt.length > 0){
|
if(card.innerFormat && pmt.length > 0){
|
||||||
for(let i=0;i<pmt.length;i++){
|
for(let i=0;i<pmt.length;i++){
|
||||||
pmt[i].content = risuChatParser(card.innerFormat, {chara: currentChar}).replace('{{slot}}', pmt[i].content)
|
pmt[i].content = risuChatParser(card.innerFormat, {chara: currentChar}).replace('{{slot}}', pmt[i].content)
|
||||||
@@ -405,7 +404,7 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
case 'description':{
|
case 'description':{
|
||||||
let pmt = cloneDeep(unformated.description)
|
let pmt = structuredClone(unformated.description)
|
||||||
if(card.innerFormat && pmt.length > 0){
|
if(card.innerFormat && pmt.length > 0){
|
||||||
for(let i=0;i<pmt.length;i++){
|
for(let i=0;i<pmt.length;i++){
|
||||||
pmt[i].content = risuChatParser(card.innerFormat, {chara: currentChar}).replace('{{slot}}', pmt[i].content)
|
pmt[i].content = risuChatParser(card.innerFormat, {chara: currentChar}).replace('{{slot}}', pmt[i].content)
|
||||||
@@ -416,7 +415,7 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
case 'authornote':{
|
case 'authornote':{
|
||||||
let pmt = cloneDeep(unformated.authorNote)
|
let pmt = structuredClone(unformated.authorNote)
|
||||||
if(card.innerFormat && pmt.length > 0){
|
if(card.innerFormat && pmt.length > 0){
|
||||||
for(let i=0;i<pmt.length;i++){
|
for(let i=0;i<pmt.length;i++){
|
||||||
pmt[i].content = risuChatParser(card.innerFormat, {chara: currentChar}).replace('{{slot}}', pmt[i].content || card.defaultText || '')
|
pmt[i].content = risuChatParser(card.innerFormat, {chara: currentChar}).replace('{{slot}}', pmt[i].content || card.defaultText || '')
|
||||||
@@ -759,7 +758,7 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
|
|||||||
//make into one
|
//make into one
|
||||||
|
|
||||||
let formated:OpenAIChat[] = []
|
let formated:OpenAIChat[] = []
|
||||||
const formatOrder = cloneDeep(db.formatingOrder)
|
const formatOrder = structuredClone(db.formatingOrder)
|
||||||
if(formatOrder){
|
if(formatOrder){
|
||||||
formatOrder.push('postEverything')
|
formatOrder.push('postEverything')
|
||||||
}
|
}
|
||||||
@@ -803,7 +802,7 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
|
|||||||
for(const card of template){
|
for(const card of template){
|
||||||
switch(card.type){
|
switch(card.type){
|
||||||
case 'persona':{
|
case 'persona':{
|
||||||
let pmt = cloneDeep(unformated.personaPrompt)
|
let pmt = structuredClone(unformated.personaPrompt)
|
||||||
if(card.innerFormat && pmt.length > 0){
|
if(card.innerFormat && pmt.length > 0){
|
||||||
for(let i=0;i<pmt.length;i++){
|
for(let i=0;i<pmt.length;i++){
|
||||||
pmt[i].content = risuChatParser(card.innerFormat, {chara: currentChar}).replace('{{slot}}', pmt[i].content)
|
pmt[i].content = risuChatParser(card.innerFormat, {chara: currentChar}).replace('{{slot}}', pmt[i].content)
|
||||||
@@ -814,7 +813,7 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
case 'description':{
|
case 'description':{
|
||||||
let pmt = cloneDeep(unformated.description)
|
let pmt = structuredClone(unformated.description)
|
||||||
if(card.innerFormat && pmt.length > 0){
|
if(card.innerFormat && pmt.length > 0){
|
||||||
for(let i=0;i<pmt.length;i++){
|
for(let i=0;i<pmt.length;i++){
|
||||||
pmt[i].content = risuChatParser(card.innerFormat, {chara: currentChar}).replace('{{slot}}', pmt[i].content)
|
pmt[i].content = risuChatParser(card.innerFormat, {chara: currentChar}).replace('{{slot}}', pmt[i].content)
|
||||||
@@ -825,7 +824,7 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
case 'authornote':{
|
case 'authornote':{
|
||||||
let pmt = cloneDeep(unformated.authorNote)
|
let pmt = structuredClone(unformated.authorNote)
|
||||||
if(card.innerFormat && pmt.length > 0){
|
if(card.innerFormat && pmt.length > 0){
|
||||||
for(let i=0;i<pmt.length;i++){
|
for(let i=0;i<pmt.length;i++){
|
||||||
pmt[i].content = risuChatParser(card.innerFormat, {chara: currentChar}).replace('{{slot}}', pmt[i].content || card.defaultText || '')
|
pmt[i].content = risuChatParser(card.innerFormat, {chara: currentChar}).replace('{{slot}}', pmt[i].content || card.defaultText || '')
|
||||||
@@ -917,7 +916,7 @@ export async function sendChat(chatProcessIndex = -1,arg:{chatAdditonalTokens?:n
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
case 'memory':{
|
case 'memory':{
|
||||||
let pmt = cloneDeep(memories)
|
let pmt = structuredClone(memories)
|
||||||
if(card.innerFormat && pmt.length > 0){
|
if(card.innerFormat && pmt.length > 0){
|
||||||
for(let i=0;i<pmt.length;i++){
|
for(let i=0;i<pmt.length;i++){
|
||||||
pmt[i].content = risuChatParser(card.innerFormat, {chara: currentChar}).replace('{{slot}}', pmt[i].content)
|
pmt[i].content = risuChatParser(card.innerFormat, {chara: currentChar}).replace('{{slot}}', pmt[i].content)
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import type { OpenAIChat } from "..";
|
|||||||
import { DataBase, type Chat, type character, type groupChat } from "../../storage/database";
|
import { DataBase, type Chat, type character, type groupChat } from "../../storage/database";
|
||||||
import { tokenize, type ChatTokenizer } from "../../tokenizer";
|
import { tokenize, type ChatTokenizer } from "../../tokenizer";
|
||||||
import { requestChatData } from "../request";
|
import { requestChatData } from "../request";
|
||||||
import { cloneDeep } from "lodash";
|
|
||||||
import { HypaProcesser } from "./hypamemory";
|
import { HypaProcesser } from "./hypamemory";
|
||||||
import { stringlizeChat } from "../stringlize";
|
import { stringlizeChat } from "../stringlize";
|
||||||
import { globalFetch } from "src/ts/storage/globalApi";
|
import { globalFetch } from "src/ts/storage/globalApi";
|
||||||
@@ -74,7 +73,7 @@ export async function supaMemory(
|
|||||||
for(let j=0;j<HypaData.length;j++){
|
for(let j=0;j<HypaData.length;j++){
|
||||||
let i =0;
|
let i =0;
|
||||||
let countTokens = currentTokens
|
let countTokens = currentTokens
|
||||||
let countChats = cloneDeep(chats)
|
let countChats = structuredClone(chats)
|
||||||
while(true){
|
while(true){
|
||||||
if(countChats.length === 0){
|
if(countChats.length === 0){
|
||||||
break
|
break
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import { SignatureV4 } from "@smithy/signature-v4";
|
|||||||
import { HttpRequest } from "@smithy/protocol-http";
|
import { HttpRequest } from "@smithy/protocol-http";
|
||||||
import { Sha256 } from "@aws-crypto/sha256-js";
|
import { Sha256 } from "@aws-crypto/sha256-js";
|
||||||
import { v4 } from "uuid";
|
import { v4 } from "uuid";
|
||||||
import { cloneDeep } from "lodash";
|
|
||||||
import { supportsInlayImage } from "./files/image";
|
import { supportsInlayImage } from "./files/image";
|
||||||
import { OaifixBias } from "../plugins/fixer";
|
import { OaifixBias } from "../plugins/fixer";
|
||||||
import { Capacitor } from "@capacitor/core";
|
import { Capacitor } from "@capacitor/core";
|
||||||
@@ -124,7 +123,7 @@ export interface OpenAIChatExtra {
|
|||||||
|
|
||||||
export async function requestChatDataMain(arg:requestDataArgument, model:'model'|'submodel', abortSignal:AbortSignal=null):Promise<requestDataResponse> {
|
export async function requestChatDataMain(arg:requestDataArgument, model:'model'|'submodel', abortSignal:AbortSignal=null):Promise<requestDataResponse> {
|
||||||
const db = get(DataBase)
|
const db = get(DataBase)
|
||||||
let formated = cloneDeep(arg.formated)
|
let formated = structuredClone(arg.formated)
|
||||||
let maxTokens = arg.maxTokens ??db.maxResponse
|
let maxTokens = arg.maxTokens ??db.maxResponse
|
||||||
let temperature = arg.temperature ?? (db.temperature / 100)
|
let temperature = arg.temperature ?? (db.temperature / 100)
|
||||||
let bias = arg.bias
|
let bias = arg.bias
|
||||||
@@ -178,7 +177,7 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
for(let i=0;i<formated.length;i++){
|
for(let i=0;i<formated.length;i++){
|
||||||
const m = formated[i]
|
const m = formated[i]
|
||||||
if(m.multimodals && m.multimodals.length > 0 && m.role === 'user'){
|
if(m.multimodals && m.multimodals.length > 0 && m.role === 'user'){
|
||||||
let v:OpenAIChatExtra = cloneDeep(m)
|
let v:OpenAIChatExtra = structuredClone(m)
|
||||||
let contents:OpenAIContents[] = []
|
let contents:OpenAIContents[] = []
|
||||||
for(let j=0;j<m.multimodals.length;j++){
|
for(let j=0;j<m.multimodals.length;j++){
|
||||||
contents.push({
|
contents.push({
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import { cloneDeep } from 'lodash'
|
|
||||||
import type { Database } from 'src/ts/storage/database'
|
import type { Database } from 'src/ts/storage/database'
|
||||||
|
|
||||||
export function templateCheck(db:Database){
|
export function templateCheck(db:Database){
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import { cloneDeep } from "lodash";
|
|
||||||
import { risuChatParser } from "../parser";
|
import { risuChatParser } from "../parser";
|
||||||
import { DataBase, type Chat, type character } from "../storage/database";
|
import { DataBase, type Chat, type character } from "../storage/database";
|
||||||
import { tokenize } from "../tokenizer";
|
import { tokenize } from "../tokenizer";
|
||||||
@@ -85,7 +84,7 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{
|
|||||||
manualName?: string
|
manualName?: string
|
||||||
}){
|
}){
|
||||||
arg.recursiveCount ??= 0
|
arg.recursiveCount ??= 0
|
||||||
char = cloneDeep(char)
|
char = structuredClone(char)
|
||||||
let varChanged = false
|
let varChanged = false
|
||||||
let stopSending = arg.stopSending ?? false
|
let stopSending = arg.stopSending ?? false
|
||||||
const currentChat = get(CurrentChat)
|
const currentChat = get(CurrentChat)
|
||||||
@@ -95,7 +94,7 @@ export async function runTrigger(char:character,mode:triggerMode, arg:{
|
|||||||
promptend: ''
|
promptend: ''
|
||||||
}
|
}
|
||||||
const triggers = char.triggerscript.concat(getModuleTriggers())
|
const triggers = char.triggerscript.concat(getModuleTriggers())
|
||||||
let chat = cloneDeep(arg.chat ?? char.chats[char.chatPage])
|
let chat = structuredClone(arg.chat ?? char.chats[char.chatPage])
|
||||||
if((!triggers) || (triggers.length === 0)){
|
if((!triggers) || (triggers.length === 0)){
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import { changeLanguage, language } from '../../lang';
|
|||||||
import type { RisuPlugin } from '../plugins/plugins';
|
import type { RisuPlugin } from '../plugins/plugins';
|
||||||
import type {triggerscript as triggerscriptMain} from '../process/triggers';
|
import type {triggerscript as triggerscriptMain} from '../process/triggers';
|
||||||
import { downloadFile, saveAsset as saveImageGlobal } from './globalApi';
|
import { downloadFile, saveAsset as saveImageGlobal } from './globalApi';
|
||||||
import { cloneDeep } from 'lodash';
|
|
||||||
import { defaultAutoSuggestPrompt, defaultJailbreak, defaultMainPrompt } from './defaultPrompts';
|
import { defaultAutoSuggestPrompt, defaultJailbreak, defaultMainPrompt } from './defaultPrompts';
|
||||||
import { alertNormal, alertSelect } from '../alert';
|
import { alertNormal, alertSelect } from '../alert';
|
||||||
import type { NAISettings } from '../process/models/nai';
|
import type { NAISettings } from '../process/models/nai';
|
||||||
@@ -312,16 +311,16 @@ export function setDatabase(data:Database){
|
|||||||
largePortrait: false
|
largePortrait: false
|
||||||
}]
|
}]
|
||||||
data.classicMaxWidth ??= false
|
data.classicMaxWidth ??= false
|
||||||
data.ooba ??= cloneDeep(defaultOoba)
|
data.ooba ??= structuredClone(defaultOoba)
|
||||||
data.ainconfig ??= cloneDeep(defaultAIN)
|
data.ainconfig ??= structuredClone(defaultAIN)
|
||||||
data.openrouterKey ??= ''
|
data.openrouterKey ??= ''
|
||||||
data.openrouterRequestModel ??= 'openai/gpt-3.5-turbo'
|
data.openrouterRequestModel ??= 'openai/gpt-3.5-turbo'
|
||||||
data.toggleConfirmRecommendedPreset ??= true
|
data.toggleConfirmRecommendedPreset ??= true
|
||||||
data.officialplugins ??= {}
|
data.officialplugins ??= {}
|
||||||
data.NAIsettings ??= cloneDeep(prebuiltNAIpresets)
|
data.NAIsettings ??= structuredClone(prebuiltNAIpresets)
|
||||||
data.assetWidth ??= -1
|
data.assetWidth ??= -1
|
||||||
data.animationSpeed ??= 0.4
|
data.animationSpeed ??= 0.4
|
||||||
data.colorScheme ??= cloneDeep(defaultColorScheme)
|
data.colorScheme ??= structuredClone(defaultColorScheme)
|
||||||
data.colorSchemeName ??= 'default'
|
data.colorSchemeName ??= 'default'
|
||||||
data.NAIsettings.starter ??= ""
|
data.NAIsettings.starter ??= ""
|
||||||
data.hypaModel ??= 'MiniLM'
|
data.hypaModel ??= 'MiniLM'
|
||||||
@@ -1049,8 +1048,8 @@ export const presetTemplate:botPreset = {
|
|||||||
promptPreprocess: false,
|
promptPreprocess: false,
|
||||||
proxyKey: '',
|
proxyKey: '',
|
||||||
bias: [],
|
bias: [],
|
||||||
ooba: cloneDeep(defaultOoba),
|
ooba: structuredClone(defaultOoba),
|
||||||
ainconfig: cloneDeep(defaultAIN),
|
ainconfig: structuredClone(defaultAIN),
|
||||||
reverseProxyOobaArgs: {
|
reverseProxyOobaArgs: {
|
||||||
mode: 'instruct'
|
mode: 'instruct'
|
||||||
},
|
},
|
||||||
@@ -1070,7 +1069,7 @@ const defaultSdData:[string,string][] = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
export const defaultSdDataFunc = () =>{
|
export const defaultSdDataFunc = () =>{
|
||||||
return cloneDeep(defaultSdData)
|
return structuredClone(defaultSdData)
|
||||||
}
|
}
|
||||||
|
|
||||||
export function saveCurrentPreset(){
|
export function saveCurrentPreset(){
|
||||||
@@ -1100,20 +1099,20 @@ export function saveCurrentPreset(){
|
|||||||
bias: db.bias,
|
bias: db.bias,
|
||||||
koboldURL: db.koboldURL,
|
koboldURL: db.koboldURL,
|
||||||
proxyKey: db.proxyKey,
|
proxyKey: db.proxyKey,
|
||||||
ooba: cloneDeep(db.ooba),
|
ooba: structuredClone(db.ooba),
|
||||||
ainconfig: cloneDeep(db.ainconfig),
|
ainconfig: structuredClone(db.ainconfig),
|
||||||
proxyRequestModel: db.proxyRequestModel,
|
proxyRequestModel: db.proxyRequestModel,
|
||||||
openrouterRequestModel: db.openrouterRequestModel,
|
openrouterRequestModel: db.openrouterRequestModel,
|
||||||
NAISettings: cloneDeep(db.NAIsettings),
|
NAISettings: structuredClone(db.NAIsettings),
|
||||||
promptTemplate: db.promptTemplate ?? null,
|
promptTemplate: db.promptTemplate ?? null,
|
||||||
NAIadventure: db.NAIadventure ?? false,
|
NAIadventure: db.NAIadventure ?? false,
|
||||||
NAIappendName: db.NAIappendName ?? false,
|
NAIappendName: db.NAIappendName ?? false,
|
||||||
localStopStrings: db.localStopStrings,
|
localStopStrings: db.localStopStrings,
|
||||||
autoSuggestPrompt: db.autoSuggestPrompt,
|
autoSuggestPrompt: db.autoSuggestPrompt,
|
||||||
customProxyRequestModel: db.customProxyRequestModel,
|
customProxyRequestModel: db.customProxyRequestModel,
|
||||||
reverseProxyOobaArgs: cloneDeep(db.reverseProxyOobaArgs) ?? null,
|
reverseProxyOobaArgs: structuredClone(db.reverseProxyOobaArgs) ?? null,
|
||||||
top_p: db.top_p ?? 1,
|
top_p: db.top_p ?? 1,
|
||||||
promptSettings: cloneDeep(db.promptSettings) ?? null,
|
promptSettings: structuredClone(db.promptSettings) ?? null,
|
||||||
repetition_penalty: db.repetition_penalty,
|
repetition_penalty: db.repetition_penalty,
|
||||||
min_p: db.min_p,
|
min_p: db.min_p,
|
||||||
top_a: db.top_a,
|
top_a: db.top_a,
|
||||||
@@ -1128,7 +1127,7 @@ export function copyPreset(id:number){
|
|||||||
saveCurrentPreset()
|
saveCurrentPreset()
|
||||||
let db = get(DataBase)
|
let db = get(DataBase)
|
||||||
let pres = db.botPresets
|
let pres = db.botPresets
|
||||||
const newPres = cloneDeep(pres[id])
|
const newPres = structuredClone(pres[id])
|
||||||
newPres.name += " Copy"
|
newPres.name += " Copy"
|
||||||
db.botPresets.push(newPres)
|
db.botPresets.push(newPres)
|
||||||
setDatabase(db)
|
setDatabase(db)
|
||||||
@@ -1168,8 +1167,8 @@ export function setPreset(db:Database, newPres: botPreset){
|
|||||||
db.bias = newPres.bias ?? db.bias
|
db.bias = newPres.bias ?? db.bias
|
||||||
db.koboldURL = newPres.koboldURL ?? db.koboldURL
|
db.koboldURL = newPres.koboldURL ?? db.koboldURL
|
||||||
db.proxyKey = newPres.proxyKey ?? db.proxyKey
|
db.proxyKey = newPres.proxyKey ?? db.proxyKey
|
||||||
db.ooba = cloneDeep(newPres.ooba ?? db.ooba)
|
db.ooba = structuredClone(newPres.ooba ?? db.ooba)
|
||||||
db.ainconfig = cloneDeep(newPres.ainconfig ?? db.ainconfig)
|
db.ainconfig = structuredClone(newPres.ainconfig ?? db.ainconfig)
|
||||||
db.openrouterRequestModel = newPres.openrouterRequestModel ?? db.openrouterRequestModel
|
db.openrouterRequestModel = newPres.openrouterRequestModel ?? db.openrouterRequestModel
|
||||||
db.proxyRequestModel = newPres.proxyRequestModel ?? db.proxyRequestModel
|
db.proxyRequestModel = newPres.proxyRequestModel ?? db.proxyRequestModel
|
||||||
db.NAIsettings = newPres.NAISettings ?? db.NAIsettings
|
db.NAIsettings = newPres.NAISettings ?? db.NAIsettings
|
||||||
@@ -1184,12 +1183,12 @@ export function setPreset(db:Database, newPres: botPreset){
|
|||||||
db.NAIsettings.mirostat_lr ??= 1
|
db.NAIsettings.mirostat_lr ??= 1
|
||||||
db.localStopStrings = newPres.localStopStrings
|
db.localStopStrings = newPres.localStopStrings
|
||||||
db.customProxyRequestModel = newPres.customProxyRequestModel ?? ''
|
db.customProxyRequestModel = newPres.customProxyRequestModel ?? ''
|
||||||
db.reverseProxyOobaArgs = cloneDeep(newPres.reverseProxyOobaArgs) ?? {
|
db.reverseProxyOobaArgs = structuredClone(newPres.reverseProxyOobaArgs) ?? {
|
||||||
mode: 'instruct'
|
mode: 'instruct'
|
||||||
}
|
}
|
||||||
db.top_p = newPres.top_p ?? 1
|
db.top_p = newPres.top_p ?? 1
|
||||||
//@ts-ignore //for legacy mistpings
|
//@ts-ignore //for legacy mistpings
|
||||||
db.promptSettings = cloneDeep(newPres.promptSettings) ?? {
|
db.promptSettings = structuredClone(newPres.promptSettings) ?? {
|
||||||
assistantPrefill: '',
|
assistantPrefill: '',
|
||||||
postEndInnerFormat: '',
|
postEndInnerFormat: '',
|
||||||
sendChatAsSystem: false,
|
sendChatAsSystem: false,
|
||||||
@@ -1212,7 +1211,7 @@ import type { RisuModule } from '../process/modules';
|
|||||||
export async function downloadPreset(id:number){
|
export async function downloadPreset(id:number){
|
||||||
saveCurrentPreset()
|
saveCurrentPreset()
|
||||||
let db = get(DataBase)
|
let db = get(DataBase)
|
||||||
let pres = cloneDeep(db.botPresets[id])
|
let pres = structuredClone(db.botPresets[id])
|
||||||
console.log(pres)
|
console.log(pres)
|
||||||
pres.openAIKey = ''
|
pres.openAIKey = ''
|
||||||
pres.forceReplaceUrl = ''
|
pres.forceReplaceUrl = ''
|
||||||
@@ -1258,7 +1257,7 @@ export async function importPreset(){
|
|||||||
let db = get(DataBase)
|
let db = get(DataBase)
|
||||||
if(pre.presetVersion && pre.presetVersion >= 3){
|
if(pre.presetVersion && pre.presetVersion >= 3){
|
||||||
//NAI preset
|
//NAI preset
|
||||||
const pr = cloneDeep(prebuiltPresets.NAI2)
|
const pr = structuredClone(prebuiltPresets.NAI2)
|
||||||
pr.temperature = pre.parameters.temperature * 100
|
pr.temperature = pre.parameters.temperature * 100
|
||||||
pr.maxResponse = pre.parameters.max_length
|
pr.maxResponse = pre.parameters.max_length
|
||||||
pr.NAISettings.topK = pre.parameters.top_k
|
pr.NAISettings.topK = pre.parameters.top_k
|
||||||
@@ -1283,7 +1282,7 @@ export async function importPreset(){
|
|||||||
|
|
||||||
if(Array.isArray(pre?.prompt_order?.[0]?.order) && Array.isArray(pre?.prompts)){
|
if(Array.isArray(pre?.prompt_order?.[0]?.order) && Array.isArray(pre?.prompts)){
|
||||||
//ST preset
|
//ST preset
|
||||||
const pr = cloneDeep(presetTemplate)
|
const pr = structuredClone(presetTemplate)
|
||||||
pr.promptTemplate = []
|
pr.promptTemplate = []
|
||||||
|
|
||||||
function findPrompt(identifier:number){
|
function findPrompt(identifier:number){
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import { alertConfirm, alertError, alertNormal, alertNormalWait } from "../alert
|
|||||||
import { checkDriverInit, syncDrive } from "../drive/drive";
|
import { checkDriverInit, syncDrive } from "../drive/drive";
|
||||||
import { hasher } from "../parser";
|
import { hasher } from "../parser";
|
||||||
import { characterURLImport, hubURL } from "../characterCards";
|
import { characterURLImport, hubURL } from "../characterCards";
|
||||||
import { cloneDeep } from "lodash";
|
|
||||||
import { defaultJailbreak, defaultMainPrompt, oldJailbreak, oldMainPrompt } from "./defaultPrompts";
|
import { defaultJailbreak, defaultMainPrompt, oldJailbreak, oldMainPrompt } from "./defaultPrompts";
|
||||||
import { loadRisuAccountData } from "../drive/accounter";
|
import { loadRisuAccountData } from "../drive/accounter";
|
||||||
import { decodeRisuSave, encodeRisuSave } from "./risuSave";
|
import { decodeRisuSave, encodeRisuSave } from "./risuSave";
|
||||||
@@ -940,7 +939,7 @@ async function checkNewFormat() {
|
|||||||
name: "Global Regex",
|
name: "Global Regex",
|
||||||
description: "Converted from legacy global regex",
|
description: "Converted from legacy global regex",
|
||||||
id: id,
|
id: id,
|
||||||
regex: cloneDeep(db.globalscript)
|
regex: structuredClone(db.globalscript)
|
||||||
}
|
}
|
||||||
db.modules.push(regexModule)
|
db.modules.push(regexModule)
|
||||||
db.enabledModules.push(id)
|
db.enabledModules.push(id)
|
||||||
@@ -954,7 +953,7 @@ async function checkNewFormat() {
|
|||||||
name: db.loreBook[i].name || "Unnamed Global Lorebook",
|
name: db.loreBook[i].name || "Unnamed Global Lorebook",
|
||||||
description: "Converted from legacy global lorebook",
|
description: "Converted from legacy global lorebook",
|
||||||
id: id,
|
id: id,
|
||||||
lorebook: cloneDeep(db.loreBook[i].data)
|
lorebook: structuredClone(db.loreBook[i].data)
|
||||||
}
|
}
|
||||||
db.modules.push(lbModule)
|
db.modules.push(lbModule)
|
||||||
if(i === selIndex){
|
if(i === selIndex){
|
||||||
@@ -983,7 +982,7 @@ async function checkNewFormat() {
|
|||||||
export function checkCharOrder() {
|
export function checkCharOrder() {
|
||||||
let db = get(DataBase)
|
let db = get(DataBase)
|
||||||
db.characterOrder = db.characterOrder ?? []
|
db.characterOrder = db.characterOrder ?? []
|
||||||
let ordered = cloneDeep(db.characterOrder ?? [])
|
let ordered = structuredClone(db.characterOrder ?? [])
|
||||||
for(let i=0;i<db.characterOrder.length;i++){
|
for(let i=0;i<db.characterOrder.length;i++){
|
||||||
const folder =db.characterOrder[i]
|
const folder =db.characterOrder[i]
|
||||||
if(typeof(folder) !== 'string' && folder){
|
if(typeof(folder) !== 'string' && folder){
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { get, writable } from "svelte/store";
|
import { get, writable } from "svelte/store";
|
||||||
import { DataBase, type character, type groupChat } from "./storage/database";
|
import { DataBase, type character, type groupChat } from "./storage/database";
|
||||||
import { cloneDeep, isEqual } from "lodash";
|
import { isEqual } from "lodash";
|
||||||
import type { simpleCharacterArgument } from "./parser";
|
import type { simpleCharacterArgument } from "./parser";
|
||||||
|
|
||||||
function updateSize(){
|
function updateSize(){
|
||||||
@@ -30,9 +30,9 @@ let db = get(DataBase)
|
|||||||
let currentChar = get(selectedCharID)
|
let currentChar = get(selectedCharID)
|
||||||
let currentCharacter = db.characters ? (db.characters[currentChar]) : null
|
let currentCharacter = db.characters ? (db.characters[currentChar]) : null
|
||||||
let currentChat = currentCharacter ? (currentCharacter.chats[currentCharacter.chatPage]) : null
|
let currentChat = currentCharacter ? (currentCharacter.chats[currentCharacter.chatPage]) : null
|
||||||
export const CurrentCharacter = writable(cloneDeep(currentCharacter))
|
export const CurrentCharacter = writable(structuredClone(currentCharacter))
|
||||||
export const CurrentSimpleCharacter = writable(createSimpleCharacter(currentCharacter))
|
export const CurrentSimpleCharacter = writable(createSimpleCharacter(currentCharacter))
|
||||||
export const CurrentChat = writable(cloneDeep(currentChat))
|
export const CurrentChat = writable(structuredClone(currentChat))
|
||||||
export const CurrentUsername = writable(db.username)
|
export const CurrentUsername = writable(db.username)
|
||||||
export const CurrentUserIcon = writable(db.userIcon)
|
export const CurrentUserIcon = writable(db.userIcon)
|
||||||
export const CurrentShowMemoryLimit = writable(db.showMemoryLimit)
|
export const CurrentShowMemoryLimit = writable(db.showMemoryLimit)
|
||||||
@@ -49,7 +49,7 @@ function createSimpleCharacter(char:character|groupChat){
|
|||||||
|
|
||||||
const simpleChar:simpleCharacterArgument = {
|
const simpleChar:simpleCharacterArgument = {
|
||||||
type: "simple",
|
type: "simple",
|
||||||
customscript: cloneDeep(char.customscript),
|
customscript: structuredClone(char.customscript),
|
||||||
chaId: char.chaId,
|
chaId: char.chaId,
|
||||||
additionalAssets: char.additionalAssets,
|
additionalAssets: char.additionalAssets,
|
||||||
virtualscript: char.virtualscript,
|
virtualscript: char.virtualscript,
|
||||||
@@ -80,7 +80,7 @@ function updateCurrentCharacter(){
|
|||||||
ShowVN.set(currentChar?.viewScreen === 'vn')
|
ShowVN.set(currentChar?.viewScreen === 'vn')
|
||||||
}
|
}
|
||||||
|
|
||||||
CurrentCharacter.set(cloneDeep(currentChar))
|
CurrentCharacter.set(structuredClone(currentChar))
|
||||||
const simp = createSimpleCharacter(currentChar)
|
const simp = createSimpleCharacter(currentChar)
|
||||||
|
|
||||||
if(!isEqual(get(CurrentSimpleCharacter), simp)){
|
if(!isEqual(get(CurrentSimpleCharacter), simp)){
|
||||||
@@ -101,7 +101,7 @@ function updateCurrentChat(){
|
|||||||
if(isEqual(gotChat, chat)){
|
if(isEqual(gotChat, chat)){
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
CurrentChat.set(cloneDeep(chat))
|
CurrentChat.set(structuredClone(chat))
|
||||||
}
|
}
|
||||||
|
|
||||||
DataBase.subscribe((data) => {
|
DataBase.subscribe((data) => {
|
||||||
@@ -133,7 +133,7 @@ CurrentCharacter.subscribe((char) => {
|
|||||||
if(isEqual(cha, char)){
|
if(isEqual(cha, char)){
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
db.characters[charId] = cloneDeep(char)
|
db.characters[charId] = structuredClone(char)
|
||||||
DataBase.set(db)
|
DataBase.set(db)
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ CurrentChat.subscribe((chat) => {
|
|||||||
|
|
||||||
if(currentChar){
|
if(currentChar){
|
||||||
if(!isEqual(currentChar.chats[currentChar.chatPage], chat)){
|
if(!isEqual(currentChar.chats[currentChar.chatPage], chat)){
|
||||||
currentChar.chats[currentChar.chatPage] = cloneDeep(chat)
|
currentChar.chats[currentChar.chatPage] = structuredClone(chat)
|
||||||
CurrentCharacter.set(currentChar)
|
CurrentCharacter.set(currentChar)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import { alertError, alertInput, alertNormal, alertWait } from '../alert';
|
|||||||
import { get } from 'svelte/store';
|
import { get } from 'svelte/store';
|
||||||
import { DataBase, setDatabase, type character, saveImage } from '../storage/database';
|
import { DataBase, setDatabase, type character, saveImage } from '../storage/database';
|
||||||
import { selectedCharID } from '../stores';
|
import { selectedCharID } from '../stores';
|
||||||
import { cloneDeep } from 'lodash';
|
|
||||||
import { findCharacterIndexbyId, sleep } from '../util';
|
import { findCharacterIndexbyId, sleep } from '../util';
|
||||||
import type { DataConnection, Peer } from 'peerjs';
|
import type { DataConnection, Peer } from 'peerjs';
|
||||||
import { readImage } from '../storage/globalApi';
|
import { readImage } from '../storage/globalApi';
|
||||||
@@ -40,7 +39,7 @@ export async function createMultiuserRoom(){
|
|||||||
async function requestChar(excludeAssets:string[]|null = null){
|
async function requestChar(excludeAssets:string[]|null = null){
|
||||||
const db = get(DataBase)
|
const db = get(DataBase)
|
||||||
const selectedCharId = get(selectedCharID)
|
const selectedCharId = get(selectedCharID)
|
||||||
const char = cloneDeep(db.characters[selectedCharId])
|
const char = structuredClone(db.characters[selectedCharId])
|
||||||
if(char.type === 'group'){
|
if(char.type === 'group'){
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -88,7 +87,7 @@ export async function createMultiuserRoom(){
|
|||||||
if(data.type === 'receive-char'){
|
if(data.type === 'receive-char'){
|
||||||
const db = get(DataBase)
|
const db = get(DataBase)
|
||||||
const selectedCharId = get(selectedCharID)
|
const selectedCharId = get(selectedCharID)
|
||||||
const char = cloneDeep(db.characters[selectedCharId])
|
const char = structuredClone(db.characters[selectedCharId])
|
||||||
const recivedChar = data.data
|
const recivedChar = data.data
|
||||||
if(char.type === 'group'){
|
if(char.type === 'group'){
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user