Merge branch 'main' of https://github.com/Decikingship/RisuAICN
This commit is contained in:
@@ -17,6 +17,7 @@
|
|||||||
"@dqbd/tiktoken": "^1.0.4",
|
"@dqbd/tiktoken": "^1.0.4",
|
||||||
"@msgpack/msgpack": "3.0.0-beta2",
|
"@msgpack/msgpack": "3.0.0-beta2",
|
||||||
"@tauri-apps/api": "1.3.0",
|
"@tauri-apps/api": "1.3.0",
|
||||||
|
"@xenova/transformers": "^2.1.1",
|
||||||
"body-parser": "^1.20.2",
|
"body-parser": "^1.20.2",
|
||||||
"buffer": "^6.0.3",
|
"buffer": "^6.0.3",
|
||||||
"core-js": "^3.30.2",
|
"core-js": "^3.30.2",
|
||||||
|
|||||||
373
pnpm-lock.yaml
generated
373
pnpm-lock.yaml
generated
@@ -10,6 +10,9 @@ dependencies:
|
|||||||
'@tauri-apps/api':
|
'@tauri-apps/api':
|
||||||
specifier: 1.3.0
|
specifier: 1.3.0
|
||||||
version: 1.3.0
|
version: 1.3.0
|
||||||
|
'@xenova/transformers':
|
||||||
|
specifier: ^2.1.1
|
||||||
|
version: 2.1.1
|
||||||
body-parser:
|
body-parser:
|
||||||
specifier: ^1.20.2
|
specifier: ^1.20.2
|
||||||
version: 1.20.2
|
version: 1.20.2
|
||||||
@@ -412,6 +415,49 @@ packages:
|
|||||||
fastq: 1.15.0
|
fastq: 1.15.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@protobufjs/aspromise@1.1.2:
|
||||||
|
resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@protobufjs/base64@1.1.2:
|
||||||
|
resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@protobufjs/codegen@2.0.4:
|
||||||
|
resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@protobufjs/eventemitter@1.1.0:
|
||||||
|
resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@protobufjs/fetch@1.1.0:
|
||||||
|
resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==}
|
||||||
|
dependencies:
|
||||||
|
'@protobufjs/aspromise': 1.1.2
|
||||||
|
'@protobufjs/inquire': 1.1.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@protobufjs/float@1.0.2:
|
||||||
|
resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@protobufjs/inquire@1.1.0:
|
||||||
|
resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@protobufjs/path@1.1.2:
|
||||||
|
resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@protobufjs/pool@1.1.0:
|
||||||
|
resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/@protobufjs/utf8@1.1.0:
|
||||||
|
resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@rollup/plugin-virtual@3.0.1(rollup@3.21.3):
|
/@rollup/plugin-virtual@3.0.1(rollup@3.21.3):
|
||||||
resolution: {integrity: sha512-fK8O0IL5+q+GrsMLuACVNk2x21g3yaw+sG2qn16SnUd3IlBsQyvWxLMGHmCmXRMecPjGRSZ/1LmZB4rjQm68og==}
|
resolution: {integrity: sha512-fK8O0IL5+q+GrsMLuACVNk2x21g3yaw+sG2qn16SnUd3IlBsQyvWxLMGHmCmXRMecPjGRSZ/1LmZB4rjQm68og==}
|
||||||
engines: {node: '>=14.0.0'}
|
engines: {node: '>=14.0.0'}
|
||||||
@@ -707,6 +753,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==}
|
resolution: {integrity: sha512-r22s9tAS7imvBt2lyHC9B8AGwWnXaYb1tY09oyLkXDs4vArpYJzw09nj8MLx5VfciBPGIb+ZwG0ssYnEPJxn/g==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@types/long@4.0.2:
|
||||||
|
resolution: {integrity: sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@types/node@18.15.11:
|
/@types/node@18.15.11:
|
||||||
resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==}
|
resolution: {integrity: sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==}
|
||||||
|
|
||||||
@@ -742,6 +792,15 @@ packages:
|
|||||||
resolution: {integrity: sha512-6hogE75Hl2Ov/jgp8ZhDaGmIF/q3J07GtXf8nCJCwKTHq7971po5+DId7grft09zG7plBwpF6ZU0yx9Du4/e1A==}
|
resolution: {integrity: sha512-6hogE75Hl2Ov/jgp8ZhDaGmIF/q3J07GtXf8nCJCwKTHq7971po5+DId7grft09zG7plBwpF6ZU0yx9Du4/e1A==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/@xenova/transformers@2.1.1:
|
||||||
|
resolution: {integrity: sha512-6DTz2ob46C/CqL8bmtFIUSvI9Nfi3d4HUF4fHf1hV1J6BFE2n8rNhqZkmTgo/rHhOmaliGAeRxHjZvRXeSqZRQ==}
|
||||||
|
dependencies:
|
||||||
|
onnxruntime-web: 1.14.0
|
||||||
|
sharp: 0.32.1
|
||||||
|
optionalDependencies:
|
||||||
|
onnxruntime-node: 1.14.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/abab@2.0.6:
|
/abab@2.0.6:
|
||||||
resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
|
resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==}
|
||||||
dev: false
|
dev: false
|
||||||
@@ -838,6 +897,14 @@ packages:
|
|||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/bl@4.1.0:
|
||||||
|
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
|
||||||
|
dependencies:
|
||||||
|
buffer: 5.7.1
|
||||||
|
inherits: 2.0.4
|
||||||
|
readable-stream: 3.6.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
/body-parser@1.20.1:
|
/body-parser@1.20.1:
|
||||||
resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==}
|
resolution: {integrity: sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==}
|
||||||
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
|
engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
|
||||||
@@ -911,6 +978,13 @@ packages:
|
|||||||
resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
|
resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/buffer@5.7.1:
|
||||||
|
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
|
||||||
|
dependencies:
|
||||||
|
base64-js: 1.5.1
|
||||||
|
ieee754: 1.2.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/buffer@6.0.3:
|
/buffer@6.0.3:
|
||||||
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
|
resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -959,9 +1033,34 @@ packages:
|
|||||||
fsevents: 2.3.2
|
fsevents: 2.3.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/chownr@1.1.4:
|
||||||
|
resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/color-convert@2.0.1:
|
||||||
|
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
|
||||||
|
engines: {node: '>=7.0.0'}
|
||||||
|
dependencies:
|
||||||
|
color-name: 1.1.4
|
||||||
|
dev: false
|
||||||
|
|
||||||
/color-name@1.1.4:
|
/color-name@1.1.4:
|
||||||
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
||||||
dev: true
|
|
||||||
|
/color-string@1.9.1:
|
||||||
|
resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
|
||||||
|
dependencies:
|
||||||
|
color-name: 1.1.4
|
||||||
|
simple-swizzle: 0.2.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/color@4.2.3:
|
||||||
|
resolution: {integrity: sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==}
|
||||||
|
engines: {node: '>=12.5.0'}
|
||||||
|
dependencies:
|
||||||
|
color-convert: 2.0.1
|
||||||
|
color-string: 1.9.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/combined-stream@1.0.8:
|
/combined-stream@1.0.8:
|
||||||
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
|
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
|
||||||
@@ -1095,6 +1194,18 @@ packages:
|
|||||||
resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
|
resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/decompress-response@6.0.0:
|
||||||
|
resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
|
||||||
|
engines: {node: '>=10'}
|
||||||
|
dependencies:
|
||||||
|
mimic-response: 3.1.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/deep-extend@0.6.0:
|
||||||
|
resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
|
||||||
|
engines: {node: '>=4.0.0'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/deep-is@0.1.4:
|
/deep-is@0.1.4:
|
||||||
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
|
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
|
||||||
dev: false
|
dev: false
|
||||||
@@ -1131,6 +1242,11 @@ packages:
|
|||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/detect-libc@2.0.1:
|
||||||
|
resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==}
|
||||||
|
engines: {node: '>=8'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/didyoumean@1.2.2:
|
/didyoumean@1.2.2:
|
||||||
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
|
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -1190,6 +1306,12 @@ packages:
|
|||||||
engines: {node: '>= 0.8'}
|
engines: {node: '>= 0.8'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/end-of-stream@1.4.4:
|
||||||
|
resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
|
||||||
|
dependencies:
|
||||||
|
once: 1.4.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/entities@4.4.0:
|
/entities@4.4.0:
|
||||||
resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==}
|
resolution: {integrity: sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==}
|
||||||
engines: {node: '>=0.12'}
|
engines: {node: '>=0.12'}
|
||||||
@@ -1290,6 +1412,11 @@ packages:
|
|||||||
resolution: {integrity: sha512-g/aje2noHivrRSLbAUtBPWFbxKdKhgj/xr1vATDdUXPOFYJlQ62Ft0oy+72V6XLIpDJfHs6gXLbBLAolqOXYRw==}
|
resolution: {integrity: sha512-g/aje2noHivrRSLbAUtBPWFbxKdKhgj/xr1vATDdUXPOFYJlQ62Ft0oy+72V6XLIpDJfHs6gXLbBLAolqOXYRw==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/expand-template@2.0.3:
|
||||||
|
resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
|
||||||
|
engines: {node: '>=6'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/express@4.18.2:
|
/express@4.18.2:
|
||||||
resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==}
|
resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==}
|
||||||
engines: {node: '>= 0.10.0'}
|
engines: {node: '>= 0.10.0'}
|
||||||
@@ -1372,6 +1499,10 @@ packages:
|
|||||||
- supports-color
|
- supports-color
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/flatbuffers@1.12.0:
|
||||||
|
resolution: {integrity: sha512-c7CZADjRcl6j0PlvFy0ZqXQ67qSEZfrVPynmnL+2zPc+NtMvrF8Y0QceMo7QqnSPc7+uWjUIAbvCQ5WIKlMVdQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/form-data@4.0.0:
|
/form-data@4.0.0:
|
||||||
resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
|
resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
|
||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
@@ -1395,6 +1526,10 @@ packages:
|
|||||||
engines: {node: '>= 0.6'}
|
engines: {node: '>= 0.6'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/fs-constants@1.0.0:
|
||||||
|
resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/fs.realpath@1.0.0:
|
/fs.realpath@1.0.0:
|
||||||
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
|
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
|
||||||
dev: true
|
dev: true
|
||||||
@@ -1423,6 +1558,10 @@ packages:
|
|||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/github-from-package@0.0.0:
|
||||||
|
resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/glob-parent@5.1.2:
|
/glob-parent@5.1.2:
|
||||||
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
|
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
|
||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
@@ -1474,6 +1613,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
|
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/guid-typescript@1.0.9:
|
||||||
|
resolution: {integrity: sha512-Y8T4vYhEfwJOTbouREvG+3XDsjr8E3kIr7uf+JZ0BYloFsttiHU0WfvANVsR7TxNUJa/WpCnw/Ino/p+DeBhBQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/has-proto@1.0.1:
|
/has-proto@1.0.1:
|
||||||
resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
|
resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
@@ -1579,6 +1722,10 @@ packages:
|
|||||||
/inherits@2.0.4:
|
/inherits@2.0.4:
|
||||||
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
|
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
|
||||||
|
|
||||||
|
/ini@1.3.8:
|
||||||
|
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/internal-ip@7.0.0:
|
/internal-ip@7.0.0:
|
||||||
resolution: {integrity: sha512-qE4TeD4brqC45Vq/+VASeMiS1KRyfBkR6HT2sh9pZVVCzSjPkaCEfKFU+dL0PRv7NHJtvoKN2r82G6wTfzorkw==}
|
resolution: {integrity: sha512-qE4TeD4brqC45Vq/+VASeMiS1KRyfBkR6HT2sh9pZVVCzSjPkaCEfKFU+dL0PRv7NHJtvoKN2r82G6wTfzorkw==}
|
||||||
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
|
||||||
@@ -1604,6 +1751,10 @@ packages:
|
|||||||
engines: {node: '>= 10'}
|
engines: {node: '>= 10'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/is-arrayish@0.3.2:
|
||||||
|
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/is-binary-path@2.1.0:
|
/is-binary-path@2.1.0:
|
||||||
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
|
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@@ -1763,6 +1914,17 @@ packages:
|
|||||||
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/long@4.0.0:
|
||||||
|
resolution: {integrity: sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/lru-cache@6.0.0:
|
||||||
|
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
|
||||||
|
engines: {node: '>=10'}
|
||||||
|
dependencies:
|
||||||
|
yallist: 4.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/lucide-svelte@0.130.0(svelte@3.58.0):
|
/lucide-svelte@0.130.0(svelte@3.58.0):
|
||||||
resolution: {integrity: sha512-KDxJsWucA8p6XnNR5JDLvy3opMyQHWBZd+0mUO+1NI573UHmt7GDETWBynmbAjqavLH/SLT2r6P587aM4IAmPw==}
|
resolution: {integrity: sha512-KDxJsWucA8p6XnNR5JDLvy3opMyQHWBZd+0mUO+1NI573UHmt7GDETWBynmbAjqavLH/SLT2r6P587aM4IAmPw==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
@@ -1839,6 +2001,11 @@ packages:
|
|||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/mimic-response@3.1.0:
|
||||||
|
resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
|
||||||
|
engines: {node: '>=10'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/min-indent@1.0.1:
|
/min-indent@1.0.1:
|
||||||
resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
|
resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
@@ -1852,7 +2019,10 @@ packages:
|
|||||||
|
|
||||||
/minimist@1.2.8:
|
/minimist@1.2.8:
|
||||||
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
|
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
|
||||||
dev: true
|
|
||||||
|
/mkdirp-classic@0.5.3:
|
||||||
|
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/mkdirp@0.5.6:
|
/mkdirp@0.5.6:
|
||||||
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
|
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
|
||||||
@@ -1895,11 +2065,26 @@ packages:
|
|||||||
hasBin: true
|
hasBin: true
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/napi-build-utils@1.0.2:
|
||||||
|
resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/negotiator@0.6.3:
|
/negotiator@0.6.3:
|
||||||
resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
|
resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
|
||||||
engines: {node: '>= 0.6'}
|
engines: {node: '>= 0.6'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/node-abi@3.43.0:
|
||||||
|
resolution: {integrity: sha512-QB0MMv+tn9Ur2DtJrc8y09n0n6sw88CyDniWSX2cHW10goQXYPK9ZpFJOktDS4ron501edPX6h9i7Pg+RnH5nQ==}
|
||||||
|
engines: {node: '>=10'}
|
||||||
|
dependencies:
|
||||||
|
semver: 7.5.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/node-addon-api@6.1.0:
|
||||||
|
resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/node-html-parser@6.1.5:
|
/node-html-parser@6.1.5:
|
||||||
resolution: {integrity: sha512-fAaM511feX++/Chnhe475a0NHD8M7AxDInsqQpz6x63GRF7xYNdS8Vo5dKsIVPgsOvG7eioRRTZQnWBrhDHBSg==}
|
resolution: {integrity: sha512-fAaM511feX++/Chnhe475a0NHD8M7AxDInsqQpz6x63GRF7xYNdS8Vo5dKsIVPgsOvG7eioRRTZQnWBrhDHBSg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
@@ -1962,7 +2147,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
|
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
|
||||||
dependencies:
|
dependencies:
|
||||||
wrappy: 1.0.2
|
wrappy: 1.0.2
|
||||||
dev: true
|
|
||||||
|
|
||||||
/onetime@5.1.2:
|
/onetime@5.1.2:
|
||||||
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
|
resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
|
||||||
@@ -1971,6 +2155,36 @@ packages:
|
|||||||
mimic-fn: 2.1.0
|
mimic-fn: 2.1.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/onnx-proto@4.0.4:
|
||||||
|
resolution: {integrity: sha512-aldMOB3HRoo6q/phyB6QRQxSt895HNNw82BNyZ2CMh4bjeKv7g/c+VpAFtJuEMVfYLMbRx61hbuqnKceLeDcDA==}
|
||||||
|
dependencies:
|
||||||
|
protobufjs: 6.11.3
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/onnxruntime-common@1.14.0:
|
||||||
|
resolution: {integrity: sha512-3LJpegM2iMNRX2wUmtYfeX/ytfOzNwAWKSq1HbRrKc9+uqG/FsEA0bbKZl1btQeZaXhC26l44NWpNUeXPII7Ew==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/onnxruntime-node@1.14.0:
|
||||||
|
resolution: {integrity: sha512-5ba7TWomIV/9b6NH/1x/8QEeowsb+jBEvFzU6z0T4mNsFwdPqXeFUM7uxC6QeSRkEbWu3qEB0VMjrvzN/0S9+w==}
|
||||||
|
os: [win32, darwin, linux]
|
||||||
|
requiresBuild: true
|
||||||
|
dependencies:
|
||||||
|
onnxruntime-common: 1.14.0
|
||||||
|
dev: false
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
/onnxruntime-web@1.14.0:
|
||||||
|
resolution: {integrity: sha512-Kcqf43UMfW8mCydVGcX9OMXI2VN17c0p6XvR7IPSZzBf/6lteBzXHvcEVWDPmCKuGombl997HgLqj91F11DzXw==}
|
||||||
|
dependencies:
|
||||||
|
flatbuffers: 1.12.0
|
||||||
|
guid-typescript: 1.0.9
|
||||||
|
long: 4.0.0
|
||||||
|
onnx-proto: 4.0.4
|
||||||
|
onnxruntime-common: 1.14.0
|
||||||
|
platform: 1.3.6
|
||||||
|
dev: false
|
||||||
|
|
||||||
/optionator@0.8.3:
|
/optionator@0.8.3:
|
||||||
resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==}
|
resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==}
|
||||||
engines: {node: '>= 0.8.0'}
|
engines: {node: '>= 0.8.0'}
|
||||||
@@ -2060,6 +2274,10 @@ packages:
|
|||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/platform@1.3.6:
|
||||||
|
resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/png-chunk-text@1.0.0:
|
/png-chunk-text@1.0.0:
|
||||||
resolution: {integrity: sha512-DEROKU3SkkLGWNMzru3xPVgxyd48UGuMSZvioErCure6yhOc/pRH2ZV+SEn7nmaf7WNf3NdIpH+UTrRdKyq9Lw==}
|
resolution: {integrity: sha512-DEROKU3SkkLGWNMzru3xPVgxyd48UGuMSZvioErCure6yhOc/pRH2ZV+SEn7nmaf7WNf3NdIpH+UTrRdKyq9Lw==}
|
||||||
dev: false
|
dev: false
|
||||||
@@ -2160,11 +2378,50 @@ packages:
|
|||||||
source-map-js: 1.0.2
|
source-map-js: 1.0.2
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/prebuild-install@7.1.1:
|
||||||
|
resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==}
|
||||||
|
engines: {node: '>=10'}
|
||||||
|
hasBin: true
|
||||||
|
dependencies:
|
||||||
|
detect-libc: 2.0.1
|
||||||
|
expand-template: 2.0.3
|
||||||
|
github-from-package: 0.0.0
|
||||||
|
minimist: 1.2.8
|
||||||
|
mkdirp-classic: 0.5.3
|
||||||
|
napi-build-utils: 1.0.2
|
||||||
|
node-abi: 3.43.0
|
||||||
|
pump: 3.0.0
|
||||||
|
rc: 1.2.8
|
||||||
|
simple-get: 4.0.1
|
||||||
|
tar-fs: 2.1.1
|
||||||
|
tunnel-agent: 0.6.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/prelude-ls@1.1.2:
|
/prelude-ls@1.1.2:
|
||||||
resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==}
|
resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==}
|
||||||
engines: {node: '>= 0.8.0'}
|
engines: {node: '>= 0.8.0'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/protobufjs@6.11.3:
|
||||||
|
resolution: {integrity: sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==}
|
||||||
|
hasBin: true
|
||||||
|
requiresBuild: true
|
||||||
|
dependencies:
|
||||||
|
'@protobufjs/aspromise': 1.1.2
|
||||||
|
'@protobufjs/base64': 1.1.2
|
||||||
|
'@protobufjs/codegen': 2.0.4
|
||||||
|
'@protobufjs/eventemitter': 1.1.0
|
||||||
|
'@protobufjs/fetch': 1.1.0
|
||||||
|
'@protobufjs/float': 1.0.2
|
||||||
|
'@protobufjs/inquire': 1.1.0
|
||||||
|
'@protobufjs/path': 1.1.2
|
||||||
|
'@protobufjs/pool': 1.1.0
|
||||||
|
'@protobufjs/utf8': 1.1.0
|
||||||
|
'@types/long': 4.0.2
|
||||||
|
'@types/node': 18.15.11
|
||||||
|
long: 4.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/proxy-addr@2.0.7:
|
/proxy-addr@2.0.7:
|
||||||
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
|
resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==}
|
||||||
engines: {node: '>= 0.10'}
|
engines: {node: '>= 0.10'}
|
||||||
@@ -2177,6 +2434,13 @@ packages:
|
|||||||
resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
|
resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/pump@3.0.0:
|
||||||
|
resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
|
||||||
|
dependencies:
|
||||||
|
end-of-stream: 1.4.4
|
||||||
|
once: 1.4.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/punycode@2.3.0:
|
/punycode@2.3.0:
|
||||||
resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
|
resolution: {integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@@ -2227,12 +2491,31 @@ packages:
|
|||||||
unpipe: 1.0.0
|
unpipe: 1.0.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/rc@1.2.8:
|
||||||
|
resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
|
||||||
|
hasBin: true
|
||||||
|
dependencies:
|
||||||
|
deep-extend: 0.6.0
|
||||||
|
ini: 1.3.8
|
||||||
|
minimist: 1.2.8
|
||||||
|
strip-json-comments: 2.0.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/read-cache@1.0.0:
|
/read-cache@1.0.0:
|
||||||
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
|
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
|
||||||
dependencies:
|
dependencies:
|
||||||
pify: 2.3.0
|
pify: 2.3.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/readable-stream@3.6.2:
|
||||||
|
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
|
||||||
|
engines: {node: '>= 6'}
|
||||||
|
dependencies:
|
||||||
|
inherits: 2.0.4
|
||||||
|
string_decoder: 1.3.0
|
||||||
|
util-deprecate: 1.0.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
/readdirp@3.6.0:
|
/readdirp@3.6.0:
|
||||||
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
|
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
|
||||||
engines: {node: '>=8.10.0'}
|
engines: {node: '>=8.10.0'}
|
||||||
@@ -2318,6 +2601,14 @@ packages:
|
|||||||
xmlchars: 2.2.0
|
xmlchars: 2.2.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/semver@7.5.1:
|
||||||
|
resolution: {integrity: sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==}
|
||||||
|
engines: {node: '>=10'}
|
||||||
|
hasBin: true
|
||||||
|
dependencies:
|
||||||
|
lru-cache: 6.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/send@0.18.0:
|
/send@0.18.0:
|
||||||
resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
|
resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==}
|
||||||
engines: {node: '>= 0.8.0'}
|
engines: {node: '>= 0.8.0'}
|
||||||
@@ -2355,6 +2646,21 @@ packages:
|
|||||||
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
|
resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/sharp@0.32.1:
|
||||||
|
resolution: {integrity: sha512-kQTFtj7ldpUqSe8kDxoGLZc1rnMFU0AO2pqbX6pLy3b7Oj8ivJIdoKNwxHVQG2HN6XpHPJqCSM2nsma2gOXvOg==}
|
||||||
|
engines: {node: '>=14.15.0'}
|
||||||
|
requiresBuild: true
|
||||||
|
dependencies:
|
||||||
|
color: 4.2.3
|
||||||
|
detect-libc: 2.0.1
|
||||||
|
node-addon-api: 6.1.0
|
||||||
|
prebuild-install: 7.1.1
|
||||||
|
semver: 7.5.1
|
||||||
|
simple-get: 4.0.1
|
||||||
|
tar-fs: 2.1.1
|
||||||
|
tunnel-agent: 0.6.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/shebang-command@2.0.0:
|
/shebang-command@2.0.0:
|
||||||
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
|
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@@ -2386,6 +2692,24 @@ packages:
|
|||||||
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
|
resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/simple-concat@1.0.1:
|
||||||
|
resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/simple-get@4.0.1:
|
||||||
|
resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==}
|
||||||
|
dependencies:
|
||||||
|
decompress-response: 6.0.0
|
||||||
|
once: 1.4.0
|
||||||
|
simple-concat: 1.0.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/simple-swizzle@0.2.2:
|
||||||
|
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
|
||||||
|
dependencies:
|
||||||
|
is-arrayish: 0.3.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
/sliced@1.0.1:
|
/sliced@1.0.1:
|
||||||
resolution: {integrity: sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==}
|
resolution: {integrity: sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==}
|
||||||
dev: false
|
dev: false
|
||||||
@@ -2417,6 +2741,12 @@ packages:
|
|||||||
engines: {node: '>= 0.8'}
|
engines: {node: '>= 0.8'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/string_decoder@1.3.0:
|
||||||
|
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
|
||||||
|
dependencies:
|
||||||
|
safe-buffer: 5.2.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/strip-final-newline@2.0.0:
|
/strip-final-newline@2.0.0:
|
||||||
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
|
resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@@ -2429,6 +2759,11 @@ packages:
|
|||||||
min-indent: 1.0.1
|
min-indent: 1.0.1
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/strip-json-comments@2.0.1:
|
||||||
|
resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/sucrase@3.31.0:
|
/sucrase@3.31.0:
|
||||||
resolution: {integrity: sha512-6QsHnkqyVEzYcaiHsOKkzOtOgdJcb8i54x6AV2hDwyZcY9ZyykGZVw6L/YN98xC0evwTP6utsWWrKRaa8QlfEQ==}
|
resolution: {integrity: sha512-6QsHnkqyVEzYcaiHsOKkzOtOgdJcb8i54x6AV2hDwyZcY9ZyykGZVw6L/YN98xC0evwTP6utsWWrKRaa8QlfEQ==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
@@ -2626,6 +2961,26 @@ packages:
|
|||||||
- ts-node
|
- ts-node
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/tar-fs@2.1.1:
|
||||||
|
resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==}
|
||||||
|
dependencies:
|
||||||
|
chownr: 1.1.4
|
||||||
|
mkdirp-classic: 0.5.3
|
||||||
|
pump: 3.0.0
|
||||||
|
tar-stream: 2.2.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/tar-stream@2.2.0:
|
||||||
|
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
|
||||||
|
engines: {node: '>=6'}
|
||||||
|
dependencies:
|
||||||
|
bl: 4.1.0
|
||||||
|
end-of-stream: 1.4.4
|
||||||
|
fs-constants: 1.0.0
|
||||||
|
inherits: 2.0.4
|
||||||
|
readable-stream: 3.6.2
|
||||||
|
dev: false
|
||||||
|
|
||||||
/thenify-all@1.6.0:
|
/thenify-all@1.6.0:
|
||||||
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
|
resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
|
||||||
engines: {node: '>=0.8'}
|
engines: {node: '>=0.8'}
|
||||||
@@ -2676,6 +3031,12 @@ packages:
|
|||||||
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
|
resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/tunnel-agent@0.6.0:
|
||||||
|
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
|
||||||
|
dependencies:
|
||||||
|
safe-buffer: 5.2.1
|
||||||
|
dev: false
|
||||||
|
|
||||||
/type-check@0.3.2:
|
/type-check@0.3.2:
|
||||||
resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==}
|
resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==}
|
||||||
engines: {node: '>= 0.8.0'}
|
engines: {node: '>= 0.8.0'}
|
||||||
@@ -2733,7 +3094,6 @@ packages:
|
|||||||
|
|
||||||
/util-deprecate@1.0.2:
|
/util-deprecate@1.0.2:
|
||||||
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
|
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/utils-merge@1.0.1:
|
/utils-merge@1.0.1:
|
||||||
resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
|
resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
|
||||||
@@ -2868,7 +3228,6 @@ packages:
|
|||||||
|
|
||||||
/wrappy@1.0.2:
|
/wrappy@1.0.2:
|
||||||
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/ws@8.13.0:
|
/ws@8.13.0:
|
||||||
resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==}
|
resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==}
|
||||||
@@ -2892,6 +3251,10 @@ packages:
|
|||||||
resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
|
resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/yallist@4.0.0:
|
||||||
|
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/yaml@1.10.2:
|
/yaml@1.10.2:
|
||||||
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
|
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
|
||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
},
|
},
|
||||||
"package": {
|
"package": {
|
||||||
"productName": "RisuAI",
|
"productName": "RisuAI",
|
||||||
"version": "1.23.1"
|
"version": "1.24.2"
|
||||||
},
|
},
|
||||||
"tauri": {
|
"tauri": {
|
||||||
"allowlist": {
|
"allowlist": {
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ export const languageChinese = {
|
|||||||
experimental: "这是一个实验性功能。可能不稳定。",
|
experimental: "这是一个实验性功能。可能不稳定。",
|
||||||
oogaboogaURL: "如果你的WebUI支持api的旧版本,你的url应该看起来*像https:.../run/textgen*\n\n"
|
oogaboogaURL: "如果你的WebUI支持api的旧版本,你的url应该看起来*像https:.../run/textgen*\n\n"
|
||||||
+ "如果你的WebUI支持api的新版本,你的url应该看起来像*https://.../api/v1/generate*并且使用api服务器作为主机,并在参数中添加 --api。",
|
+ "如果你的WebUI支持api的新版本,你的url应该看起来像*https://.../api/v1/generate*并且使用api服务器作为主机,并在参数中添加 --api。",
|
||||||
exampleMessage: "影响角色输出的示例对话。它不会永久性地使用令牌。"
|
exampleMessage: "影响角色输出的示例对话。它不会永久性地使用token。"
|
||||||
+ "\n\n对话的示例格式:"
|
+ "\n\n对话的示例格式:"
|
||||||
+ "\n\n```\n<START>\n{{user}}: hi\n{{char}}: hello\n<START>\n{{user}}: hi\nHaruhi: hello\n```"
|
+ "\n\n```\n<START>\n{{user}}: hi\n{{char}}: hello\n<START>\n{{user}}: hi\nHaruhi: hello\n```"
|
||||||
+ "\n\n```<START>```标记新对话的开始。",
|
+ "\n\n```<START>```标记新对话的开始。",
|
||||||
@@ -81,9 +81,9 @@ export const languageChinese = {
|
|||||||
utilityBot: "激活后,它会忽略主提示词。\n\n**不建议使用此选项。改为修改系统提示词。**",
|
utilityBot: "激活后,它会忽略主提示词。\n\n**不建议使用此选项。改为修改系统提示词。**",
|
||||||
loreSelective: "如果已切换选择模式,则激活密钥和次级密钥都应有匹配项才能激活lorebook。",
|
loreSelective: "如果已切换选择模式,则激活密钥和次级密钥都应有匹配项才能激活lorebook。",
|
||||||
loreRandomActivation: "如果启用了使用概率条件,如果lorebook的其他条件都已满足,每次发送聊天时,lorebook将以“概率”设置的概率被激活。",
|
loreRandomActivation: "如果启用了使用概率条件,如果lorebook的其他条件都已满足,每次发送聊天时,lorebook将以“概率”设置的概率被激活。",
|
||||||
additionalAssets: "在你的聊天中显示的额外资产。 \n\n - 使用 `{{raw::<asset name>}}` 作为路径。\n - 使用 `{{img::<asset name>}}` 作为图片",
|
additionalAssets: "在你的聊天中显示的额外资源。 \n\n - 使用 `{{raw::<asset name>}}` 作为路径。\n - 使用 `{{img::<asset name>}}` 作为图片\n - 使用 `{{video::<asset name>}}` 作为视频\n - 使用 `{{audio::<asset name>}}` 作为音频 (建议放在Background HTML中)",
|
||||||
superMemory: "SuperMemory 通过给 AI 提供总结数据使你的角色记忆更多信息。\n\n"
|
superMemory: "SuperMemory 通过给 AI 提供总结数据使你的角色记忆更多信息。\n\n"
|
||||||
+ "SuperMemory 模型是一个总结文本的模型。推荐使用达芬奇,除非是具有超过2000个令牌的高度总结能力的未过滤模型,否则不推荐使用辅助模型。\n\n"
|
+ "SuperMemory 模型是一个总结文本的模型。推荐使用Davinci,除非是具有超过2000个token数的高度总结能力的成人模型,否则不推荐使用辅助模型。\n\n"
|
||||||
+ "SuperMemory 提示词决定了应发送什么提示词进行总结。如果你留空,它将使用默认提示词。建议留空。\n\n"
|
+ "SuperMemory 提示词决定了应发送什么提示词进行总结。如果你留空,它将使用默认提示词。建议留空。\n\n"
|
||||||
+ "在所有设置都完成后,你可以在角色的设置中启用它。",
|
+ "在所有设置都完成后,你可以在角色的设置中启用它。",
|
||||||
replaceGlobalNote: "如果不为空,将当前的全局笔记替换为此。",
|
replaceGlobalNote: "如果不为空,将当前的全局笔记替换为此。",
|
||||||
@@ -97,8 +97,8 @@ export const languageChinese = {
|
|||||||
apiKeyhelp: "你可以从以下链接获取api key:",
|
apiKeyhelp: "你可以从以下链接获取api key:",
|
||||||
setupSelfHelp: "在欢迎屏幕结束后,在设置中自行设置。",
|
setupSelfHelp: "在欢迎屏幕结束后,在设置中自行设置。",
|
||||||
theme: "选择你的主题",
|
theme: "选择你的主题",
|
||||||
themeDescWifulike: "不适合手机",
|
themeDescWifulike: "不适配手机",
|
||||||
themeDescWifuCut: "适合手机",
|
themeDescWifuCut: "适配手机",
|
||||||
texttheme: "选择你的文本颜色",
|
texttheme: "选择你的文本颜色",
|
||||||
inputName: "最后,输入你的昵称。"
|
inputName: "最后,输入你的昵称。"
|
||||||
},
|
},
|
||||||
@@ -113,7 +113,7 @@ export const languageChinese = {
|
|||||||
jailbreakPrompt: "NSFW(成人模式)/越狱提示词",
|
jailbreakPrompt: "NSFW(成人模式)/越狱提示词",
|
||||||
globalNote: "全局注释",
|
globalNote: "全局注释",
|
||||||
autoSuggest: "自动建议",
|
autoSuggest: "自动建议",
|
||||||
tokens: '令牌',
|
tokens: 'token数',
|
||||||
maxContextSize: '最大上下文大小',
|
maxContextSize: '最大上下文大小',
|
||||||
maxResponseSize: '最大响应大小',
|
maxResponseSize: '最大响应大小',
|
||||||
temperature: '温度',
|
temperature: '温度',
|
||||||
@@ -125,7 +125,7 @@ export const languageChinese = {
|
|||||||
authorNote: "作者注释",
|
authorNote: "作者注释",
|
||||||
firstMessage: '第一条消息',
|
firstMessage: '第一条消息',
|
||||||
description: '描述',
|
description: '描述',
|
||||||
jailbreakToggle: '切换NSFW(成人模式)/越狱',
|
jailbreakToggle: '开启NSFW(成人模式)/越狱',
|
||||||
charIcon: "角色图标",
|
charIcon: "角色图标",
|
||||||
characterDisplay: "角色展示",
|
characterDisplay: "角色展示",
|
||||||
viewScreen: '额外角色屏幕',
|
viewScreen: '额外角色屏幕',
|
||||||
@@ -139,7 +139,7 @@ export const languageChinese = {
|
|||||||
value: "值",
|
value: "值",
|
||||||
reroll: '重新生成',
|
reroll: '重新生成',
|
||||||
chatList: '聊天列表',
|
chatList: '聊天列表',
|
||||||
removeChat: "移除此消息?",
|
removeChat: "删除此消息?",
|
||||||
loreBook: 'lorebook',
|
loreBook: 'lorebook',
|
||||||
character: "角色",
|
character: "角色",
|
||||||
Chat: "聊天",
|
Chat: "聊天",
|
||||||
@@ -147,24 +147,24 @@ export const languageChinese = {
|
|||||||
group: "群组",
|
group: "群组",
|
||||||
groupLoreInfo: "群组lorebook应用于群组中的所有聊天。",
|
groupLoreInfo: "群组lorebook应用于群组中的所有聊天。",
|
||||||
localLoreInfo: "聊天lorebook仅应用于当前聊天。",
|
localLoreInfo: "聊天lorebook仅应用于当前聊天。",
|
||||||
removeConfirm: "你真的想移除:",
|
removeConfirm: "你真的想删除:",
|
||||||
removeConfirm2: "你真的真的想移除:",
|
removeConfirm2: "你真的真的想删除:",
|
||||||
exportConfirm: "你想要导出这个吗?",
|
exportConfirm: "你想要导出这个吗?",
|
||||||
insertOrder: '插入顺序',
|
insertOrder: '插入顺序',
|
||||||
activationKeys: '激活键',
|
activationKeys: '激活键',
|
||||||
activationKeysInfo: '用逗号分隔',
|
activationKeysInfo: '用逗号分隔',
|
||||||
prompt: '提示词',
|
prompt: '提示词',
|
||||||
loreBookDepth: "lorebook搜索深度",
|
loreBookDepth: "lorebook搜索深度",
|
||||||
loreBookToken: "lorebook最大令牌",
|
loreBookToken: "lorebook最大token数",
|
||||||
removeCharacter: "移除角色",
|
removeCharacter: "删除角色",
|
||||||
removeGroup: "移除群组",
|
removeGroup: "删除群组",
|
||||||
exportCharacter: "导出角色",
|
exportCharacter: "导出角色",
|
||||||
userSetting: "用户设置",
|
userSetting: "用户设置",
|
||||||
username: '你的名字',
|
username: '你的名字',
|
||||||
userIcon: "你的图标",
|
userIcon: "你的图标",
|
||||||
successExport: "成功导出并下载到你的下载目录",
|
successExport: "成功导出并下载到你的下载目录",
|
||||||
successImport: "成功导入",
|
successImport: "成功导入",
|
||||||
importedCharacter: '导入角色',
|
importedCharacter: '已导入角色',
|
||||||
alwaysActive: "始终活跃",
|
alwaysActive: "始终活跃",
|
||||||
additionalPrompt: "额外的提示词",
|
additionalPrompt: "额外的提示词",
|
||||||
descriptionPrefix: "描述前缀",
|
descriptionPrefix: "描述前缀",
|
||||||
@@ -223,8 +223,8 @@ export const languageChinese = {
|
|||||||
currentImageGeneration: "当前图像生成数据",
|
currentImageGeneration: "当前图像生成数据",
|
||||||
promptPreprocess: "使用提示词预处理",
|
promptPreprocess: "使用提示词预处理",
|
||||||
SwipeRegenerate: "使用滑动重新生成",
|
SwipeRegenerate: "使用滑动重新生成",
|
||||||
instantRemove: "当消息被移除时,立即移除随后的消息",
|
instantRemove: "当消息被删除时,立即删除随后的消息",
|
||||||
instantRemoveConfirm: "你想移除单条消息吗?如果你选择否,那么随后的消息也将被移除。",
|
instantRemoveConfirm: "你想删除单条消息吗?如果你选择否,那么随后的消息也将被删除。",
|
||||||
textColor: "文本颜色",
|
textColor: "文本颜色",
|
||||||
classicRisu: "经典的Risu",
|
classicRisu: "经典的Risu",
|
||||||
highcontrast: "高对比度",
|
highcontrast: "高对比度",
|
||||||
@@ -233,7 +233,7 @@ export const languageChinese = {
|
|||||||
utilityBot: "实用机器人",
|
utilityBot: "实用机器人",
|
||||||
ShowLog: "显示请求日志",
|
ShowLog: "显示请求日志",
|
||||||
waifuWidth2: "虚拟角色大小",
|
waifuWidth2: "虚拟角色大小",
|
||||||
sayNothing: "当没有输入字符串时,输入'什么都不说'",
|
sayNothing: "当没有输入字符串时,输入'Say Nothing'",
|
||||||
regexScript: "正则表达式脚本",
|
regexScript: "正则表达式脚本",
|
||||||
type: "类型", editInput: "修改输入",
|
type: "类型", editInput: "修改输入",
|
||||||
editOutput: "修改输出",
|
editOutput: "修改输出",
|
||||||
@@ -260,16 +260,16 @@ export const languageChinese = {
|
|||||||
creator: "创作者",
|
creator: "创作者",
|
||||||
CharVersion: "角色版本",
|
CharVersion: "角色版本",
|
||||||
Speech: "语音",
|
Speech: "语音",
|
||||||
ToggleSuperMemory: "切换超级记忆",
|
ToggleSuperMemory: "开启超级记忆",
|
||||||
SuperMemory: "超级记忆",
|
SuperMemory: "超级记忆",
|
||||||
useExperimental: "启用实验性功能",
|
useExperimental: "启用实验性功能",
|
||||||
showMemoryLimit: "显示记忆限制",
|
showMemoryLimit: "显示记忆限制",
|
||||||
roundIcons: "圆形图标",
|
roundIcons: "圆形图标",
|
||||||
streaming: "流媒体",
|
streaming: "流式传输(打字机效果)",
|
||||||
chatBot: '聊天机器人',
|
chatBot: '聊天机器人',
|
||||||
otherBots: '其他机器人',
|
otherBots: '其他机器人',
|
||||||
user: "用户",
|
user: "用户",
|
||||||
additionalAssets: "额外资产",
|
additionalAssets: "额外资源",
|
||||||
editDisplay: "修改显示",
|
editDisplay: "修改显示",
|
||||||
community: "社区",
|
community: "社区",
|
||||||
textBackgrounds: "自定义文本屏幕颜色",
|
textBackgrounds: "自定义文本屏幕颜色",
|
||||||
@@ -278,7 +278,7 @@ export const languageChinese = {
|
|||||||
textScreenBorder: "文本屏幕边框",
|
textScreenBorder: "文本屏幕边框",
|
||||||
ttsReadOnlyQuoted: "仅朗读引用",
|
ttsReadOnlyQuoted: "仅朗读引用",
|
||||||
ttsStop: "停止TTS",
|
ttsStop: "停止TTS",
|
||||||
askRemoval: "询问移除",
|
askRemoval: "删除消息前确认",
|
||||||
replaceGlobalNote: "替换全局备注",
|
replaceGlobalNote: "替换全局备注",
|
||||||
charLoreBook: '角色lorebook',
|
charLoreBook: '角色lorebook',
|
||||||
globalLoreBook: '全局lorebook',
|
globalLoreBook: '全局lorebook',
|
||||||
@@ -288,17 +288,24 @@ export const languageChinese = {
|
|||||||
clickToEdit: "点击文本以编辑",
|
clickToEdit: "点击文本以编辑",
|
||||||
setNodePassword: "设置你的安全密码",
|
setNodePassword: "设置你的安全密码",
|
||||||
inputNodePassword: "输入你的密码。如果你记不住,删除服务器文件中的save/__password.txt,并重启服务器。",
|
inputNodePassword: "输入你的密码。如果你记不住,删除服务器文件中的save/__password.txt,并重启服务器。",
|
||||||
simple: "简单",
|
simple: "简易",
|
||||||
advanced: "高级",
|
advanced: "高级",
|
||||||
askReRollAutoSuggestions: "重新生成自动建议",
|
askReRollAutoSuggestions: "重新生成自动建议",
|
||||||
creatingSuggestions: "正在生成建议...",
|
creatingSuggestions: "正在生成建议...",
|
||||||
orderByOrder: "按顺序交谈",
|
orderByOrder: "按顺序交谈",
|
||||||
removeFromGroup: "你真的要将{{char}}从群组中移除吗?",
|
removeFromGroup: "你真的要将{{char}}从群组中删除吗?",
|
||||||
talkness: "健谈程度",
|
talkness: "健谈程度",
|
||||||
active: "活跃",
|
active: "活跃",
|
||||||
loreRandomActivation: "使用概率条件",
|
loreRandomActivation: "使用概率条件",
|
||||||
activationProbability: "概率",
|
activationProbability: "概率",
|
||||||
shareCloud: "分享到RisuRealm",
|
shareCloud: "分享到RisuRealm",
|
||||||
hub: "RisuRealm",
|
hub: "RisuRealm",
|
||||||
tags: "标签"
|
tags: "标签",
|
||||||
|
copied: "已复制",
|
||||||
|
useChatCopy: "使用聊天复制",
|
||||||
|
autoTranslateInput: "使用自动翻译输入",
|
||||||
|
enterMessageForTranslateToEnglish: "输入要翻译为英语的消息",
|
||||||
|
recent: '最新',
|
||||||
|
downloads: '下载量',
|
||||||
|
trending: "热度",
|
||||||
}
|
}
|
||||||
@@ -80,12 +80,15 @@ export const languageEnglish = {
|
|||||||
utilityBot: "When activated, it ignores main prompt. \n\n**It is not recommended to use this option. Modifiy system prompt instead.**",
|
utilityBot: "When activated, it ignores main prompt. \n\n**It is not recommended to use this option. Modifiy system prompt instead.**",
|
||||||
loreSelective: "If Selective mode is toggled, both Activation Key and Secondary key should have a match to activate the lore.",
|
loreSelective: "If Selective mode is toggled, both Activation Key and Secondary key should have a match to activate the lore.",
|
||||||
loreRandomActivation: "If Use Probability Condition is abled, if the lore's other conditions are all met, the lore will be activated with a set probability which is set by 'Probability' each time a chat is sent.",
|
loreRandomActivation: "If Use Probability Condition is abled, if the lore's other conditions are all met, the lore will be activated with a set probability which is set by 'Probability' each time a chat is sent.",
|
||||||
additionalAssets: "Additional assets to display in your chat. \n\n - use `{{raw::<asset name>}}` to use as path.\n - use `{{img::<asset name>}}` to use as image",
|
additionalAssets: "Additional assets to display in your chat. \n\n - use `{{raw::<asset name>}}` to use as path.\n - use `{{img::<asset name>}}` to use as image\n - use `{{video::<asset name>}}` to use as video\n - use `{{audio::<asset name>}}` to use as audio\n - recommended to put in Background HTML",
|
||||||
superMemory: "SuperMemory makes your character memorize more by giving summarized data to AI.\n\n"
|
superMemory: "SuperMemory makes your character memorize more by giving summarized data to AI.\n\n"
|
||||||
+ "SuperMemory model is a model that summarizes that text. davinci is recommended, and Auxiliary models are not recommended unless it is an unfiltered model with over 2000 tokens with great summarizing skill.\n\n"
|
+ "SuperMemory model is a model that summarizes that text. davinci is recommended, and Auxiliary models are not recommended unless it is an unfiltered model with over 2000 tokens with great summarizing skill.\n\n"
|
||||||
+ "SuperMemory Prompt decides what prompt should be sent to summarize. if you leave it blank, it will use the default prompt. leaving blank is recommended.\n\n"
|
+ "SuperMemory Prompt decides what prompt should be sent to summarize. if you leave it blank, it will use the default prompt. leaving blank is recommended.\n\n"
|
||||||
+ "After it is all setup, you can able it in the setting of a character.",
|
+ "After it is all setup, you can able it in the setting of a character.",
|
||||||
replaceGlobalNote: "If its not blank, it replaces current global note to this."
|
replaceGlobalNote: "If its not blank, it replaces current global note to this.",
|
||||||
|
backgroundHTML: "A Markdown/HTML Data that would be injected to the background of chat screen.\n\n you can also use additional assets. for example, you can use `{{audio::<asset name}}` for background music."
|
||||||
|
+ "\n\n Additionaly, you can use these with additional assets:"
|
||||||
|
+ "\n - `{{bg::<asset name>}}`: inject the background as asset"
|
||||||
},
|
},
|
||||||
setup: {
|
setup: {
|
||||||
chooseProvider: "Choose AI Provider",
|
chooseProvider: "Choose AI Provider",
|
||||||
@@ -300,5 +303,14 @@ export const languageEnglish = {
|
|||||||
activationProbability: "Probability",
|
activationProbability: "Probability",
|
||||||
shareCloud: "Share to RisuRealm",
|
shareCloud: "Share to RisuRealm",
|
||||||
hub: "RisuRealm",
|
hub: "RisuRealm",
|
||||||
tags: "Tags"
|
tags: "Tags",
|
||||||
|
backgroundHTML: "Background Embedding",
|
||||||
|
copied: "Copied",
|
||||||
|
useChatCopy: "Use Chat Message Copy",
|
||||||
|
autoTranslateInput: "Auto Translate Input",
|
||||||
|
enterMessageForTranslateToEnglish: "Enter Message for Translate to English",
|
||||||
|
recent: 'Recent',
|
||||||
|
downloads: 'Downloads',
|
||||||
|
trending: "Trending"
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -275,5 +275,10 @@ export const languageKorean = {
|
|||||||
talkness: "대화량",
|
talkness: "대화량",
|
||||||
active: "활성화",
|
active: "활성화",
|
||||||
loreRandomActivation: "확률 조건 사용",
|
loreRandomActivation: "확률 조건 사용",
|
||||||
activationProbability: "발동 확률"
|
activationProbability: "발동 확률",
|
||||||
|
backgroundHTML: "백그라운드 임베딩",
|
||||||
|
copied: "복사됨",
|
||||||
|
useChatCopy: "채팅 메시지 복사 사용",
|
||||||
|
autoTranslateInput: "입력 자동 번역",
|
||||||
|
enterMessageForTranslateToEnglish: "영어로 번역할 메시지를 입력해주세요",
|
||||||
}
|
}
|
||||||
50
src/lib/ChatScreens/BackgroundDom.svelte
Normal file
50
src/lib/ChatScreens/BackgroundDom.svelte
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import { ParseMarkdown } from "src/ts/parser";
|
||||||
|
import { DataBase, type Database, type character, type groupChat } from "src/ts/storage/database";
|
||||||
|
import { selectedCharID } from "src/ts/stores";
|
||||||
|
import { onDestroy } from "svelte";
|
||||||
|
|
||||||
|
let backgroundHTML = ''
|
||||||
|
let lastdb:Database
|
||||||
|
let currentChar:character|groupChat
|
||||||
|
let selectedId = 0
|
||||||
|
|
||||||
|
function checkUpdate(){
|
||||||
|
if(selectedId > 0 && lastdb){
|
||||||
|
if(lastdb.characters[selectedId] && lastdb.characters[selectedId].backgroundHTML !== backgroundHTML){
|
||||||
|
backgroundHTML = lastdb.characters[selectedId].backgroundHTML
|
||||||
|
currentChar = lastdb.characters[selectedId]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if(backgroundHTML !== ''){
|
||||||
|
backgroundHTML = ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const unsubDatabase = DataBase.subscribe(v => {
|
||||||
|
lastdb = v
|
||||||
|
checkUpdate()
|
||||||
|
})
|
||||||
|
|
||||||
|
const unsubID = selectedCharID.subscribe(v => {
|
||||||
|
selectedId = v
|
||||||
|
checkUpdate()
|
||||||
|
})
|
||||||
|
|
||||||
|
onDestroy(() => {
|
||||||
|
unsubDatabase()
|
||||||
|
unsubID()
|
||||||
|
})
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
{#if backgroundHTML}
|
||||||
|
<div class="absolute top-0 left-0 w-full h-full">
|
||||||
|
{#await ParseMarkdown(backgroundHTML, currentChar, 'back') then md}
|
||||||
|
{@html md}
|
||||||
|
{/await}
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { ArrowLeft, ArrowRight, EditIcon, LanguagesIcon, RefreshCcwIcon, TrashIcon } from "lucide-svelte";
|
import { ArrowLeft, ArrowRight, EditIcon, LanguagesIcon, RefreshCcwIcon, TrashIcon, CopyIcon } from "lucide-svelte";
|
||||||
import { ParseMarkdown } from "../../ts/parser";
|
import { ParseMarkdown } from "../../ts/parser";
|
||||||
import AutoresizeArea from "./AutoresizeArea.svelte";
|
import AutoresizeArea from "./AutoresizeArea.svelte";
|
||||||
import { alertConfirm } from "../../ts/alert";
|
import { alertConfirm } from "../../ts/alert";
|
||||||
@@ -19,6 +19,7 @@
|
|||||||
export let character:character|groupChat|null = null
|
export let character:character|groupChat|null = null
|
||||||
let translating = false
|
let translating = false
|
||||||
let editMode = false
|
let editMode = false
|
||||||
|
let statusMessage:string = ''
|
||||||
export let altGreeting = false
|
export let altGreeting = false
|
||||||
|
|
||||||
let msgDisplay = ''
|
let msgDisplay = ''
|
||||||
@@ -65,6 +66,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const setStatusMessage = (message:string, timeout:number = 0)=>{
|
||||||
|
statusMessage = message
|
||||||
|
if(timeout === 0) return
|
||||||
|
setTimeout(() => {
|
||||||
|
statusMessage = ''
|
||||||
|
}, timeout)
|
||||||
|
}
|
||||||
|
|
||||||
$: displaya(message)
|
$: displaya(message)
|
||||||
</script>
|
</script>
|
||||||
<div class="flex max-w-full justify-center" class:bgc={isLastMemory}>
|
<div class="flex max-w-full justify-center" class:bgc={isLastMemory}>
|
||||||
@@ -80,8 +89,18 @@
|
|||||||
<div class="flexium items-center chat">
|
<div class="flexium items-center chat">
|
||||||
<span class="chat text-xl unmargin">{name}</span>
|
<span class="chat text-xl unmargin">{name}</span>
|
||||||
<div class="flex-grow flex items-center justify-end text-gray-500">
|
<div class="flex-grow flex items-center justify-end text-gray-500">
|
||||||
|
<span class="text-xs">{statusMessage}</span>
|
||||||
|
{#if $DataBase.useChatCopy}
|
||||||
|
<button class="ml-2 hover:text-green-500 transition-colors" on:click={()=>{
|
||||||
|
window.navigator.clipboard.writeText(msgDisplay).then(() => {
|
||||||
|
setStatusMessage(language.copied)
|
||||||
|
})
|
||||||
|
}}>
|
||||||
|
<CopyIcon size={20}/>
|
||||||
|
</button>
|
||||||
|
{/if}
|
||||||
{#if idx > -1}
|
{#if idx > -1}
|
||||||
<button class={"hover:text-green-500 transition-colors "+(editMode?'text-green-400':'')} on:click={() => {
|
<button class={"ml-2 hover:text-green-500 transition-colors "+(editMode?'text-green-400':'')} on:click={() => {
|
||||||
if(!editMode){
|
if(!editMode){
|
||||||
editMode = true
|
editMode = true
|
||||||
msgTranslated = ""
|
msgTranslated = ""
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
import defaultWallpaper from '../../etc/bg.jpg'
|
import defaultWallpaper from '../../etc/bg.jpg'
|
||||||
import ChatList from "../Others/ChatList.svelte";
|
import ChatList from "../Others/ChatList.svelte";
|
||||||
import TransitionImage from "./TransitionImage.svelte";
|
import TransitionImage from "./TransitionImage.svelte";
|
||||||
|
import BackgroundDom from "./BackgroundDom.svelte";
|
||||||
let openChatList = false
|
let openChatList = false
|
||||||
|
|
||||||
const wallPaper = `background: url(${defaultWallpaper})`
|
const wallPaper = `background: url(${defaultWallpaper})`
|
||||||
@@ -26,16 +27,19 @@
|
|||||||
})()
|
})()
|
||||||
</script>
|
</script>
|
||||||
{#if $DataBase.theme === ''}
|
{#if $DataBase.theme === ''}
|
||||||
<div class="flex-grow h-full min-w-0" style={bgImg}>
|
<div class="flex-grow h-full min-w-0 relative" style={bgImg}>
|
||||||
|
|
||||||
{#if $selectedCharID >= 0}
|
{#if $selectedCharID >= 0}
|
||||||
{#if $DataBase.characters[$selectedCharID].viewScreen !== 'none'}
|
{#if $DataBase.characters[$selectedCharID].viewScreen !== 'none'}
|
||||||
<ResizeBox />
|
<ResizeBox />
|
||||||
{/if}
|
{/if}
|
||||||
{/if}
|
{/if}
|
||||||
|
<BackgroundDom />
|
||||||
<DefaultChatScreen customStyle={bgImg.length > 2 ? `${externalStyles}`: ''} bind:openChatList/>
|
<DefaultChatScreen customStyle={bgImg.length > 2 ? `${externalStyles}`: ''} bind:openChatList/>
|
||||||
</div>
|
</div>
|
||||||
{:else if $DataBase.theme === 'waifu'}
|
{:else if $DataBase.theme === 'waifu'}
|
||||||
<div class="flex-grow h-full flex justify-center" style="max-width:calc({$sideBarStore ? $SizeStore.w - 400 : $SizeStore.w}px);{bgImg.length < 4 ? wallPaper : bgImg}">
|
<div class="flex-grow h-full flex justify-center relative" style="max-width:calc({$sideBarStore ? $SizeStore.w - 400 : $SizeStore.w}px);{bgImg.length < 4 ? wallPaper : bgImg}">
|
||||||
|
<BackgroundDom />
|
||||||
{#if $selectedCharID >= 0}
|
{#if $selectedCharID >= 0}
|
||||||
{#if $DataBase.characters[$selectedCharID].viewScreen !== 'none'}
|
{#if $DataBase.characters[$selectedCharID].viewScreen !== 'none'}
|
||||||
<div class="h-full mr-10 flex justify-end halfw" style:width="{42 * ($DataBase.waifuWidth2 / 100)}rem">
|
<div class="h-full mr-10 flex justify-end halfw" style:width="{42 * ($DataBase.waifuWidth2 / 100)}rem">
|
||||||
@@ -49,6 +53,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{:else if $DataBase.theme === 'waifuMobile'}
|
{:else if $DataBase.theme === 'waifuMobile'}
|
||||||
<div class="flex-grow h-full relative" style={bgImg.length < 4 ? wallPaper : bgImg}>
|
<div class="flex-grow h-full relative" style={bgImg.length < 4 ? wallPaper : bgImg}>
|
||||||
|
<BackgroundDom />
|
||||||
<div class="w-full h-1/3 absolute z-10 bottom-0 left-0">
|
<div class="w-full h-1/3 absolute z-10 bottom-0 left-0">
|
||||||
<DefaultChatScreen customStyle={`${externalStyles}backdrop-filter: blur(4px);`} bind:openChatList/>
|
<DefaultChatScreen customStyle={`${externalStyles}backdrop-filter: blur(4px);`} bind:openChatList/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -16,8 +16,10 @@
|
|||||||
import CreatorQuote from "./CreatorQuote.svelte";
|
import CreatorQuote from "./CreatorQuote.svelte";
|
||||||
import { stopTTS } from "src/ts/process/tts";
|
import { stopTTS } from "src/ts/process/tts";
|
||||||
import MainMenu from '../UI/MainMenu.svelte';
|
import MainMenu from '../UI/MainMenu.svelte';
|
||||||
|
import Help from '../Others/Help.svelte';
|
||||||
|
|
||||||
let messageInput = ''
|
let messageInput:string = ''
|
||||||
|
let messageInputTranslate:string = ''
|
||||||
let openMenu = false
|
let openMenu = false
|
||||||
export let openChatList = false
|
export let openChatList = false
|
||||||
let loadPages = 30
|
let loadPages = 30
|
||||||
@@ -26,6 +28,7 @@
|
|||||||
let rerollid = -1
|
let rerollid = -1
|
||||||
let lastCharId = -1
|
let lastCharId = -1
|
||||||
let doingChatInputTranslate = false
|
let doingChatInputTranslate = false
|
||||||
|
|
||||||
async function send() {
|
async function send() {
|
||||||
let selectedChar = $selectedCharID
|
let selectedChar = $selectedCharID
|
||||||
console.log('send')
|
console.log('send')
|
||||||
@@ -67,10 +70,11 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
messageInput = ''
|
messageInput = ''
|
||||||
|
messageInputTranslate = ''
|
||||||
$DataBase.characters[selectedChar].chats[$DataBase.characters[selectedChar].chatPage].message = cha
|
$DataBase.characters[selectedChar].chats[$DataBase.characters[selectedChar].chatPage].message = cha
|
||||||
rerolls = []
|
rerolls = []
|
||||||
await sleep(10)
|
await sleep(10)
|
||||||
updateInputSize()
|
updateInputSizeAll()
|
||||||
await sendChatMain()
|
await sendChatMain()
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -170,7 +174,21 @@
|
|||||||
export let customStyle = ''
|
export let customStyle = ''
|
||||||
let inputHeight = "44px"
|
let inputHeight = "44px"
|
||||||
let inputEle:HTMLTextAreaElement
|
let inputEle:HTMLTextAreaElement
|
||||||
|
let inputTranslateHeight = "44px"
|
||||||
|
let inputTranslateEle:HTMLTextAreaElement
|
||||||
|
|
||||||
|
function updateInputSizeAll() {
|
||||||
|
updateInputSize()
|
||||||
|
updateInputTranslateSize()
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateInputTranslateSize() {
|
||||||
|
if(inputTranslateEle) {
|
||||||
|
inputTranslateEle.style.height = "0";
|
||||||
|
inputTranslateHeight = (inputTranslateEle.scrollHeight) + "px";
|
||||||
|
inputTranslateEle.style.height = inputTranslateHeight
|
||||||
|
}
|
||||||
|
}
|
||||||
function updateInputSize() {
|
function updateInputSize() {
|
||||||
if(inputEle){
|
if(inputEle){
|
||||||
inputEle.style.height = "0";
|
inputEle.style.height = "0";
|
||||||
@@ -179,7 +197,26 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$: updateInputSize()
|
$: updateInputSizeAll()
|
||||||
|
|
||||||
|
function updateInputTransateMessage(reverse: boolean) {
|
||||||
|
if(reverse && messageInputTranslate === '') {
|
||||||
|
messageInput = ''
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if(!reverse && messageInput === '') {
|
||||||
|
messageInputTranslate = ''
|
||||||
|
return
|
||||||
|
}
|
||||||
|
translate(reverse ? messageInputTranslate : messageInput, reverse).then((translatedMessage) => {
|
||||||
|
if(translatedMessage){
|
||||||
|
if(reverse)
|
||||||
|
messageInput = translatedMessage
|
||||||
|
else
|
||||||
|
messageInputTranslate = translatedMessage
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
||||||
<div class="w-full h-full" style={customStyle} on:click={() => {
|
<div class="w-full h-full" style={customStyle} on:click={() => {
|
||||||
@@ -189,7 +226,7 @@
|
|||||||
<MainMenu />
|
<MainMenu />
|
||||||
{:else}
|
{:else}
|
||||||
<div class="h-full w-full flex flex-col-reverse overflow-y-auto relative" on:scroll={(e) => {
|
<div class="h-full w-full flex flex-col-reverse overflow-y-auto relative" on:scroll={(e) => {
|
||||||
//@ts-ignore
|
//@ts-ignore
|
||||||
const scrolled = (e.target.scrollHeight - e.target.clientHeight + e.target.scrollTop)
|
const scrolled = (e.target.scrollHeight - e.target.clientHeight + e.target.scrollTop)
|
||||||
if(scrolled < 100 && $DataBase.characters[$selectedCharID].chats[$DataBase.characters[$selectedCharID].chatPage].message.length > loadPages){
|
if(scrolled < 100 && $DataBase.characters[$selectedCharID].chats[$DataBase.characters[$selectedCharID].chatPage].message.length > loadPages){
|
||||||
loadPages += 30
|
loadPages += 30
|
||||||
@@ -200,7 +237,7 @@
|
|||||||
bind:value={messageInput}
|
bind:value={messageInput}
|
||||||
bind:this={inputEle}
|
bind:this={inputEle}
|
||||||
on:keydown={(e) => {
|
on:keydown={(e) => {
|
||||||
if(e.key.toLocaleLowerCase() === "enter" && (!e.shiftKey)){
|
if(e.key.toLocaleLowerCase() === "enter" && (!e.shiftKey) && !e.isComposing){
|
||||||
if($DataBase.sendWithEnter){
|
if($DataBase.sendWithEnter){
|
||||||
send()
|
send()
|
||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
@@ -211,7 +248,7 @@
|
|||||||
e.preventDefault()
|
e.preventDefault()
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
on:input={updateInputSize}
|
on:input={()=>{updateInputSizeAll();updateInputTransateMessage(false)}}
|
||||||
style:height={inputHeight}
|
style:height={inputHeight}
|
||||||
/>
|
/>
|
||||||
|
|
||||||
@@ -234,6 +271,33 @@
|
|||||||
class="mr-2 bg-gray-500 flex justify-center items-center text-white w-12 h-12 rounded-md hover:bg-green-500 transition-colors"><MenuIcon />
|
class="mr-2 bg-gray-500 flex justify-center items-center text-white w-12 h-12 rounded-md hover:bg-green-500 transition-colors"><MenuIcon />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{#if $DataBase.useAutoTranslateInput && $DataBase.useExperimental}
|
||||||
|
<div class="flex items-center mt-2 mb-2 w-full">
|
||||||
|
<label for='messageInputTranslate' class="text-neutral-200 ml-4">
|
||||||
|
<LanguagesIcon />
|
||||||
|
</label>
|
||||||
|
<textarea id = 'messageInputTranslate' class="text-neutral-200 p-2 min-w-0 bg-transparent input-text text-xl flex-grow ml-4 mr-2 border-gray-700 resize-none focus:bg-selected overflow-y-hidden overflow-x-hidden max-w-full"
|
||||||
|
bind:value={messageInputTranslate}
|
||||||
|
bind:this={inputTranslateEle}
|
||||||
|
on:keydown={(e) => {
|
||||||
|
if(e.key.toLocaleLowerCase() === "enter" && (!e.shiftKey)){
|
||||||
|
if($DataBase.sendWithEnter){
|
||||||
|
send()
|
||||||
|
e.preventDefault()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(e.key.toLocaleLowerCase() === "m" && (e.ctrlKey)){
|
||||||
|
reroll()
|
||||||
|
e.preventDefault()
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
on:input={()=>{updateInputSizeAll();updateInputTransateMessage(true)}}
|
||||||
|
placeholder={language.enterMessageForTranslateToEnglish}
|
||||||
|
style:height={inputTranslateHeight}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
{#if $DataBase.useAutoSuggestions}
|
{#if $DataBase.useAutoSuggestions}
|
||||||
<Suggestion messageInput={(msg)=>messageInput=msg} {send}/>
|
<Suggestion messageInput={(msg)=>messageInput=msg} {send}/>
|
||||||
{/if}
|
{/if}
|
||||||
@@ -362,7 +426,18 @@
|
|||||||
<LanguagesIcon />
|
<LanguagesIcon />
|
||||||
<span class="ml-2">{language.translateInput}</span>
|
<span class="ml-2">{language.translateInput}</span>
|
||||||
</div>
|
</div>
|
||||||
|
{#if $DataBase.useExperimental}
|
||||||
|
<div class={"flex items-center cursor-pointer "+ ($DataBase.useAutoTranslateInput ? 'text-green-500':'lg:hover:text-green-500')} on:click={() => {
|
||||||
|
$DataBase.useAutoTranslateInput = !$DataBase.useAutoTranslateInput
|
||||||
|
}}>
|
||||||
|
<LanguagesIcon />
|
||||||
|
<span class="ml-2">{language.autoTranslateInput}</span>
|
||||||
|
<Help key="experimental" />
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<div class={"flex items-center cursor-pointer "+ ($DataBase.useAutoSuggestions ? 'text-green-500':'lg:hover:text-green-500')} on:click={async () => {
|
<div class={"flex items-center cursor-pointer "+ ($DataBase.useAutoSuggestions ? 'text-green-500':'lg:hover:text-green-500')} on:click={async () => {
|
||||||
$DataBase.useAutoSuggestions = !$DataBase.useAutoSuggestions
|
$DataBase.useAutoSuggestions = !$DataBase.useAutoSuggestions
|
||||||
}}>
|
}}>
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
import { onDestroy } from 'svelte';
|
import { onDestroy } from 'svelte';
|
||||||
import { processScript } from "src/ts/process/scripts";
|
import { processScript } from "src/ts/process/scripts";
|
||||||
import { get } from "svelte/store";
|
import { get } from "svelte/store";
|
||||||
|
import { ParseMarkdown } from "src/ts/parser";
|
||||||
|
|
||||||
export let send: () => any;
|
export let send: () => any;
|
||||||
export let messageInput:(string:string) => any;
|
export let messageInput:(string:string) => any;
|
||||||
@@ -68,10 +69,9 @@
|
|||||||
role:'system',
|
role:'system',
|
||||||
content: replacePlaceholders($DataBase.autoSuggestPrompt, currentChar.name)
|
content: replacePlaceholders($DataBase.autoSuggestPrompt, currentChar.name)
|
||||||
}
|
}
|
||||||
,
|
,{
|
||||||
{
|
|
||||||
role: 'user',
|
role: 'user',
|
||||||
content: lastMessages.map(b=>(b.role==='char'? 'assistant' : 'user')+":"+b.data).reduce((a,b)=>a+','+b)
|
content: lastMessages.map(b=>(b.role==='char'? currentChar.name : $DataBase.username)+":"+b.data).reduce((a,b)=>a+','+b)
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -118,16 +118,18 @@
|
|||||||
<div>{language.creatingSuggestions}</div>
|
<div>{language.creatingSuggestions}</div>
|
||||||
</div>
|
</div>
|
||||||
{:else if !$doingChat}
|
{:else if !$doingChat}
|
||||||
<div class="flex mr-2 mb-2">
|
{#if $DataBase.translator !== ''}
|
||||||
<button class={"bg-gray-500 hover:bg-gray-700 font-bold py-2 px-4 rounded " + (toggleTranslate ? 'text-green-500' : 'text-white')}
|
<div class="flex mr-2 mb-2">
|
||||||
on:click={() => {
|
<button class={"bg-gray-500 hover:bg-gray-700 font-bold py-2 px-4 rounded " + (toggleTranslate ? 'text-green-500' : 'text-white')}
|
||||||
toggleTranslate = !toggleTranslate
|
on:click={() => {
|
||||||
// translateSuggest(toggleTranslate, suggestMessages)
|
toggleTranslate = !toggleTranslate
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
<LanguagesIcon/>
|
<LanguagesIcon/>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
|
||||||
<div class="flex mr-2 mb-2">
|
<div class="flex mr-2 mb-2">
|
||||||
<button class="bg-gray-500 hover:bg-gray-700 font-bold py-2 px-4 rounded text-white"
|
<button class="bg-gray-500 hover:bg-gray-700 font-bold py-2 px-4 rounded text-white"
|
||||||
@@ -151,11 +153,9 @@
|
|||||||
messageInput(suggest)
|
messageInput(suggest)
|
||||||
send()
|
send()
|
||||||
}}>
|
}}>
|
||||||
{#if toggleTranslate && suggestMessagesTranslated && suggestMessagesTranslated.length > 0}
|
{#await ParseMarkdown(($DataBase.translator !== '' && toggleTranslate && suggestMessagesTranslated && suggestMessagesTranslated.length > 0) ? suggestMessagesTranslated[i]??suggest : suggest) then md}
|
||||||
{suggestMessagesTranslated[i]??suggest}
|
{@html md}
|
||||||
{:else}
|
{/await}
|
||||||
{suggest}
|
|
||||||
{/if}
|
|
||||||
</button>
|
</button>
|
||||||
<button class="bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded ml-1" on:click={() => {
|
<button class="bg-gray-500 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded ml-1" on:click={() => {
|
||||||
messageInput(suggest)
|
messageInput(suggest)
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import { MailIcon, WalletIcon } from "lucide-svelte";
|
||||||
import { isTauri, openURL } from "src/ts/storage/globalApi";
|
import { isTauri, openURL } from "src/ts/storage/globalApi";
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
@@ -16,9 +17,14 @@
|
|||||||
<img src="/icon/github-mark-white.svg" width="24" alt="github" />
|
<img src="/icon/github-mark-white.svg" width="24" alt="github" />
|
||||||
</button>
|
</button>
|
||||||
{/if}
|
{/if}
|
||||||
<button on:click={() => {
|
<button class="text-white" on:click={() => {
|
||||||
openURL("https://www.patreon.com/RisuAI")
|
openURL("https://www.patreon.com/RisuAI")
|
||||||
}}>
|
}}>
|
||||||
<img src="/icon/patreon.png" width="24" alt="github" />
|
<WalletIcon size={24} />
|
||||||
|
</button>
|
||||||
|
<button class="text-white" on:click={() => {
|
||||||
|
openURL("mailto:amasio1234@proton.me")
|
||||||
|
}}>
|
||||||
|
<MailIcon size={24} />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -31,6 +31,11 @@
|
|||||||
$DataBase.language='ko'
|
$DataBase.language='ko'
|
||||||
step = 1
|
step = 1
|
||||||
}}>• 한국어</button>
|
}}>• 한국어</button>
|
||||||
|
<button class="hover:text-green-500 transition-colors" on:click={() => {
|
||||||
|
changeLanguage('cn')
|
||||||
|
$DataBase.language='cn'
|
||||||
|
step = 1
|
||||||
|
}}>• 中文</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{:else if step === 1}
|
{:else if step === 1}
|
||||||
|
|||||||
@@ -79,6 +79,13 @@
|
|||||||
$DataBase.maxContext = 4000
|
$DataBase.maxContext = 4000
|
||||||
$DataBase.maxResponse = 500
|
$DataBase.maxResponse = 500
|
||||||
}
|
}
|
||||||
|
else if(v.startsWith('claude')){
|
||||||
|
$DataBase.maxContext = 7500
|
||||||
|
$DataBase.maxResponse = 500
|
||||||
|
if(v.endsWith('100k')){
|
||||||
|
$DataBase.maxContext = 99000
|
||||||
|
}
|
||||||
|
}
|
||||||
else{
|
else{
|
||||||
$DataBase.maxContext = 1500
|
$DataBase.maxContext = 1500
|
||||||
$DataBase.maxResponse = 200
|
$DataBase.maxResponse = 200
|
||||||
@@ -94,6 +101,15 @@
|
|||||||
<span class="text-neutral-200">Palm2 {language.apiKey}</span>
|
<span class="text-neutral-200">Palm2 {language.apiKey}</span>
|
||||||
<input class="text-neutral-200 mb-4 p-2 bg-transparent input-text focus:bg-selected text-sm" placeholder="..." bind:value={$DataBase.palmAPI}>
|
<input class="text-neutral-200 mb-4 p-2 bg-transparent input-text focus:bg-selected text-sm" placeholder="..." bind:value={$DataBase.palmAPI}>
|
||||||
{/if}
|
{/if}
|
||||||
|
{#if $DataBase.aiModel === 'novellist' || $DataBase.subModel === 'novellist'}
|
||||||
|
<span class="text-neutral-200">NovelList {language.apiKey}</span>
|
||||||
|
<input class="text-neutral-200 mb-4 p-2 bg-transparent input-text focus:bg-selected text-sm" placeholder="..." bind:value={$DataBase.novellistAPI}>
|
||||||
|
{/if}
|
||||||
|
|
||||||
|
{#if $DataBase.aiModel.startsWith('claude') || $DataBase.subModel.startsWith('claude')}
|
||||||
|
<span class="text-neutral-200">Claude {language.apiKey}</span>
|
||||||
|
<input class="text-neutral-200 mb-4 p-2 bg-transparent input-text focus:bg-selected text-sm" placeholder="..." bind:value={$DataBase.claudeAPIKey}>
|
||||||
|
{/if}
|
||||||
{#if $DataBase.aiModel === 'gpt35' || $DataBase.aiModel === 'gpt4' || $DataBase.subModel === 'gpt4' || $DataBase.subModel === 'gpt35'|| $DataBase.aiModel === 'gpt4_32k' || $DataBase.subModel === 'gpt4_32k'}
|
{#if $DataBase.aiModel === 'gpt35' || $DataBase.aiModel === 'gpt4' || $DataBase.subModel === 'gpt4' || $DataBase.subModel === 'gpt35'|| $DataBase.aiModel === 'gpt4_32k' || $DataBase.subModel === 'gpt4_32k'}
|
||||||
<span class="text-neutral-200">OpenAI {language.apiKey} <Help key="oaiapikey"/></span>
|
<span class="text-neutral-200">OpenAI {language.apiKey} <Help key="oaiapikey"/></span>
|
||||||
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected text-sm" placeholder="sk-XXXXXXXXXXXXXXXXXXXX" bind:value={$DataBase.openAIKey}>
|
<input class="text-neutral-200 p-2 bg-transparent input-text focus:bg-selected text-sm" placeholder="sk-XXXXXXXXXXXXXXXXXXXX" bind:value={$DataBase.openAIKey}>
|
||||||
|
|||||||
@@ -145,5 +145,9 @@
|
|||||||
}}/>
|
}}/>
|
||||||
<span>{language.textScreenBorder}</span>
|
<span>{language.textScreenBorder}</span>
|
||||||
</div>
|
</div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
{/if}
|
<div class="flex items-center mt-2">
|
||||||
|
<Check bind:check={$DataBase.useChatCopy}/>
|
||||||
|
<span>{language.useChatCopy}</span>
|
||||||
|
</div>
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
import { changeLanguage, language } from "src/lang";
|
import { changeLanguage, language } from "src/lang";
|
||||||
import { DataBase } from "src/ts/storage/database";
|
import { DataBase } from "src/ts/storage/database";
|
||||||
import { sleep } from "src/ts/util";
|
import { sleep } from "src/ts/util";
|
||||||
|
import Help from "src/lib/Others/Help.svelte";
|
||||||
let langChanged = false
|
let langChanged = false
|
||||||
</script>
|
</script>
|
||||||
<h2 class="mb-2 text-2xl font-bold mt-2">{language.language}</h2>
|
<h2 class="mb-2 text-2xl font-bold mt-2">{language.language}</h2>
|
||||||
@@ -14,7 +15,8 @@ import { changeLanguage, language } from "src/lang";
|
|||||||
langChanged = true
|
langChanged = true
|
||||||
}}>
|
}}>
|
||||||
<option value="en" class="bg-darkbg appearance-none">English</option>
|
<option value="en" class="bg-darkbg appearance-none">English</option>
|
||||||
<option value="ko" class="bg-darkbg appearance-none">Korean</option>
|
<option value="ko" class="bg-darkbg appearance-none">한국어</option>
|
||||||
|
<option value="cn" class="bg-darkbg appearance-none">中文</option>
|
||||||
</select>
|
</select>
|
||||||
{#if langChanged}
|
{#if langChanged}
|
||||||
<span class="bg-red-500 text-sm">Close the settings to take effect</span>
|
<span class="bg-red-500 text-sm">Close the settings to take effect</span>
|
||||||
@@ -38,4 +40,11 @@ import { changeLanguage, language } from "src/lang";
|
|||||||
<Check bind:check={$DataBase.autoTranslate} />
|
<Check bind:check={$DataBase.autoTranslate} />
|
||||||
<span>{language.autoTranslation}</span>
|
<span>{language.autoTranslation}</span>
|
||||||
</div>
|
</div>
|
||||||
|
{#if $DataBase.useExperimental}
|
||||||
|
<div class="flex items-center mt-2">
|
||||||
|
<Check bind:check={$DataBase.useAutoTranslateInput} />
|
||||||
|
<span>{language.autoTranslateInput}</span>
|
||||||
|
<Help key="experimental" />
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
{/if}
|
{/if}
|
||||||
@@ -553,6 +553,9 @@
|
|||||||
<textarea class="bg-transparent input-text mt-2 mb-2 text-gray-200 text-xs resize-none h-20 focus:bg-selected" autocomplete="off" bind:value={currentChar.data.scenario}></textarea>
|
<textarea class="bg-transparent input-text mt-2 mb-2 text-gray-200 text-xs resize-none h-20 focus:bg-selected" autocomplete="off" bind:value={currentChar.data.scenario}></textarea>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
<span class="text-neutral-200 mt-2">{language.backgroundHTML} <Help key="backgroundHTML" /></span>
|
||||||
|
<textarea class="bg-transparent input-text mt-2 mb-2 text-gray-200 text-xs resize-none h-20 focus:bg-selected" autocomplete="off" bind:value={currentChar.data.backgroundHTML}></textarea>
|
||||||
|
|
||||||
<span class="text-neutral-200">{language.creator}</span>
|
<span class="text-neutral-200">{language.creator}</span>
|
||||||
<input class="bg-transparent input-text mt-2 mb-2 text-gray-200 text-xs resize-none h-20 focus:bg-selected" autocomplete="off" bind:value={currentChar.data.additionalData.creator} />
|
<input class="bg-transparent input-text mt-2 mb-2 text-gray-200 text-xs resize-none h-20 focus:bg-selected" autocomplete="off" bind:value={currentChar.data.additionalData.creator} />
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,17 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { downloadRisuHub, getRisuHub, hubURL } from "src/ts/characterCards";
|
import { downloadRisuHub, getRisuHub, hubURL } from "src/ts/characterCards";
|
||||||
import { DownloadIcon, FlagIcon, MenuIcon, SearchIcon, XIcon } from "lucide-svelte";
|
import { ArrowLeft, ArrowRight, DownloadIcon, FlagIcon, MenuIcon, SearchIcon, XIcon } from "lucide-svelte";
|
||||||
import { alertConfirm, alertInput, alertNormal } from "src/ts/alert";
|
import { alertConfirm, alertInput, alertNormal } from "src/ts/alert";
|
||||||
|
import { parseMarkdownSafe } from "src/ts/parser";
|
||||||
|
import { language } from "src/lang";
|
||||||
|
|
||||||
let openedData:null|{
|
let openedData:null|{
|
||||||
name:string
|
name:string
|
||||||
desc: string
|
desc: string
|
||||||
download: number,
|
download: number,
|
||||||
id: string,
|
id: string,
|
||||||
img: string
|
img: string,
|
||||||
|
tags: string[]
|
||||||
} = null
|
} = null
|
||||||
|
|
||||||
let charas:{
|
let charas:{
|
||||||
@@ -20,12 +23,19 @@
|
|||||||
tags: string[]
|
tags: string[]
|
||||||
}[] = []
|
}[] = []
|
||||||
|
|
||||||
|
let page = 0
|
||||||
|
let sort = ''
|
||||||
|
|
||||||
let search = ''
|
let search = ''
|
||||||
let menuOpen = false
|
let menuOpen = false
|
||||||
|
let nsfw = false
|
||||||
|
|
||||||
async function getHub(){
|
async function getHub(){
|
||||||
charas = await getRisuHub({
|
charas = await getRisuHub({
|
||||||
search: search
|
search: search,
|
||||||
|
page: page,
|
||||||
|
nsfw: nsfw,
|
||||||
|
sort: sort
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,10 +43,13 @@
|
|||||||
|
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
<div class="w-full flex justify-center mt-4 mb-3">
|
<div class="w-full flex justify-center mt-4">
|
||||||
<div class="flex w-2xl max-w-full items-center">
|
<div class="flex w-2xl max-w-full items-center">
|
||||||
<input class="flex-grow text-xl pl-3 pr-3 rounded-lg bg-darkbg h-16 min-w-0" placeholder="Search" bind:value={search}>
|
<input class="flex-grow text-xl pl-3 pr-3 rounded-lg bg-darkbg h-16 min-w-0" placeholder="Search" bind:value={search}>
|
||||||
<button class="bg-darkbg h-14 w-14 min-w-14 rounded-lg ml-2 flex justify-center items-center hover:ring transition-shadow" on:click={getHub}>
|
<button class="bg-darkbg h-14 w-14 min-w-14 rounded-lg ml-2 flex justify-center items-center hover:ring transition-shadow" on:click={() => {
|
||||||
|
page = 0
|
||||||
|
getHub()
|
||||||
|
}}>
|
||||||
<SearchIcon />
|
<SearchIcon />
|
||||||
</button>
|
</button>
|
||||||
<button class="bg-darkbg h-14 w-14 min-w-14 rounded-lg ml-2 flex justify-center items-center hover:ring transition-shadow" on:click={() => {
|
<button class="bg-darkbg h-14 w-14 min-w-14 rounded-lg ml-2 flex justify-center items-center hover:ring transition-shadow" on:click={() => {
|
||||||
@@ -46,29 +59,79 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="w-full mt-2 flex justify-center mb-3 items-center">
|
||||||
|
<button class="bg-darkbg p-2 rounded-lg ml-2 flex justify-center items-center hover:bg-selected transition-shadow" class:ring={nsfw} on:click={() => {
|
||||||
|
nsfw = !nsfw
|
||||||
|
getHub()
|
||||||
|
}}>
|
||||||
|
{nsfw ? 'NSFW ON': 'NSFW OFF'}
|
||||||
|
</button>
|
||||||
|
<div class="ml-2 mr-2 h-full border-r border-r-selected"></div>
|
||||||
|
<button class="bg-darkbg p-2 rounded-lg ml-2 flex justify-center items-center hover:bg-selected transition-shadow" class:ring={sort === ''} on:click={() => {
|
||||||
|
sort = ''
|
||||||
|
getHub()
|
||||||
|
}}>
|
||||||
|
{language.recent}
|
||||||
|
</button>
|
||||||
|
<button class="bg-darkbg p-2 rounded-lg ml-2 flex justify-center items-center hover:bg-selected transition-shadow" class:ring={sort === 'trending'} on:click={() => {
|
||||||
|
sort = 'trending'
|
||||||
|
getHub()
|
||||||
|
}}>
|
||||||
|
{language.trending}
|
||||||
|
</button>
|
||||||
|
<button class="bg-darkbg p-2 rounded-lg ml-2 flex justify-center items-center hover:bg-selected transition-shadow" class:ring={sort === 'downloads'} on:click={() => {
|
||||||
|
sort = 'downloads'
|
||||||
|
getHub()
|
||||||
|
}}>
|
||||||
|
{language.downloads}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
<div class="w-full flex gap-4 p-2 flex-wrap justify-center">
|
<div class="w-full flex gap-4 p-2 flex-wrap justify-center">
|
||||||
{#each charas as chara}
|
{#key charas}
|
||||||
<button class="bg-darkbg rounded-lg p-4 flex flex-col hover:bg-selected transition-colors relative lg:w-96 w-full items-start" on:click={() => {
|
{#each charas as chara}
|
||||||
openedData = chara
|
<button class="bg-darkbg rounded-lg p-4 flex flex-col hover:bg-selected transition-colors relative lg:w-96 w-full items-start" on:click={() => {
|
||||||
}}>
|
openedData = chara
|
||||||
<div class="flex gap-2 w-full">
|
}}>
|
||||||
<img class="w-20 min-w-20 h-20 sm:h-28 sm:w-28 rounded-md object-top object-cover" alt={chara.name} src={`${hubURL}/resource/` + chara.img}>
|
<div class="flex gap-2 w-full">
|
||||||
<div class="flex flex-col flex-grow min-w-0">
|
<img class="w-20 min-w-20 h-20 sm:h-28 sm:w-28 rounded-md object-top object-cover" alt={chara.name} src={`${hubURL}/resource/` + chara.img}>
|
||||||
<span class="text-white text-lg min-w-0 max-w-full text-ellipsis whitespace-nowrap overflow-hidden text-start">{chara.name}</span>
|
<div class="flex flex-col flex-grow min-w-0">
|
||||||
<span class="text-gray-400 text-xs min-w-0 max-w-full text-ellipsis break-words max-h-8 whitespace-nowrap overflow-hidden text-start">{chara.desc}</span>
|
<span class="text-white text-lg min-w-0 max-w-full text-ellipsis whitespace-nowrap overflow-hidden text-start">{chara.name}</span>
|
||||||
<div class="flex flex-wrap">
|
<span class="text-gray-400 text-xs min-w-0 max-w-full text-ellipsis break-words max-h-8 whitespace-nowrap overflow-hidden text-start">{chara.desc}</span>
|
||||||
{#each chara.tags as tag, i}
|
<div class="flex flex-wrap">
|
||||||
{#if i < 4}
|
{#each chara.tags as tag, i}
|
||||||
<div class="text-xs p-1 text-blue-400">{tag}</div>
|
{#if i < 4}
|
||||||
{:else if i === 4}
|
<div class="text-xs p-1 text-blue-400">{tag}</div>
|
||||||
<div class="text-xs p-1 text-blue-400">...</div>
|
{:else if i === 4}
|
||||||
{/if}
|
<div class="text-xs p-1 text-blue-400">...</div>
|
||||||
{/each}
|
{/if}
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</button>
|
||||||
|
{/each}
|
||||||
|
{/key}
|
||||||
|
</div>
|
||||||
|
<div class="w-full flex justify-center">
|
||||||
|
<div class="flex">
|
||||||
|
<button class="bg-darkbg h-14 w-14 min-w-14 rounded-lg flex justify-center items-center hover:ring transition-shadow" on:click={() => {
|
||||||
|
if(page > 0){
|
||||||
|
page -= 1
|
||||||
|
getHub()
|
||||||
|
}
|
||||||
|
}}>
|
||||||
|
<ArrowLeft />
|
||||||
</button>
|
</button>
|
||||||
{/each}
|
<button class="bg-darkbg h-14 w-14 min-w-14 rounded-lg ml-2 flex justify-center items-center transition-shadow">
|
||||||
|
<span>{page + 1}</span>
|
||||||
|
</button>
|
||||||
|
<button class="bg-darkbg h-14 w-14 min-w-14 rounded-lg ml-2 flex justify-center items-center hover:ring transition-shadow" on:click={() => {
|
||||||
|
page += 1
|
||||||
|
getHub()
|
||||||
|
}}>
|
||||||
|
<ArrowRight />
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
@@ -78,12 +141,21 @@
|
|||||||
openedData = null
|
openedData = null
|
||||||
}}>
|
}}>
|
||||||
<div class="p-6 max-w-full bg-darkbg rounded-md flex flex-col gap-4 w-2xl overflow-y-auto">
|
<div class="p-6 max-w-full bg-darkbg rounded-md flex flex-col gap-4 w-2xl overflow-y-auto">
|
||||||
<div class="w-full flex gap-4">
|
<div class="w-full flex gap-4 flex-col">
|
||||||
<div class="flex flex-col">
|
<h1 class="text-2xl font-bold max-w-full overflow-hidden whitespace-nowrap text-ellipsis">{openedData.name}</h1>
|
||||||
|
<div class="flex justify-start gap-4">
|
||||||
<img class="h-36 w-36 rounded-md object-top object-cover" alt={openedData.name} src={`${hubURL}/resource/` + openedData.img}>
|
<img class="h-36 w-36 rounded-md object-top object-cover" alt={openedData.name} src={`${hubURL}/resource/` + openedData.img}>
|
||||||
<h1 class="text-2xl font-bold max-w-full overflow-hidden whitespace-nowrap text-ellipsis mt-4">{openedData.name}</h1>
|
<span class="text-gray-400 break-words text-base chattext prose prose-invert">
|
||||||
|
{#await parseMarkdownSafe(openedData.desc) then msg}
|
||||||
|
{@html msg}
|
||||||
|
{/await}
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="flex justify-start gap-2">
|
||||||
|
{#each openedData.tags as tag, i}
|
||||||
|
<div class="text-xs p-1 text-blue-400">{tag}</div>
|
||||||
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
<span class="text-gray-400 break-words text-base">{openedData.desc}</span>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-row-reverse gap-2">
|
<div class="flex flex-row-reverse gap-2">
|
||||||
<button class="text-gray-400 hover:text-red-500" on:click|stopPropagation={async () => {
|
<button class="text-gray-400 hover:text-red-500" on:click|stopPropagation={async () => {
|
||||||
|
|||||||
@@ -31,7 +31,7 @@
|
|||||||
if(name.startsWith("horde:::")){
|
if(name.startsWith("horde:::")){
|
||||||
return name.replace(":::", " ")
|
return name.replace(":::", " ")
|
||||||
}
|
}
|
||||||
return ''
|
return name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,6 +55,12 @@
|
|||||||
<button class="p-2 hover:text-green-500" on:click={() => {changeModel('gpt4')}}>GPT-4</button>
|
<button class="p-2 hover:text-green-500" on:click={() => {changeModel('gpt4')}}>GPT-4</button>
|
||||||
<button class="p-2 hover:text-green-500" on:click={() => {changeModel('gpt4_32k')}}>GPT-4 32K</button>
|
<button class="p-2 hover:text-green-500" on:click={() => {changeModel('gpt4_32k')}}>GPT-4 32K</button>
|
||||||
</Arcodion>
|
</Arcodion>
|
||||||
|
<Arcodion name="Anthropic Claude">
|
||||||
|
<button class="p-2 hover:text-green-500" on:click={() => {changeModel('claude-v1')}}>claude-v1</button>
|
||||||
|
<button class="p-2 hover:text-green-500" on:click={() => {changeModel('claude-v1-100k')}}>claude-v1-100k</button>
|
||||||
|
<button class="p-2 hover:text-green-500" on:click={() => {changeModel('claude-instant-v1')}}>claude-instant-v1</button>
|
||||||
|
<button class="p-2 hover:text-green-500" on:click={() => {changeModel('claude-instant-v1-100k')}}>claude-instant-v1-100k</button>
|
||||||
|
</Arcodion>
|
||||||
<button class="hover:bg-selected px-6 py-2 text-lg" on:click={() => {changeModel('textgen_webui')}}>Oobabooga WebUI</button>
|
<button class="hover:bg-selected px-6 py-2 text-lg" on:click={() => {changeModel('textgen_webui')}}>Oobabooga WebUI</button>
|
||||||
<button class="hover:bg-selected px-6 py-2 text-lg" on:click={() => {changeModel('palm2')}}>Google PaLM2</button>
|
<button class="hover:bg-selected px-6 py-2 text-lg" on:click={() => {changeModel('palm2')}}>Google PaLM2</button>
|
||||||
<button class="hover:bg-selected px-6 py-2 text-lg" on:click={() => {changeModel('kobold')}}>Kobold</button>
|
<button class="hover:bg-selected px-6 py-2 text-lg" on:click={() => {changeModel('kobold')}}>Kobold</button>
|
||||||
|
|||||||
@@ -653,7 +653,10 @@ export async function shareRisuHub(char:character, arg:{
|
|||||||
}
|
}
|
||||||
|
|
||||||
export async function getRisuHub(arg?:{
|
export async function getRisuHub(arg?:{
|
||||||
search?:string
|
search?:string,
|
||||||
|
page?:number,
|
||||||
|
nsfw?:boolean
|
||||||
|
sort?:string
|
||||||
}):Promise<{
|
}):Promise<{
|
||||||
name:string
|
name:string
|
||||||
desc: string
|
desc: string
|
||||||
|
|||||||
@@ -10,6 +10,12 @@ const convertor = new showdown.Converter({
|
|||||||
tables: true
|
tables: true
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const safeConvertor = new showdown.Converter({
|
||||||
|
simpleLineBreaks: true,
|
||||||
|
strikethrough: true,
|
||||||
|
tables: true,
|
||||||
|
backslashEscapesHTMLTags: true
|
||||||
|
})
|
||||||
|
|
||||||
DOMPurify.addHook("uponSanitizeElement", (node: HTMLElement, data) => {
|
DOMPurify.addHook("uponSanitizeElement", (node: HTMLElement, data) => {
|
||||||
if (data.tagName === "iframe") {
|
if (data.tagName === "iframe") {
|
||||||
@@ -20,7 +26,13 @@ DOMPurify.addHook("uponSanitizeElement", (node: HTMLElement, data) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
export async function ParseMarkdown(data:string, char:(character | groupChat) = null) {
|
DOMPurify.addHook("uponSanitizeAttribute", (node, data) => {
|
||||||
|
if(data.attrName === 'style'){
|
||||||
|
data.attrValue = data.attrValue.replace(/(absolute)|(z-index)|(fixed)/g, '')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
export async function ParseMarkdown(data:string, char:(character | groupChat) = null, mode:'normal'|'back' = 'normal') {
|
||||||
if(char && char.type !== 'group'){
|
if(char && char.type !== 'group'){
|
||||||
if(char.customscript){
|
if(char.customscript){
|
||||||
data = processScript(char, data, 'editdisplay')
|
data = processScript(char, data, 'editdisplay')
|
||||||
@@ -28,7 +40,13 @@ export async function ParseMarkdown(data:string, char:(character | groupChat) =
|
|||||||
if(char.additionalAssets){
|
if(char.additionalAssets){
|
||||||
for(const asset of char.additionalAssets){
|
for(const asset of char.additionalAssets){
|
||||||
const assetPath = await getFileSrc(asset[1])
|
const assetPath = await getFileSrc(asset[1])
|
||||||
data = data.replaceAll(`{{raw::${asset[0]}}}`, assetPath).replaceAll(`{{img::${asset[0]}}}`,`<img src="${assetPath}" />`)
|
data = data.replaceAll(`{{raw::${asset[0]}}}`, assetPath).
|
||||||
|
replaceAll(`{{img::${asset[0]}}}`,`<img src="${assetPath}" />`)
|
||||||
|
.replaceAll(`{{video::${asset[0]}}}`,`<video autoplay loop><source src="${assetPath}" type="video/mp4"></video>`)
|
||||||
|
.replaceAll(`{{audio::${asset[0]}}}`,`<audio autoplay loop><source src="${assetPath}" type="audio/mpeg"></audio>`)
|
||||||
|
if(mode === 'back'){
|
||||||
|
data = data.replaceAll(`{{bg::${asset[0]}}}`, `<div style="width:100%;height:100%;background: linear-gradient(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8)),url(${assetPath}); background-size: cover;"></div>`)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -38,6 +56,13 @@ export async function ParseMarkdown(data:string, char:(character | groupChat) =
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function parseMarkdownSafe(data:string) {
|
||||||
|
return DOMPurify.sanitize(safeConvertor.makeHtml(data), {
|
||||||
|
FORBID_TAGS: ["a", "style"],
|
||||||
|
FORBID_ATTR: ["style"]
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
export async function hasher(data:Uint8Array){
|
export async function hasher(data:Uint8Array){
|
||||||
return Buffer.from(await crypto.subtle.digest("SHA-256", data)).toString('hex');
|
return Buffer.from(await crypto.subtle.digest("SHA-256", data)).toString('hex');
|
||||||
}
|
}
|
||||||
@@ -48,7 +48,8 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
const db = get(DataBase)
|
const db = get(DataBase)
|
||||||
let result = ''
|
let result = ''
|
||||||
let formated = arg.formated
|
let formated = arg.formated
|
||||||
let maxTokens = db.maxResponse
|
let maxTokens = arg.maxTokens ??db.maxResponse
|
||||||
|
let temperature = arg.temperature ?? (db.temperature / 100)
|
||||||
let bias = arg.bias
|
let bias = arg.bias
|
||||||
let currentChar = arg.currentChar
|
let currentChar = arg.currentChar
|
||||||
const replacer = model === 'model' ? db.forceReplaceUrl : db.forceReplaceUrl2
|
const replacer = model === 'model' ? db.forceReplaceUrl : db.forceReplaceUrl2
|
||||||
@@ -70,8 +71,8 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
model: aiModel === 'gpt35' ? 'gpt-3.5-turbo'
|
model: aiModel === 'gpt35' ? 'gpt-3.5-turbo'
|
||||||
: aiModel === 'gpt4' ? 'gpt-4' : 'gpt-4-32k',
|
: aiModel === 'gpt4' ? 'gpt-4' : 'gpt-4-32k',
|
||||||
messages: formated,
|
messages: formated,
|
||||||
temperature: arg.temperature ?? (db.temperature / 100),
|
temperature: temperature,
|
||||||
max_tokens: arg.maxTokens ?? maxTokens,
|
max_tokens: maxTokens,
|
||||||
presence_penalty: arg.PresensePenalty ?? (db.PresensePenalty / 100),
|
presence_penalty: arg.PresensePenalty ?? (db.PresensePenalty / 100),
|
||||||
frequency_penalty: arg.frequencyPenalty ?? (db.frequencyPenalty / 100),
|
frequency_penalty: arg.frequencyPenalty ?? (db.frequencyPenalty / 100),
|
||||||
logit_bias: bias,
|
logit_bias: bias,
|
||||||
@@ -459,7 +460,104 @@ export async function requestChatDataMain(arg:requestDataArgument, model:'model'
|
|||||||
result: data.results[0].text
|
result: data.results[0].text
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case "novellist":{
|
||||||
|
const auth_key = db.novellistAPI;
|
||||||
|
const api_server_url = 'https://api.tringpt.com/';
|
||||||
|
|
||||||
|
const headers = {
|
||||||
|
'Authorization': `Bearer ${auth_key}`,
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
};
|
||||||
|
|
||||||
|
const send_body = {
|
||||||
|
text: stringlizeChat(formated, currentChar?.name ?? ''),
|
||||||
|
length: maxTokens,
|
||||||
|
temperature: temperature,
|
||||||
|
top_p: 0.7,
|
||||||
|
tailfree: 1.0,
|
||||||
|
rep_pen: arg.frequencyPenalty ?? (db.frequencyPenalty / 100),
|
||||||
|
};
|
||||||
|
|
||||||
|
const response = await globalFetch(api_server_url + '/api', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: headers,
|
||||||
|
body: send_body,
|
||||||
|
});
|
||||||
|
|
||||||
|
if(!response.ok){
|
||||||
|
return {
|
||||||
|
type: 'fail',
|
||||||
|
result: response.data
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const result = response.data.data[0];
|
||||||
|
|
||||||
|
return {
|
||||||
|
'type': 'success',
|
||||||
|
'result': unstringlizeChat(result, formated, currentChar?.name ?? '')
|
||||||
|
}
|
||||||
|
}
|
||||||
default:{
|
default:{
|
||||||
|
if(aiModel.startsWith('claude')){
|
||||||
|
for(let i=0;i<formated.length;i++){
|
||||||
|
if(arg.isGroupChat && formated[i].name){
|
||||||
|
formated[i].content = formated[i].name + ": " + formated[i].content
|
||||||
|
}
|
||||||
|
formated[i].name = undefined
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
let requestPrompt = formated.map((v) => {
|
||||||
|
let prefix = ''
|
||||||
|
switch (v.role){
|
||||||
|
case "assistant":
|
||||||
|
prefix = "\n\nAssistant: "
|
||||||
|
break
|
||||||
|
case "user":
|
||||||
|
prefix = "\n\nHuman: "
|
||||||
|
break
|
||||||
|
case "system":
|
||||||
|
prefix = "\n\nSystem: "
|
||||||
|
break
|
||||||
|
}
|
||||||
|
return prefix + v.content
|
||||||
|
}).join('') + '\n\nAssistant: '
|
||||||
|
|
||||||
|
console.log(requestPrompt)
|
||||||
|
|
||||||
|
const da = await globalFetch('https://api.anthropic.com/v1/complete', {
|
||||||
|
method: "POST",
|
||||||
|
body: {
|
||||||
|
prompt : "\n\nHuman: " + requestPrompt,
|
||||||
|
model: aiModel,
|
||||||
|
max_tokens_to_sample: maxTokens,
|
||||||
|
stop_sequences: ["\n\nHuman:", "\n\nSystem:", "\n\nAssistant:"],
|
||||||
|
temperature: temperature,
|
||||||
|
},
|
||||||
|
headers: {
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
"x-api-key": db.claudeAPIKey
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if((!da.ok) || (da.data.error)){
|
||||||
|
return {
|
||||||
|
type: 'fail',
|
||||||
|
result: `${JSON.stringify(da.data)}`
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const res = da.data
|
||||||
|
|
||||||
|
console.log(res)
|
||||||
|
return {
|
||||||
|
type: "success",
|
||||||
|
result: res.completion,
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
if(aiModel.startsWith("horde:::")){
|
if(aiModel.startsWith("horde:::")){
|
||||||
const proompt = stringlizeChat(formated, currentChar?.name ?? '')
|
const proompt = stringlizeChat(formated, currentChar?.name ?? '')
|
||||||
|
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ export async function supaMemory(
|
|||||||
async function summarize(stringlizedChat:string){
|
async function summarize(stringlizedChat:string){
|
||||||
|
|
||||||
const supaPrompt = db.supaMemoryPrompt === '' ?
|
const supaPrompt = db.supaMemoryPrompt === '' ?
|
||||||
"[Summarize the ongoing role story, including as many events from the past as possible, using assistant as a narrative helper;do not analyze. include all of the characters' names, statuses, thoughts, relationships, and attire. Be sure to include dialogue exchanges and context by referencing previous statements and reactions. assistant's summary should provide an objective overview of the story while also considering relevant past conversations and events. It must also remove redundancy and unnecessary content from the prompt so that gpt3 and other sublanguage models]\n"
|
"[Summarize the ongoing role story, It must also remove redundancy and unnecessary text and content from the output to reduce tokens for gpt3 and other sublanguage models]\n"
|
||||||
: db.supaMemoryPrompt
|
: db.supaMemoryPrompt
|
||||||
|
|
||||||
let result = ''
|
let result = ''
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import { defaultAutoSuggestPrompt, defaultJailbreak, defaultMainPrompt } from '.
|
|||||||
|
|
||||||
export const DataBase = writable({} as any as Database)
|
export const DataBase = writable({} as any as Database)
|
||||||
export const loadedStore = writable(false)
|
export const loadedStore = writable(false)
|
||||||
export let appVer = '1.23.1'
|
export let appVer = '1.24.2'
|
||||||
|
|
||||||
export function setDatabase(data:Database){
|
export function setDatabase(data:Database){
|
||||||
if(checkNullish(data.characters)){
|
if(checkNullish(data.characters)){
|
||||||
@@ -335,6 +335,7 @@ export interface character{
|
|||||||
additionalAssets?:[string, string][]
|
additionalAssets?:[string, string][]
|
||||||
ttsReadOnlyQuoted?:boolean
|
ttsReadOnlyQuoted?:boolean
|
||||||
replaceGlobalNote:string
|
replaceGlobalNote:string
|
||||||
|
backgroundHTML?:string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -371,6 +372,7 @@ export interface groupChat{
|
|||||||
ttsMode?:string
|
ttsMode?:string
|
||||||
suggestMessages?:string[]
|
suggestMessages?:string[]
|
||||||
orderByOrder?:boolean
|
orderByOrder?:boolean
|
||||||
|
backgroundHTML?:string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface botPreset{
|
export interface botPreset{
|
||||||
@@ -498,7 +500,11 @@ export interface Database{
|
|||||||
koboldURL:string
|
koboldURL:string
|
||||||
advancedBotSettings:boolean
|
advancedBotSettings:boolean
|
||||||
useAutoSuggestions:boolean
|
useAutoSuggestions:boolean
|
||||||
autoSuggestPrompt:string
|
autoSuggestPrompt:string,
|
||||||
|
claudeAPIKey:string,
|
||||||
|
useChatCopy:boolean,
|
||||||
|
novellistAPI:string,
|
||||||
|
useAutoTranslateInput:boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
interface hordeConfig{
|
interface hordeConfig{
|
||||||
|
|||||||
@@ -416,17 +416,17 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
|
|||||||
})
|
})
|
||||||
|
|
||||||
if(arg.rawResponse){
|
if(arg.rawResponse){
|
||||||
addFetchLog("Uint8Array Response", da.ok)
|
addFetchLog("Uint8Array Response", da.ok && da.status >= 200 && da.status < 300)
|
||||||
return {
|
return {
|
||||||
ok: da.ok,
|
ok: da.ok && da.status >= 200 && da.status < 300,
|
||||||
data: new Uint8Array(await da.arrayBuffer())
|
data: new Uint8Array(await da.arrayBuffer())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
const dat = await da.json()
|
const dat = await da.json()
|
||||||
addFetchLog(dat, da.ok)
|
addFetchLog(dat, da.ok && da.status >= 200 && da.status < 300)
|
||||||
return {
|
return {
|
||||||
ok: da.ok,
|
ok: da.ok && da.status >= 200 && da.status < 300,
|
||||||
data: dat
|
data: dat
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -455,17 +455,17 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
|
|||||||
})
|
})
|
||||||
|
|
||||||
if(arg.rawResponse){
|
if(arg.rawResponse){
|
||||||
addFetchLog("Uint8Array Response", da.ok)
|
addFetchLog("Uint8Array Response", da.ok && da.status >= 200 && da.status < 300)
|
||||||
return {
|
return {
|
||||||
ok: da.ok,
|
ok: da.ok && da.status >= 200 && da.status < 300,
|
||||||
data: new Uint8Array(await da.arrayBuffer())
|
data: new Uint8Array(await da.arrayBuffer())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
const dat = await da.json()
|
const dat = await da.json()
|
||||||
addFetchLog(dat, da.ok)
|
addFetchLog(dat, da.ok && da.status >= 200 && da.status < 300)
|
||||||
return {
|
return {
|
||||||
ok: da.ok,
|
ok: da.ok && da.status >= 200 && da.status < 300,
|
||||||
data: dat
|
data: dat
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -567,9 +567,9 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
|
|||||||
,signal: arg.abortSignal
|
,signal: arg.abortSignal
|
||||||
})
|
})
|
||||||
|
|
||||||
addFetchLog("Uint8Array Response", da.ok)
|
addFetchLog("Uint8Array Response", da.ok && da.status >= 200 && da.status < 300)
|
||||||
return {
|
return {
|
||||||
ok: da.ok,
|
ok: da.ok && da.status >= 200 && da.status < 300,
|
||||||
data: new Uint8Array(await da.arrayBuffer())
|
data: new Uint8Array(await da.arrayBuffer())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -586,9 +586,9 @@ export async function globalFetch(url:string, arg:{body?:any,headers?:{[key:stri
|
|||||||
})
|
})
|
||||||
|
|
||||||
const dat = await da.json()
|
const dat = await da.json()
|
||||||
addFetchLog(dat, da.ok)
|
addFetchLog(dat, da.ok && da.status >= 200 && da.status < 300)
|
||||||
return {
|
return {
|
||||||
ok: da.ok,
|
ok: da.ok && da.status >= 200 && da.status < 300,
|
||||||
data: dat
|
data: dat
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,13 @@
|
|||||||
import type { Tiktoken } from "@dqbd/tiktoken";
|
import type { Tiktoken } from "@dqbd/tiktoken";
|
||||||
import type { character } from "./storage/database";
|
import { DataBase, type character } from "./storage/database";
|
||||||
|
import { get } from "svelte/store";
|
||||||
|
import { tokenizeTransformers } from "./transformers/transformer";
|
||||||
|
|
||||||
async function encode(data:string):Promise<(number[]|Uint32Array)>{
|
async function encode(data:string):Promise<(number[]|Uint32Array)>{
|
||||||
|
let db = get(DataBase)
|
||||||
|
if(db.aiModel === 'novellist'){
|
||||||
|
return await tokenizeTransformers('naclbit/trin_tokenizer_v3',data)
|
||||||
|
}
|
||||||
return await tikJS(data)
|
return await tikJS(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
24
src/ts/transformers/transformer.ts
Normal file
24
src/ts/transformers/transformer.ts
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
import type { PreTrainedTokenizer } from "@xenova/transformers"
|
||||||
|
type transformerLibType = typeof import("@xenova/transformers");
|
||||||
|
let tokenizer:PreTrainedTokenizer = null
|
||||||
|
let transformerLib:transformerLibType
|
||||||
|
|
||||||
|
let tokenizerType:string = ''
|
||||||
|
|
||||||
|
|
||||||
|
async function loadTransformers() {
|
||||||
|
if(!transformerLib){
|
||||||
|
transformerLib = await import('@xenova/transformers')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function tokenizeTransformers(type:string, text:string) {
|
||||||
|
await loadTransformers()
|
||||||
|
if(tokenizerType !== type){
|
||||||
|
const AutoTokenizer = transformerLib.AutoTokenizer
|
||||||
|
tokenizer = await AutoTokenizer.from_pretrained(type)
|
||||||
|
tokenizerType = type
|
||||||
|
}
|
||||||
|
|
||||||
|
return tokenizer.encode(text)
|
||||||
|
}
|
||||||
@@ -1 +1 @@
|
|||||||
{"version":"1.23.1"}
|
{"version":"1.24.2"}
|
||||||
Reference in New Issue
Block a user