sillytavern 1.13.0 → 1.13.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (204) hide show
  1. package/.dockerignore +1 -0
  2. package/Dockerfile +3 -3
  3. package/config.yaml +32 -17
  4. package/default/config.yaml +32 -17
  5. package/default/content/index.json +28 -0
  6. package/default/content/presets/context/Dots1.json +11 -0
  7. package/default/content/presets/context/Mistral V7-Tekken.json +10 -0
  8. package/default/content/presets/context/Moonshot AI.json +11 -0
  9. package/default/content/presets/instruct/Dots1.json +24 -0
  10. package/default/content/presets/instruct/KoboldAI.json +22 -0
  11. package/default/content/presets/instruct/Mistral V7-Tekken.json +22 -0
  12. package/default/content/presets/instruct/Moonshot AI.json +24 -0
  13. package/default/content/presets/openai/Default.json +1 -4
  14. package/default/content/settings.json +1 -2
  15. package/index.d.ts +5 -0
  16. package/package.json +33 -31
  17. package/public/css/animations.css +10 -0
  18. package/public/css/character-group-overlay.css +1 -1
  19. package/public/css/data-maid.css +149 -0
  20. package/public/css/loader.css +1 -1
  21. package/public/css/login.css +1 -1
  22. package/public/css/logprobs.css +1 -1
  23. package/public/css/mobile-styles.css +9 -4
  24. package/public/css/promptmanager.css +6 -2
  25. package/public/css/rm-groups.css +1 -1
  26. package/public/css/secrets.css +102 -0
  27. package/public/css/select2-overrides.css +15 -62
  28. package/public/css/st-tailwind.css +9 -9
  29. package/public/css/tags.css +4 -2
  30. package/public/css/toggle-dependent.css +9 -1
  31. package/public/css/welcome.css +16 -0
  32. package/public/css/world-info.css +20 -3
  33. package/public/global.d.ts +13 -0
  34. package/public/img/aimlapi.svg +4 -0
  35. package/public/img/nanogpt.svg +1 -43
  36. package/public/img/vertexai.svg +26 -0
  37. package/public/index.html +1017 -826
  38. package/public/lib.js +3 -0
  39. package/public/locales/ar-sa.json +2 -3
  40. package/public/locales/de-de.json +2 -3
  41. package/public/locales/es-es.json +2 -3
  42. package/public/locales/fr-fr.json +2 -3
  43. package/public/locales/is-is.json +2 -3
  44. package/public/locales/it-it.json +2 -3
  45. package/public/locales/ja-jp.json +2 -3
  46. package/public/locales/ko-kr.json +2 -3
  47. package/public/locales/nl-nl.json +2 -3
  48. package/public/locales/pt-pt.json +2 -3
  49. package/public/locales/ru-ru.json +145 -9
  50. package/public/locales/uk-ua.json +2 -3
  51. package/public/locales/vi-vn.json +2 -3
  52. package/public/locales/zh-cn.json +3 -4
  53. package/public/locales/zh-tw.json +150 -130
  54. package/public/script.js +911 -2218
  55. package/public/scripts/BulkEditOverlay.js +6 -5
  56. package/public/scripts/PromptManager.js +259 -96
  57. package/public/scripts/RossAscends-mods.js +153 -201
  58. package/public/scripts/authors-note.js +17 -14
  59. package/public/scripts/autocomplete/AutoComplete.js +36 -30
  60. package/public/scripts/backgrounds.js +174 -32
  61. package/public/scripts/bookmarks.js +32 -13
  62. package/public/scripts/bulk-edit.js +6 -2
  63. package/public/scripts/cfg-scale.js +1 -1
  64. package/public/scripts/chat-templates.js +78 -7
  65. package/public/scripts/chats.js +197 -17
  66. package/public/scripts/constants.js +18 -0
  67. package/public/scripts/custom-request.js +11 -6
  68. package/public/scripts/data-maid.js +405 -0
  69. package/public/scripts/events.js +92 -0
  70. package/public/scripts/extensions/assets/index.js +7 -7
  71. package/public/scripts/extensions/assets/style.css +1 -1
  72. package/public/scripts/extensions/attachments/index.js +29 -0
  73. package/public/scripts/extensions/attachments/notepad.html +1 -1
  74. package/public/scripts/extensions/caption/index.js +19 -8
  75. package/public/scripts/extensions/caption/settings.html +47 -14
  76. package/public/scripts/extensions/connection-manager/index.js +15 -0
  77. package/public/scripts/extensions/expressions/index.js +67 -19
  78. package/public/scripts/extensions/expressions/settings.html +16 -3
  79. package/public/scripts/extensions/gallery/index.js +79 -29
  80. package/public/scripts/extensions/gallery/style.css +5 -0
  81. package/public/scripts/extensions/memory/index.js +18 -4
  82. package/public/scripts/extensions/quick-reply/index.js +1 -1
  83. package/public/scripts/extensions/quick-reply/src/QuickReplySettings.js +3 -3
  84. package/public/scripts/extensions/quick-reply/style.css +13 -16
  85. package/public/scripts/extensions/quick-reply/style.less +534 -370
  86. package/public/scripts/extensions/regex/dropdown.html +28 -2
  87. package/public/scripts/extensions/regex/editor.html +1 -1
  88. package/public/scripts/extensions/regex/embeddedScripts.html +3 -3
  89. package/public/scripts/extensions/regex/index.js +161 -33
  90. package/public/scripts/extensions/regex/scriptTemplate.html +1 -0
  91. package/public/scripts/extensions/regex/style.css +26 -4
  92. package/public/scripts/extensions/shared.js +36 -5
  93. package/public/scripts/extensions/stable-diffusion/index.js +256 -72
  94. package/public/scripts/extensions/stable-diffusion/settings.html +35 -4
  95. package/public/scripts/extensions/token-counter/index.js +0 -13
  96. package/public/scripts/extensions/translate/index.html +9 -3
  97. package/public/scripts/extensions/translate/index.js +12 -59
  98. package/public/scripts/extensions/tts/alltalk.js +9 -9
  99. package/public/scripts/extensions/tts/azure.js +20 -32
  100. package/public/scripts/extensions/tts/chatterbox.js +649 -0
  101. package/public/scripts/extensions/tts/elevenlabs.js +26 -5
  102. package/public/scripts/extensions/tts/google-native.js +195 -0
  103. package/public/scripts/extensions/tts/index.js +34 -1
  104. package/public/scripts/extensions/tts/lib/pcm-processor.js +73 -0
  105. package/public/scripts/extensions/tts/novel.js +18 -12
  106. package/public/scripts/extensions/tts/openai-compatible.js +21 -33
  107. package/public/scripts/extensions/tts/pollinations.js +151 -0
  108. package/public/scripts/extensions/tts/settings.html +2 -2
  109. package/public/scripts/extensions/tts/style.css +1 -1
  110. package/public/scripts/extensions/tts/tts-webui.js +566 -0
  111. package/public/scripts/extensions/vectors/index.js +25 -35
  112. package/public/scripts/extensions/vectors/settings.html +3 -1
  113. package/public/scripts/extensions.js +99 -12
  114. package/public/scripts/group-chats.js +50 -9
  115. package/public/scripts/horde.js +42 -18
  116. package/public/scripts/i18n.js +1 -1
  117. package/public/scripts/instruct-mode.js +38 -4
  118. package/public/scripts/itemized-prompts.js +352 -0
  119. package/public/scripts/kai-settings.js +157 -6
  120. package/public/scripts/nai-settings.js +90 -21
  121. package/public/scripts/openai.js +588 -433
  122. package/public/scripts/personas.js +86 -28
  123. package/public/scripts/popup.js +11 -3
  124. package/public/scripts/power-user.js +110 -76
  125. package/public/scripts/preset-manager.js +145 -8
  126. package/public/scripts/reasoning.js +3 -1
  127. package/public/scripts/samplerSelect.js +4 -4
  128. package/public/scripts/secrets.js +827 -38
  129. package/public/scripts/server-history.js +1 -1
  130. package/public/scripts/slash-commands/SlashCommandCommonEnumsProvider.js +1 -0
  131. package/public/scripts/slash-commands/SlashCommandParser.js +9 -6
  132. package/public/scripts/slash-commands.js +685 -53
  133. package/public/scripts/st-context.js +2 -0
  134. package/public/scripts/stats.js +7 -6
  135. package/public/scripts/system-messages.js +181 -0
  136. package/public/scripts/tags.js +188 -9
  137. package/public/scripts/templates/dataMaidCategory.html +68 -0
  138. package/public/scripts/templates/dataMaidDialog.html +25 -0
  139. package/public/scripts/templates/importCharacters.html +3 -1
  140. package/public/scripts/templates/secretKeyManager.html +27 -0
  141. package/public/scripts/templates/secretKeyManagerListItem.html +30 -0
  142. package/public/scripts/templates/themeDelete.html +1 -1
  143. package/public/scripts/templates/wandButton.html +1 -1
  144. package/public/scripts/templates/welcomePanel.html +8 -0
  145. package/public/scripts/textgen-models.js +13 -8
  146. package/public/scripts/textgen-settings.js +196 -7
  147. package/public/scripts/tokenizers.js +4 -25
  148. package/public/scripts/tool-calling.js +23 -4
  149. package/public/scripts/utils.js +150 -24
  150. package/public/scripts/variables.js +6 -6
  151. package/public/scripts/welcome-screen.js +241 -10
  152. package/public/scripts/world-info.js +1019 -845
  153. package/public/style.css +255 -109
  154. package/recover.js +5 -52
  155. package/server.js +2 -0
  156. package/src/byaf.js +292 -0
  157. package/src/command-line.js +168 -84
  158. package/src/config-init.js +47 -1
  159. package/src/constants.js +32 -6
  160. package/src/electron/index.js +1 -1
  161. package/src/endpoints/avatars.js +14 -10
  162. package/src/endpoints/backends/chat-completions.js +430 -146
  163. package/src/endpoints/backgrounds.js +4 -3
  164. package/src/endpoints/characters.js +53 -38
  165. package/src/endpoints/chats.js +32 -27
  166. package/src/endpoints/content-manager.js +398 -2
  167. package/src/endpoints/data-maid.js +771 -0
  168. package/src/endpoints/extensions.js +11 -4
  169. package/src/endpoints/google.js +396 -20
  170. package/src/endpoints/groups.js +6 -5
  171. package/src/endpoints/images.js +38 -12
  172. package/src/endpoints/moving-ui.js +1 -1
  173. package/src/endpoints/openai.js +11 -1
  174. package/src/endpoints/openrouter.js +3 -0
  175. package/src/endpoints/presets.js +1 -30
  176. package/src/endpoints/quick-replies.js +2 -2
  177. package/src/endpoints/secrets.js +477 -82
  178. package/src/endpoints/settings.js +6 -6
  179. package/src/endpoints/speech.js +62 -0
  180. package/src/endpoints/sprites.js +2 -2
  181. package/src/endpoints/stable-diffusion.js +130 -20
  182. package/src/endpoints/themes.js +3 -3
  183. package/src/endpoints/thumbnails.js +18 -7
  184. package/src/endpoints/tokenizers.js +3 -0
  185. package/src/endpoints/vectors.js +12 -3
  186. package/src/endpoints/worldinfo.js +2 -2
  187. package/src/fetch-patch.js +1 -51
  188. package/src/middleware/accessLogWriter.js +1 -1
  189. package/src/middleware/cacheBuster.js +92 -10
  190. package/src/middleware/validateFileName.js +10 -1
  191. package/src/prompt-converters.js +179 -31
  192. package/src/recover-password.js +65 -0
  193. package/src/server-global.js +5 -0
  194. package/src/server-main.js +69 -38
  195. package/src/server-startup.js +2 -2
  196. package/src/types/byaf.d.ts +77 -0
  197. package/src/types/spec-v2.d.ts +52 -0
  198. package/src/users.js +4 -2
  199. package/src/util.js +130 -1
  200. package/src/vectors/google-vectors.js +101 -0
  201. package/tests/package-lock.json +171 -12
  202. package/webpack.config.js +5 -4
  203. package/src/endpoints/backends/scale-alt.js +0 -97
  204. package/src/vectors/makersuite-vectors.js +0 -59
package/.dockerignore CHANGED
@@ -14,3 +14,4 @@ access.log
14
14
  .DS_Store
15
15
  /public/scripts/extensions/third-party
16
16
  /colab
17
+ .gemini
package/Dockerfile CHANGED
@@ -1,4 +1,4 @@
1
- FROM node:lts-alpine3.19
1
+ FROM node:lts-alpine3.21
2
2
 
3
3
  # Arguments
4
4
  ARG APP_HOME=/home/node/app
@@ -19,7 +19,7 @@ RUN \
19
19
  echo "*** Install npm packages ***" && \
20
20
  npm i --no-audit --no-fund --loglevel=error --no-progress --omit=dev && npm cache clean --force
21
21
 
22
- # Copy default chats, characters and user avatars to <folder>.default folder
22
+ # Create config directory and link config.yaml
23
23
  RUN \
24
24
  rm -f "config.yaml" || true && \
25
25
  ln -s "./config/config.yaml" "config.yaml" || true && \
@@ -30,7 +30,7 @@ RUN \
30
30
  echo "*** Run Webpack ***" && \
31
31
  node "./docker/build-lib.js"
32
32
 
33
- # Cleanup unnecessary files
33
+ # Set the entrypoint script
34
34
  RUN \
35
35
  echo "*** Cleanup ***" && \
36
36
  mv "./docker/docker-entrypoint.sh" "./" && \
package/config.yaml CHANGED
@@ -16,16 +16,28 @@ protocol:
16
16
  ipv6: false
17
17
  # Prefers IPv6 for DNS. Enable this on ISPs that don't have issues with IPv6
18
18
  dnsPreferIPv6: false
19
- # The hostname that autorun opens.
20
- # - Use "auto" to let the server decide
21
- # - Use options like 'localhost', 'st.example.com'
22
- autorunHostname: "auto"
19
+ # -- BROWSER LAUNCH CONFIGURATION --
20
+ browserLaunch:
21
+ # Open the browser automatically on server startup.
22
+ enabled: true
23
+ # Browser to use for opening the URL.
24
+ # NOT SUPPORTED ON ANDROID DEVICES.
25
+ # - Use "default" to use the system default browser
26
+ # - Use "firefox", "chrome", "edge"
27
+ browser: 'default'
28
+ # Overrides the hostname that opens in the browser.
29
+ # - Use "auto" to let the server decide
30
+ # - Use options like 'localhost', 'st.example.com'
31
+ hostname: 'auto'
32
+ # Overrides the port for run in the browser.
33
+ # - Use -1 to use the server port.
34
+ # - Specify a port to override the default.
35
+ port: -1
36
+ # Avoids using 'localhost' as the hostname in auto mode.
37
+ # Use if you don't have 'localhost' in your hosts file
38
+ avoidLocalhost: false
23
39
  # Server port
24
40
  port: 8000
25
- # Overrides the port for autorun in browser.
26
- # - Use -1 to use the server port.
27
- # - Specify a port to override the default.
28
- autorunPortOverride: -1
29
41
  # -- SSL options --
30
42
  ssl:
31
43
  enabled: false
@@ -70,7 +82,7 @@ enableDiscreetLogin: false
70
82
  # https://www.authelia.com/
71
83
  # This will use auto login to an account with the same username
72
84
  # as that used for authlia. (Ensure the username in authlia
73
- # is an exact match with that in sillytavern)
85
+ # is an exact match in lowercase with that in sillytavern)
74
86
  autheliaAuth: false
75
87
  # If `basicAuthMode` and this are enabled then
76
88
  # the username and passwords for basic auth are the same as those
@@ -88,7 +100,7 @@ disableCsrfProtection: false
88
100
  securityOverride: false
89
101
  # -- LOGGING CONFIGURATION --
90
102
  logging:
91
- # Enable access logging to access.log file
103
+ # Enable access logging to access.log file and console output
92
104
  # Records new connections with timestamp, IP address and user agent
93
105
  enableAccessLog: true
94
106
  # Minimum log level to display in the terminal (DEBUG = 0, INFO = 1, WARN = 2, ERROR = 3)
@@ -98,12 +110,6 @@ rateLimiting:
98
110
  # Use X-Real-IP header instead of socket IP for rate limiting
99
111
  # Only enable this if you are using a properly configured reverse proxy (like Nginx/traefik/Caddy)
100
112
  preferRealIpHeader: false
101
- # -- ADVANCED CONFIGURATION --
102
- # Open the browser automatically
103
- autorun: true
104
- # Avoids using 'localhost' for autorun in auto mode.
105
- # use if you don't have 'localhost' in your hosts file
106
- avoidLocalhost: false
107
113
 
108
114
  ## BACKUP CONFIGURATION
109
115
  backups:
@@ -133,7 +139,7 @@ thumbnails:
133
139
  # JPG thumbnail quality (0-100)
134
140
  quality: 95
135
141
  # Maximum thumbnail dimensions per type [width, height]
136
- dimensions: { 'bg': [160, 90], 'avatar': [96, 144] }
142
+ dimensions: { 'bg': [160, 90], 'avatar': [96, 144], 'persona': [96, 144] }
137
143
 
138
144
  # PERFORMANCE-RELATED CONFIGURATION
139
145
  performance:
@@ -145,6 +151,15 @@ performance:
145
151
  # Enables disk caching for character cards. Improves performances with large card libraries.
146
152
  useDiskCache: true
147
153
 
154
+ # CACHE BUSTER CONFIGURATION
155
+ # IMPORTANT: Requires localhost or a domain with HTTPS, otherwise will not work!
156
+ cacheBuster:
157
+ # Clear browser cache on first load or after uploading image files
158
+ enabled: false
159
+ # Only clear cache for the specified user agent regex pattern
160
+ # Example: 'firefox|safari' (case-insensitive)
161
+ userAgentPattern: ''
162
+
148
163
  # Allow secret keys exposure via API
149
164
  allowKeysExposure: false
150
165
  # Skip new default content checks
@@ -16,16 +16,28 @@ protocol:
16
16
  ipv6: false
17
17
  # Prefers IPv6 for DNS. Enable this on ISPs that don't have issues with IPv6
18
18
  dnsPreferIPv6: false
19
- # The hostname that autorun opens.
20
- # - Use "auto" to let the server decide
21
- # - Use options like 'localhost', 'st.example.com'
22
- autorunHostname: "auto"
19
+ # -- BROWSER LAUNCH CONFIGURATION --
20
+ browserLaunch:
21
+ # Open the browser automatically on server startup.
22
+ enabled: true
23
+ # Browser to use for opening the URL.
24
+ # NOT SUPPORTED ON ANDROID DEVICES.
25
+ # - Use "default" to use the system default browser
26
+ # - Use "firefox", "chrome", "edge"
27
+ browser: 'default'
28
+ # Overrides the hostname that opens in the browser.
29
+ # - Use "auto" to let the server decide
30
+ # - Use options like 'localhost', 'st.example.com'
31
+ hostname: 'auto'
32
+ # Overrides the port for run in the browser.
33
+ # - Use -1 to use the server port.
34
+ # - Specify a port to override the default.
35
+ port: -1
36
+ # Avoids using 'localhost' as the hostname in auto mode.
37
+ # Use if you don't have 'localhost' in your hosts file
38
+ avoidLocalhost: false
23
39
  # Server port
24
40
  port: 8000
25
- # Overrides the port for autorun in browser.
26
- # - Use -1 to use the server port.
27
- # - Specify a port to override the default.
28
- autorunPortOverride: -1
29
41
  # -- SSL options --
30
42
  ssl:
31
43
  enabled: false
@@ -70,7 +82,7 @@ enableDiscreetLogin: false
70
82
  # https://www.authelia.com/
71
83
  # This will use auto login to an account with the same username
72
84
  # as that used for authlia. (Ensure the username in authlia
73
- # is an exact match with that in sillytavern)
85
+ # is an exact match in lowercase with that in sillytavern)
74
86
  autheliaAuth: false
75
87
  # If `basicAuthMode` and this are enabled then
76
88
  # the username and passwords for basic auth are the same as those
@@ -88,7 +100,7 @@ disableCsrfProtection: false
88
100
  securityOverride: false
89
101
  # -- LOGGING CONFIGURATION --
90
102
  logging:
91
- # Enable access logging to access.log file
103
+ # Enable access logging to access.log file and console output
92
104
  # Records new connections with timestamp, IP address and user agent
93
105
  enableAccessLog: true
94
106
  # Minimum log level to display in the terminal (DEBUG = 0, INFO = 1, WARN = 2, ERROR = 3)
@@ -98,12 +110,6 @@ rateLimiting:
98
110
  # Use X-Real-IP header instead of socket IP for rate limiting
99
111
  # Only enable this if you are using a properly configured reverse proxy (like Nginx/traefik/Caddy)
100
112
  preferRealIpHeader: false
101
- # -- ADVANCED CONFIGURATION --
102
- # Open the browser automatically
103
- autorun: true
104
- # Avoids using 'localhost' for autorun in auto mode.
105
- # use if you don't have 'localhost' in your hosts file
106
- avoidLocalhost: false
107
113
 
108
114
  ## BACKUP CONFIGURATION
109
115
  backups:
@@ -133,7 +139,7 @@ thumbnails:
133
139
  # JPG thumbnail quality (0-100)
134
140
  quality: 95
135
141
  # Maximum thumbnail dimensions per type [width, height]
136
- dimensions: { 'bg': [160, 90], 'avatar': [96, 144] }
142
+ dimensions: { 'bg': [160, 90], 'avatar': [96, 144], 'persona': [96, 144] }
137
143
 
138
144
  # PERFORMANCE-RELATED CONFIGURATION
139
145
  performance:
@@ -145,6 +151,15 @@ performance:
145
151
  # Enables disk caching for character cards. Improves performances with large card libraries.
146
152
  useDiskCache: true
147
153
 
154
+ # CACHE BUSTER CONFIGURATION
155
+ # IMPORTANT: Requires localhost or a domain with HTTPS, otherwise will not work!
156
+ cacheBuster:
157
+ # Clear browser cache on first load or after uploading image files
158
+ enabled: false
159
+ # Only clear cache for the specified user agent regex pattern
160
+ # Example: 'firefox|safari' (case-insensitive)
161
+ userAgentPattern: ''
162
+
148
163
  # Allow secret keys exposure via API
149
164
  allowKeysExposure: false
150
165
  # Skip new default content checks
@@ -687,6 +687,10 @@
687
687
  "filename": "presets/instruct/ChatML-Names.json",
688
688
  "type": "instruct"
689
689
  },
690
+ {
691
+ "filename": "presets/instruct/KoboldAI.json",
692
+ "type": "instruct"
693
+ },
690
694
  {
691
695
  "filename": "presets/context/Llama-3-Instruct-Names.json",
692
696
  "type": "context"
@@ -810,5 +814,29 @@
810
814
  {
811
815
  "filename": "presets/reasoning/Blank.json",
812
816
  "type": "reasoning"
817
+ },
818
+ {
819
+ "filename": "presets/instruct/Dots1.json",
820
+ "type": "instruct"
821
+ },
822
+ {
823
+ "filename": "presets/context/Dots1.json",
824
+ "type": "context"
825
+ },
826
+ {
827
+ "filename": "presets/context/Mistral V7-Tekken.json",
828
+ "type": "context"
829
+ },
830
+ {
831
+ "filename": "presets/instruct/Mistral V7-Tekken.json",
832
+ "type": "instruct"
833
+ },
834
+ {
835
+ "filename": "presets/instruct/Moonshot AI.json",
836
+ "type": "instruct"
837
+ },
838
+ {
839
+ "filename": "presets/context/Moonshot AI.json",
840
+ "type": "context"
813
841
  }
814
842
  ]
@@ -0,0 +1,11 @@
1
+ {
2
+ "story_string": "<|system|>\n{{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{char}}'s personality: {{personality}}\n{{/if}}{{#if scenario}}Scenario: {{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}{{trim}}<|endofsystem|>",
3
+ "example_separator": "",
4
+ "chat_start": "",
5
+ "use_stop_strings": false,
6
+ "names_as_stop_strings": true,
7
+ "always_force_name2": true,
8
+ "trim_sentences": false,
9
+ "single_line": false,
10
+ "name": "Dots1"
11
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "story_string": "[SYSTEM_PROMPT]{{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{personality}}\n{{/if}}{{#if scenario}}{{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}{{trim}}[/SYSTEM_PROMPT]",
3
+ "example_separator": "",
4
+ "chat_start": "",
5
+ "use_stop_strings": false,
6
+ "always_force_name2": true,
7
+ "trim_sentences": false,
8
+ "single_line": false,
9
+ "name": "Mistral V7-Tekken"
10
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "story_string": "<|im_system|>system<|im_middle|>{{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{char}}'s personality: {{personality}}\n{{/if}}{{#if scenario}}Scenario: {{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}{{trim}}<|im_end|>",
3
+ "example_separator": "",
4
+ "chat_start": "",
5
+ "use_stop_strings": false,
6
+ "names_as_stop_strings": true,
7
+ "always_force_name2": true,
8
+ "trim_sentences": false,
9
+ "single_line": false,
10
+ "name": "Moonshot AI"
11
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "input_sequence": "<|userprompt|>",
3
+ "output_sequence": "<|response|>",
4
+ "last_output_sequence": "",
5
+ "system_sequence": "<|system|>",
6
+ "stop_sequence": "<|endofresponse|>",
7
+ "wrap": true,
8
+ "macro": true,
9
+ "names_behavior": "force",
10
+ "activation_regex": "",
11
+ "system_sequence_prefix": "",
12
+ "system_sequence_suffix": "",
13
+ "first_output_sequence": "",
14
+ "skip_examples": false,
15
+ "output_suffix": "<|endofresponse|>\n",
16
+ "input_suffix": "<|endofuserprompt|>\n",
17
+ "system_suffix": "<|endofsystem|>\n",
18
+ "user_alignment_message": "",
19
+ "system_same_as_user": false,
20
+ "last_system_sequence": "",
21
+ "first_input_sequence": "",
22
+ "last_input_sequence": "",
23
+ "name": "Dots1"
24
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "input_sequence": "{{[INPUT]}}",
3
+ "output_sequence": "{{[OUPUT]}}",
4
+ "last_output_sequence": "",
5
+ "system_sequence": "{{[SYSTEM]}}",
6
+ "stop_sequence": "",
7
+ "wrap": true,
8
+ "macro": true,
9
+ "names_behavior": "force",
10
+ "activation_regex": "",
11
+ "system_sequence_prefix": "",
12
+ "system_sequence_suffix": "",
13
+ "first_output_sequence": "",
14
+ "skip_examples": false,
15
+ "output_suffix": "{{[OUTPUT_END]}}",
16
+ "input_suffix": "{{[INPUT_END]}}",
17
+ "system_suffix": "{{[SYSTEM_END]}}",
18
+ "user_alignment_message": "",
19
+ "system_same_as_user": false,
20
+ "last_system_sequence": "",
21
+ "name": "KoboldAI"
22
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "input_sequence": "[INST]",
3
+ "output_sequence": " ",
4
+ "last_output_sequence": "",
5
+ "system_sequence": "[SYSTEM_PROMPT]",
6
+ "stop_sequence": "</s>",
7
+ "wrap": false,
8
+ "macro": true,
9
+ "names_behavior": "force",
10
+ "activation_regex": "",
11
+ "system_sequence_prefix": "",
12
+ "system_sequence_suffix": "",
13
+ "first_output_sequence": "",
14
+ "skip_examples": false,
15
+ "output_suffix": "</s>",
16
+ "input_suffix": "[/INST]",
17
+ "system_suffix": "[/SYSTEM_PROMPT]",
18
+ "user_alignment_message": "",
19
+ "system_same_as_user": false,
20
+ "last_system_sequence": "",
21
+ "name": "Mistral V7-Tekken"
22
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "input_sequence": "<|im_user|>user<|im_middle|>",
3
+ "output_sequence": "<|im_assistant|>assistant<|im_middle|>",
4
+ "last_output_sequence": "",
5
+ "system_sequence": "<|im_system|>system<|im_middle|>",
6
+ "stop_sequence": "<|im_end|>",
7
+ "wrap": false,
8
+ "macro": true,
9
+ "activation_regex": "",
10
+ "system_sequence_prefix": "",
11
+ "system_sequence_suffix": "",
12
+ "first_output_sequence": "",
13
+ "skip_examples": false,
14
+ "output_suffix": "<|im_end|>",
15
+ "input_suffix": "<|im_end|>",
16
+ "system_suffix": "<|im_end|>",
17
+ "user_alignment_message": "",
18
+ "system_same_as_user": false,
19
+ "last_system_sequence": "",
20
+ "first_input_sequence": "",
21
+ "last_input_sequence": "",
22
+ "names_behavior": "force",
23
+ "name": "Moonshot AI"
24
+ }
@@ -2,12 +2,11 @@
2
2
  "chat_completion_source": "openai",
3
3
  "openai_model": "gpt-4-turbo",
4
4
  "claude_model": "claude-3-5-sonnet-20240620",
5
- "windowai_model": "",
6
5
  "openrouter_model": "OR_Website",
7
6
  "openrouter_use_fallback": false,
8
7
  "openrouter_group_models": false,
9
8
  "openrouter_sort_models": "alphabetically",
10
- "ai21_model": "jamba-1.5-large",
9
+ "ai21_model": "jamba-large",
11
10
  "mistralai_model": "mistral-large-latest",
12
11
  "custom_model": "",
13
12
  "custom_url": "",
@@ -226,12 +225,10 @@
226
225
  ]
227
226
  }
228
227
  ],
229
- "api_url_scale": "",
230
228
  "show_external_models": false,
231
229
  "assistant_prefill": "",
232
230
  "assistant_impersonation": "",
233
231
  "claude_use_sysprompt": false,
234
- "use_alt_scale": false,
235
232
  "squash_system_messages": false,
236
233
  "image_inlining": false,
237
234
  "bypass_status_check": false,
@@ -623,8 +623,7 @@
623
623
  "wi_format": "{0}",
624
624
  "openai_model": "gpt-4-turbo",
625
625
  "claude_model": "claude-3-5-sonnet-20240620",
626
- "ai21_model": "jamba-1.5-large",
627
- "windowai_model": "",
626
+ "ai21_model": "jamba-large",
628
627
  "openrouter_model": "OR_Website",
629
628
  "reverse_proxy": "",
630
629
  "chat_completion_source": "openai",
package/index.d.ts CHANGED
@@ -66,4 +66,9 @@ declare global {
66
66
  * Parsed command line arguments.
67
67
  */
68
68
  var COMMAND_LINE_ARGS: CommandLineArguments;
69
+
70
+ /**
71
+ * Forces a global mode if set to `true` before parsing the CLI arguments.
72
+ */
73
+ var FORCE_GLOBAL_MODE: boolean;
69
74
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "dependencies": {
3
- "@adobe/css-tools": "^4.4.2",
3
+ "@adobe/css-tools": "^4.4.3",
4
4
  "@agnai/sentencepiece-js": "^1.1.1",
5
5
  "@agnai/web-tokenizers": "^0.1.3",
6
6
  "@iconfu/svg-inject": "^1.2.3",
@@ -30,30 +30,31 @@
30
30
  "@popperjs/core": "^2.11.8",
31
31
  "@zeldafan0225/ai_horde": "^5.2.0",
32
32
  "archiver": "^7.0.1",
33
- "bing-translate-api": "^4.0.2",
33
+ "bing-translate-api": "^4.1.0",
34
34
  "body-parser": "^1.20.2",
35
35
  "bowser": "^2.11.0",
36
36
  "bytes": "^3.1.2",
37
37
  "chalk": "^5.4.1",
38
38
  "command-exists": "^1.2.9",
39
- "compression": "^1.8.0",
39
+ "compression": "^1.8.1",
40
40
  "cookie-parser": "^1.4.6",
41
- "cookie-session": "^2.1.0",
41
+ "cookie-session": "^2.1.1",
42
42
  "cors": "^2.8.5",
43
43
  "crc": "^4.3.2",
44
- "csrf-sync": "^4.0.3",
44
+ "csrf-sync": "^4.2.1",
45
45
  "diff-match-patch": "^1.0.5",
46
- "dompurify": "^3.2.4",
46
+ "dompurify": "^3.2.6",
47
47
  "droll": "^0.2.1",
48
+ "env-paths": "^3.0.0",
48
49
  "express": "^4.21.0",
49
- "form-data": "^4.0.2",
50
+ "form-data": "^4.0.4",
50
51
  "fuse.js": "^7.1.0",
51
52
  "google-translate-api-browser": "^3.0.1",
52
53
  "google-translate-api-x": "^10.7.2",
53
54
  "handlebars": "^4.7.8",
54
- "helmet": "^7.2.0",
55
+ "helmet": "^8.1.0",
55
56
  "highlight.js": "^11.11.1",
56
- "html-entities": "^2.5.2",
57
+ "html-entities": "^2.6.0",
57
58
  "iconv-lite": "^0.6.3",
58
59
  "ip-matching": "^2.1.2",
59
60
  "ip-regex": "^5.0.0",
@@ -61,34 +62,34 @@
61
62
  "is-docker": "^3.0.0",
62
63
  "localforage": "^1.10.0",
63
64
  "lodash": "^4.17.21",
64
- "mime-types": "^2.1.35",
65
+ "mime-types": "^3.0.1",
65
66
  "moment": "^2.30.1",
66
- "morphdom": "^2.7.4",
67
- "multer": "^2.0.0",
67
+ "morphdom": "^2.7.5",
68
+ "multer": "^2.0.2",
68
69
  "node-fetch": "^3.3.2",
69
70
  "node-persist": "^4.0.4",
70
- "open": "^8.4.2",
71
+ "open": "^10.2.0",
71
72
  "png-chunk-text": "^1.0.0",
72
73
  "png-chunks-extract": "^1.0.0",
73
74
  "proxy-agent": "^6.5.0",
74
75
  "rate-limiter-flexible": "^5.0.5",
75
- "response-time": "^2.3.3",
76
+ "response-time": "^2.3.4",
76
77
  "sanitize-filename": "^1.6.3",
77
78
  "seedrandom": "^3.0.5",
78
79
  "showdown": "^2.1.0",
79
80
  "sillytavern-transformers": "2.14.6",
80
- "simple-git": "^3.27.0",
81
+ "simple-git": "^3.28.0",
81
82
  "slidetoggle": "^4.0.0",
82
- "tiktoken": "^1.0.20",
83
+ "tiktoken": "^1.0.21",
83
84
  "url-join": "^5.0.0",
84
85
  "vectra": "^0.2.2",
85
86
  "wavefile": "^11.0.0",
86
87
  "webpack": "^5.98.0",
87
88
  "write-file-atomic": "^5.0.1",
88
- "ws": "^8.18.1",
89
- "yaml": "^2.7.0",
89
+ "ws": "^8.18.3",
90
+ "yaml": "^2.8.0",
90
91
  "yargs": "^17.7.1",
91
- "yauzl": "^2.10.0"
92
+ "yauzl": "^3.2.0"
92
93
  },
93
94
  "engines": {
94
95
  "node": ">= 18"
@@ -111,10 +112,11 @@
111
112
  "type": "git",
112
113
  "url": "https://github.com/SillyTavern/SillyTavern.git"
113
114
  },
114
- "version": "1.13.0",
115
+ "version": "1.13.2",
115
116
  "scripts": {
116
117
  "start": "node server.js",
117
118
  "debug": "node --inspect server.js",
119
+ "start:global": "node server.js --global",
118
120
  "start:electron": "cd ./src/electron && npm run start",
119
121
  "start:deno": "deno run --allow-run --allow-net --allow-read --allow-write --allow-sys --allow-env server.js",
120
122
  "start:bun": "bun server.js",
@@ -126,7 +128,7 @@
126
128
  "plugins:install": "node plugins install"
127
129
  },
128
130
  "bin": {
129
- "sillytavern": "./server.js"
131
+ "sillytavern": "./src/server-global.js"
130
132
  },
131
133
  "rules": {
132
134
  "no-path-concat": "off",
@@ -137,24 +139,24 @@
137
139
  "@types/archiver": "^6.0.3",
138
140
  "@types/bytes": "^3.1.5",
139
141
  "@types/command-exists": "^1.2.3",
140
- "@types/compression": "^1.7.5",
141
- "@types/cookie-parser": "^1.4.8",
142
+ "@types/compression": "^1.8.1",
143
+ "@types/cookie-parser": "^1.4.9",
142
144
  "@types/cookie-session": "^2.0.49",
143
- "@types/cors": "^2.8.17",
144
- "@types/deno": "^2.2.0",
145
- "@types/express": "^4.17.21",
145
+ "@types/cors": "^2.8.19",
146
+ "@types/deno": "^2.3.0",
147
+ "@types/express": "^4.17.23",
146
148
  "@types/jquery": "^3.5.32",
147
149
  "@types/jquery-cropper": "^1.0.4",
148
150
  "@types/jquery.transit": "^0.9.33",
149
151
  "@types/jqueryui": "^1.12.24",
150
- "@types/lodash": "^4.17.16",
151
- "@types/mime-types": "^2.1.4",
152
- "@types/multer": "^1.4.12",
153
- "@types/node": "^18.19.80",
152
+ "@types/lodash": "^4.17.20",
153
+ "@types/mime-types": "^3.0.1",
154
+ "@types/multer": "^2.0.0",
155
+ "@types/node": "^18.19.84",
154
156
  "@types/node-persist": "^3.1.8",
155
157
  "@types/png-chunk-text": "^1.0.3",
156
158
  "@types/png-chunks-extract": "^1.0.2",
157
- "@types/response-time": "^2.3.8",
159
+ "@types/response-time": "^2.3.9",
158
160
  "@types/select2": "^4.0.63",
159
161
  "@types/toastr": "^2.1.43",
160
162
  "@types/write-file-atomic": "^4.0.3",
@@ -55,6 +55,7 @@
55
55
 
56
56
  /* Flashing for highlighting animation */
57
57
  @keyframes flash {
58
+
58
59
  0%,
59
60
  50%,
60
61
  100% {
@@ -122,3 +123,12 @@
122
123
  border-top-color: var(--progFlashColor);
123
124
  }
124
125
  }
126
+
127
+ /* Scroll delay animations */
128
+ @keyframes hide-scroll {
129
+
130
+ from,
131
+ to {
132
+ overflow-y: hidden;
133
+ }
134
+ }
@@ -1,5 +1,5 @@
1
1
  #rm_print_characters_block.group_overlay_mode_select .character_select {
2
- transition: background-color 0.4s ease;
2
+ transition: background-color var(--animation-duration-3x) ease;
3
3
  background-color: rgba(170, 170, 170, 0.15);
4
4
  }
5
5