sillytavern 1.12.4 → 1.12.5

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 (140) hide show
  1. package/.eslintrc.js +1 -0
  2. package/CONTRIBUTING.md +5 -0
  3. package/config.yaml +39 -5
  4. package/default/config.yaml +39 -5
  5. package/default/content/presets/openai/Default.json +4 -4
  6. package/default/content/settings.json +3 -3
  7. package/index.d.ts +5 -0
  8. package/package.json +4 -3
  9. package/public/css/character-group-overlay.css +1 -1
  10. package/public/css/extensions-panel.css +2 -1
  11. package/public/css/tags.css +6 -6
  12. package/public/css/world-info.css +12 -0
  13. package/public/global.d.ts +5 -0
  14. package/public/img/blockentropy.svg +3 -0
  15. package/public/img/step-into.svg +149 -0
  16. package/public/img/step-out.svg +149 -0
  17. package/public/img/step-over.svg +149 -0
  18. package/public/img/step-resume.svg +218 -0
  19. package/public/index.html +140 -53
  20. package/public/locales/ar-sa.json +2 -2
  21. package/public/locales/de-de.json +2 -2
  22. package/public/locales/es-es.json +2 -2
  23. package/public/locales/fr-fr.json +2 -2
  24. package/public/locales/is-is.json +2 -2
  25. package/public/locales/it-it.json +2 -2
  26. package/public/locales/ja-jp.json +2 -2
  27. package/public/locales/ko-kr.json +2 -2
  28. package/public/locales/nl-nl.json +1 -1
  29. package/public/locales/pt-pt.json +2 -2
  30. package/public/locales/ru-ru.json +2 -2
  31. package/public/locales/uk-ua.json +2 -2
  32. package/public/locales/vi-vn.json +2 -2
  33. package/public/locales/zh-cn.json +39 -8
  34. package/public/locales/zh-tw.json +2 -2
  35. package/public/script.js +229 -220
  36. package/public/scripts/BulkEditOverlay.js +34 -4
  37. package/public/scripts/RossAscends-mods.js +8 -4
  38. package/public/scripts/autocomplete/AutoComplete.js +71 -48
  39. package/public/scripts/autocomplete/AutoCompleteNameResult.js +3 -30
  40. package/public/scripts/autocomplete/AutoCompleteNameResultBase.js +31 -0
  41. package/public/scripts/autocomplete/AutoCompleteOption.js +11 -1
  42. package/public/scripts/autocomplete/AutoCompleteSecondaryNameResult.js +2 -2
  43. package/public/scripts/extensions/caption/index.js +7 -3
  44. package/public/scripts/extensions/caption/settings.html +6 -1
  45. package/public/scripts/extensions/expressions/index.js +2 -2
  46. package/public/scripts/extensions/memory/index.js +173 -33
  47. package/public/scripts/extensions/memory/settings.html +13 -3
  48. package/public/scripts/extensions/quick-reply/api/QuickReplyApi.js +94 -66
  49. package/public/scripts/extensions/quick-reply/html/qrEditor.html +38 -8
  50. package/public/scripts/extensions/quick-reply/html/settings.html +13 -0
  51. package/public/scripts/extensions/quick-reply/index.js +8 -2
  52. package/public/scripts/extensions/quick-reply/lib/morphdom-esm.js +769 -0
  53. package/public/scripts/extensions/quick-reply/lib/morphdom.LICENSE.txt +21 -0
  54. package/public/scripts/extensions/quick-reply/src/AutoExecuteHandler.js +9 -0
  55. package/public/scripts/extensions/quick-reply/src/QuickReply.js +1285 -87
  56. package/public/scripts/extensions/quick-reply/src/QuickReplyConfig.js +6 -1
  57. package/public/scripts/extensions/quick-reply/src/QuickReplySet.js +191 -20
  58. package/public/scripts/extensions/quick-reply/src/QuickReplySetLink.js +1 -1
  59. package/public/scripts/extensions/quick-reply/src/QuickReplySettings.js +2 -0
  60. package/public/scripts/extensions/quick-reply/src/SlashCommandHandler.js +259 -18
  61. package/public/scripts/extensions/quick-reply/src/ui/ButtonUi.js +14 -11
  62. package/public/scripts/extensions/quick-reply/src/ui/SettingsUi.js +64 -3
  63. package/public/scripts/extensions/quick-reply/src/ui/ctx/ContextMenu.js +5 -0
  64. package/public/scripts/extensions/quick-reply/src/ui/ctx/MenuHeader.js +1 -1
  65. package/public/scripts/extensions/quick-reply/src/ui/ctx/MenuItem.js +34 -7
  66. package/public/scripts/extensions/quick-reply/style.css +604 -20
  67. package/public/scripts/extensions/quick-reply/style.less +666 -126
  68. package/public/scripts/extensions/regex/editor.html +15 -22
  69. package/public/scripts/extensions/shared.js +89 -2
  70. package/public/scripts/extensions/stable-diffusion/button.html +6 -2
  71. package/public/scripts/extensions/stable-diffusion/index.js +297 -68
  72. package/public/scripts/extensions/stable-diffusion/settings.html +10 -2
  73. package/public/scripts/extensions/token-counter/index.js +4 -3
  74. package/public/scripts/extensions/translate/buttons.html +3 -3
  75. package/public/scripts/extensions/translate/index.js +13 -2
  76. package/public/scripts/extensions/tts/azure.js +14 -2
  77. package/public/scripts/extensions/tts/index.js +16 -9
  78. package/public/scripts/extensions/tts/openai-compatible.js +193 -0
  79. package/public/scripts/extensions/tts/system.js +1 -1
  80. package/public/scripts/extensions/vectors/index.js +75 -13
  81. package/public/scripts/extensions/vectors/settings.html +8 -11
  82. package/public/scripts/extensions.js +49 -22
  83. package/public/scripts/instruct-mode.js +2 -2
  84. package/public/scripts/openai.js +138 -29
  85. package/public/scripts/popup.js +32 -8
  86. package/public/scripts/power-user.js +76 -15
  87. package/public/scripts/samplerSelect.js +136 -140
  88. package/public/scripts/secrets.js +4 -1
  89. package/public/scripts/showdown-underscore.js +13 -3
  90. package/public/scripts/slash-commands/SlashCommand.js +78 -35
  91. package/public/scripts/slash-commands/SlashCommandArgument.js +8 -5
  92. package/public/scripts/slash-commands/SlashCommandAutoCompleteNameResult.js +19 -9
  93. package/public/scripts/slash-commands/SlashCommandBreak.js +7 -0
  94. package/public/scripts/slash-commands/SlashCommandBreakController.js +7 -0
  95. package/public/scripts/slash-commands/SlashCommandBreakPoint.js +3 -0
  96. package/public/scripts/slash-commands/SlashCommandClosure.js +292 -98
  97. package/public/scripts/slash-commands/SlashCommandClosureResult.js +1 -0
  98. package/public/scripts/slash-commands/SlashCommandCommonEnumsProvider.js +6 -5
  99. package/public/scripts/slash-commands/SlashCommandDebugController.js +83 -0
  100. package/public/scripts/slash-commands/SlashCommandEnumAutoCompleteOption.js +12 -1
  101. package/public/scripts/slash-commands/SlashCommandEnumValue.js +16 -4
  102. package/public/scripts/slash-commands/SlashCommandExecutionError.js +60 -0
  103. package/public/scripts/slash-commands/SlashCommandExecutor.js +12 -0
  104. package/public/scripts/slash-commands/SlashCommandParser.js +321 -26
  105. package/public/scripts/slash-commands/SlashCommandScope.js +5 -3
  106. package/public/scripts/slash-commands.js +359 -50
  107. package/public/scripts/tags.js +68 -42
  108. package/public/scripts/templates/installExtension.html +7 -0
  109. package/public/scripts/templates/tabbyDownloader.html +2 -2
  110. package/public/scripts/templates/welcome.html +1 -1
  111. package/public/scripts/templates/worldInfoKeywordHeaders.html +8 -0
  112. package/public/scripts/textgen-models.js +29 -2
  113. package/public/scripts/textgen-settings.js +39 -8
  114. package/public/scripts/tokenizers.js +71 -3
  115. package/public/scripts/utils.js +113 -9
  116. package/public/scripts/variables.js +93 -46
  117. package/public/scripts/world-info.js +250 -208
  118. package/public/style.css +154 -6
  119. package/server.js +212 -31
  120. package/src/additional-headers.js +3 -4
  121. package/src/constants.js +11 -0
  122. package/src/endpoints/anthropic.js +1 -1
  123. package/src/endpoints/backends/chat-completions.js +31 -15
  124. package/src/endpoints/backends/text-completions.js +3 -2
  125. package/src/endpoints/content-manager.js +1 -1
  126. package/src/endpoints/google.js +1 -1
  127. package/src/endpoints/images.js +1 -1
  128. package/src/endpoints/openai.js +52 -1
  129. package/src/endpoints/secrets.js +2 -0
  130. package/src/endpoints/stable-diffusion.js +125 -0
  131. package/src/endpoints/tokenizers.js +29 -2
  132. package/src/endpoints/translate.js +6 -3
  133. package/src/prompt-converters.js +5 -0
  134. package/src/tokenizers/gemma.model +0 -0
  135. package/src/transformers.mjs +37 -4
  136. package/src/users.js +5 -11
  137. package/src/util.js +41 -3
  138. package/src/vectors/makersuite-vectors.js +4 -4
  139. package/tests/package-lock.json +3 -4
  140. package/public/scripts/slash-commands/SlashCommandClosureExecutor.js +0 -7
package/.eslintrc.js CHANGED
@@ -55,6 +55,7 @@ module.exports = {
55
55
  isProbablyReaderable: 'readonly',
56
56
  ePub: 'readonly',
57
57
  diff_match_patch: 'readonly',
58
+ SillyTavern: 'readonly',
58
59
  },
59
60
  },
60
61
  ],
package/CONTRIBUTING.md CHANGED
@@ -34,3 +34,8 @@
34
34
  - What did you do to achieve this?
35
35
  - How would a reviewer test the change?
36
36
  6. Mind the license. Your contributions will be licensed under the GNU Affero General Public License. If you don't know what that implies, consult your lawyer.
37
+
38
+ ## Further reading
39
+
40
+ 1. [How to write UI extensions](https://docs.sillytavern.app/for-contributors/writing-extensions/)
41
+ 2. [How to write server plugins](https://docs.sillytavern.app/for-contributors/server-plugins)
package/config.yaml CHANGED
@@ -4,8 +4,22 @@ dataRoot: ./data
4
4
  # -- SERVER CONFIGURATION --
5
5
  # Listen for incoming connections
6
6
  listen: false
7
+ # Enables IPv6 and/or IPv4 protocols. Need to have at least one enabled!
8
+ protocol:
9
+ ipv4: true
10
+ ipv6: false
11
+ # Prefers IPv6 for DNS. Enable this on ISPs that don't have issues with IPv6
12
+ dnsPreferIPv6: false
13
+ # The hostname that autorun opens.
14
+ # - Use "auto" to let the server decide
15
+ # - Use options like 'localhost', 'st.example.com'
16
+ autorunHostname: "auto"
7
17
  # Server port
8
18
  port: 8000
19
+ # Overrides the port for autorun in browser.
20
+ # - Use -1 to use the server port.
21
+ # - Specify a port to override the default.
22
+ autorunPortOverride: -1
9
23
  # -- SECURITY CONFIGURATION --
10
24
  # Toggle whitelist mode
11
25
  whitelistMode: true
@@ -13,6 +27,7 @@ whitelistMode: true
13
27
  enableForwardedWhitelist: true
14
28
  # Whitelist of allowed IP addresses
15
29
  whitelist:
30
+ - ::1
16
31
  - 127.0.0.1
17
32
  # Toggle basic authentication for endpoints
18
33
  basicAuthMode: false
@@ -26,6 +41,11 @@ enableCorsProxy: false
26
41
  enableUserAccounts: false
27
42
  # Enable discreet login mode: hides user list on the login screen
28
43
  enableDiscreetLogin: false
44
+ # User session timeout *in seconds* (defaults to 24 hours).
45
+ ## Set to a positive number to expire session after a certain time of inactivity
46
+ ## Set to 0 to expire session when the browser is closed
47
+ ## Set to a negative number to disable session expiration
48
+ sessionTimeout: 86400
29
49
  # Used to sign session cookies. Will be auto-generated if not set
30
50
  cookieSecret: ''
31
51
  # Disable CSRF protection - NOT RECOMMENDED
@@ -35,6 +55,9 @@ securityOverride: false
35
55
  # -- ADVANCED CONFIGURATION --
36
56
  # Open the browser automatically
37
57
  autorun: true
58
+ # Avoids using 'localhost' for autorun in auto mode.
59
+ # use if you don't have 'localhost' in your hosts file
60
+ avoidLocalhost: false
38
61
  # Disable thumbnail generation
39
62
  disableThumbnails: false
40
63
  # Thumbnail quality (0-100)
@@ -98,10 +121,21 @@ mistral:
98
121
  # Enables prefilling of the reply with the last assistant message in the prompt
99
122
  # CAUTION: The prefix is echoed into the completion. You may want to use regex to trim it out.
100
123
  enablePrefix: false
124
+ # -- OLLAMA API CONFIGURATION --
125
+ ollama:
126
+ # Controls how long the model will stay loaded into memory following the request
127
+ # * -1: Keep the model loaded indefinitely
128
+ # * 0: Unload the model immediately after the request
129
+ # * N (any positive number): Keep the model loaded for N seconds after the request.
130
+ keepAlive: -1
131
+ # -- ANTHROPIC CLAUDE API CONFIGURATION --
132
+ claude:
133
+ # Enables caching of the system prompt (if supported).
134
+ # https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching
135
+ # -- IMPORTANT! --
136
+ # Use only when the prompt before the chat history is static and doesn't change between requests
137
+ # (e.g {{random}} macro or lorebooks not as in-chat injections).
138
+ # Otherwise, you'll just waste money on cache misses.
139
+ enableSystemPromptCache: false
101
140
  # -- SERVER PLUGIN CONFIGURATION --
102
141
  enableServerPlugins: false
103
- # User session timeout *in seconds* (defaults to 24 hours).
104
- ## Set to a positive number to expire session after a certain time of inactivity
105
- ## Set to 0 to expire session when the browser is closed
106
- ## Set to a negative number to disable session expiration
107
- sessionTimeout: 86400
@@ -4,8 +4,22 @@ dataRoot: ./data
4
4
  # -- SERVER CONFIGURATION --
5
5
  # Listen for incoming connections
6
6
  listen: false
7
+ # Enables IPv6 and/or IPv4 protocols. Need to have at least one enabled!
8
+ protocol:
9
+ ipv4: true
10
+ ipv6: false
11
+ # Prefers IPv6 for DNS. Enable this on ISPs that don't have issues with IPv6
12
+ dnsPreferIPv6: false
13
+ # The hostname that autorun opens.
14
+ # - Use "auto" to let the server decide
15
+ # - Use options like 'localhost', 'st.example.com'
16
+ autorunHostname: "auto"
7
17
  # Server port
8
18
  port: 8000
19
+ # Overrides the port for autorun in browser.
20
+ # - Use -1 to use the server port.
21
+ # - Specify a port to override the default.
22
+ autorunPortOverride: -1
9
23
  # -- SECURITY CONFIGURATION --
10
24
  # Toggle whitelist mode
11
25
  whitelistMode: true
@@ -13,6 +27,7 @@ whitelistMode: true
13
27
  enableForwardedWhitelist: true
14
28
  # Whitelist of allowed IP addresses
15
29
  whitelist:
30
+ - ::1
16
31
  - 127.0.0.1
17
32
  # Toggle basic authentication for endpoints
18
33
  basicAuthMode: false
@@ -26,6 +41,11 @@ enableCorsProxy: false
26
41
  enableUserAccounts: false
27
42
  # Enable discreet login mode: hides user list on the login screen
28
43
  enableDiscreetLogin: false
44
+ # User session timeout *in seconds* (defaults to 24 hours).
45
+ ## Set to a positive number to expire session after a certain time of inactivity
46
+ ## Set to 0 to expire session when the browser is closed
47
+ ## Set to a negative number to disable session expiration
48
+ sessionTimeout: 86400
29
49
  # Used to sign session cookies. Will be auto-generated if not set
30
50
  cookieSecret: ''
31
51
  # Disable CSRF protection - NOT RECOMMENDED
@@ -35,6 +55,9 @@ securityOverride: false
35
55
  # -- ADVANCED CONFIGURATION --
36
56
  # Open the browser automatically
37
57
  autorun: true
58
+ # Avoids using 'localhost' for autorun in auto mode.
59
+ # use if you don't have 'localhost' in your hosts file
60
+ avoidLocalhost: false
38
61
  # Disable thumbnail generation
39
62
  disableThumbnails: false
40
63
  # Thumbnail quality (0-100)
@@ -98,10 +121,21 @@ mistral:
98
121
  # Enables prefilling of the reply with the last assistant message in the prompt
99
122
  # CAUTION: The prefix is echoed into the completion. You may want to use regex to trim it out.
100
123
  enablePrefix: false
124
+ # -- OLLAMA API CONFIGURATION --
125
+ ollama:
126
+ # Controls how long the model will stay loaded into memory following the request
127
+ # * -1: Keep the model loaded indefinitely
128
+ # * 0: Unload the model immediately after the request
129
+ # * N (any positive number): Keep the model loaded for N seconds after the request.
130
+ keepAlive: -1
131
+ # -- ANTHROPIC CLAUDE API CONFIGURATION --
132
+ claude:
133
+ # Enables caching of the system prompt (if supported).
134
+ # https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching
135
+ # -- IMPORTANT! --
136
+ # Use only when the prompt before the chat history is static and doesn't change between requests
137
+ # (e.g {{random}} macro or lorebooks not as in-chat injections).
138
+ # Otherwise, you'll just waste money on cache misses.
139
+ enableSystemPromptCache: false
101
140
  # -- SERVER PLUGIN CONFIGURATION --
102
141
  enableServerPlugins: false
103
- # User session timeout *in seconds* (defaults to 24 hours).
104
- ## Set to a positive number to expire session after a certain time of inactivity
105
- ## Set to 0 to expire session when the browser is closed
106
- ## Set to a negative number to disable session expiration
107
- sessionTimeout: 86400
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "chat_completion_source": "openai",
3
- "openai_model": "gpt-3.5-turbo",
4
- "claude_model": "claude-instant-v1",
3
+ "openai_model": "gpt-4-turbo",
4
+ "claude_model": "claude-3-5-sonnet-20240620",
5
5
  "windowai_model": "",
6
6
  "openrouter_model": "OR_Website",
7
7
  "openrouter_use_fallback": false,
@@ -9,7 +9,7 @@
9
9
  "openrouter_group_models": false,
10
10
  "openrouter_sort_models": "alphabetically",
11
11
  "ai21_model": "j2-ultra",
12
- "mistralai_model": "mistral-medium-latest",
12
+ "mistralai_model": "mistral-large-latest",
13
13
  "custom_model": "",
14
14
  "custom_url": "",
15
15
  "custom_include_body": "",
@@ -22,7 +22,7 @@
22
22
  "count_penalty": 0,
23
23
  "top_p": 1,
24
24
  "top_k": 0,
25
- "top_a": 1,
25
+ "top_a": 0,
26
26
  "min_p": 0,
27
27
  "repetition_penalty": 1,
28
28
  "openai_max_context": 4095,
@@ -610,9 +610,9 @@
610
610
  }
611
611
  ]
612
612
  },
613
- "wi_format": "[Details of the fictional world the RP is set in:\n{0}]\n",
614
- "openai_model": "gpt-3.5-turbo",
615
- "claude_model": "claude-instant-v1",
613
+ "wi_format": "{0}",
614
+ "openai_model": "gpt-4-turbo",
615
+ "claude_model": "claude-3-5-sonnet-20240620",
616
616
  "ai21_model": "j2-ultra",
617
617
  "windowai_model": "",
618
618
  "openrouter_model": "OR_Website",
package/index.d.ts CHANGED
@@ -9,6 +9,11 @@ declare global {
9
9
  };
10
10
  }
11
11
  }
12
+
13
+ /**
14
+ * The root directory for user data.
15
+ */
16
+ var DATA_ROOT: string;
12
17
  }
13
18
 
14
19
  declare module 'express-session' {
package/package.json CHANGED
@@ -17,6 +17,7 @@
17
17
  "google-translate-api-browser": "^3.0.1",
18
18
  "he": "^1.2.0",
19
19
  "helmet": "^7.1.0",
20
+ "iconv-lite": "^0.6.3",
20
21
  "ip-matching": "^2.1.2",
21
22
  "ipaddr.js": "^2.0.1",
22
23
  "jimp": "^0.22.10",
@@ -32,7 +33,7 @@
32
33
  "rate-limiter-flexible": "^5.0.0",
33
34
  "response-time": "^2.3.2",
34
35
  "sanitize-filename": "^1.6.3",
35
- "sillytavern-transformers": "^2.14.6",
36
+ "sillytavern-transformers": "2.14.6",
36
37
  "simple-git": "^3.19.1",
37
38
  "tiktoken": "^1.0.15",
38
39
  "vectra": "^0.2.2",
@@ -70,7 +71,7 @@
70
71
  "type": "git",
71
72
  "url": "https://github.com/SillyTavern/SillyTavern.git"
72
73
  },
73
- "version": "1.12.4",
74
+ "version": "1.12.5",
74
75
  "scripts": {
75
76
  "start": "node server.js",
76
77
  "start:no-csrf": "node server.js --disableCsrf",
@@ -90,7 +91,7 @@
90
91
  "main": "server.js",
91
92
  "devDependencies": {
92
93
  "@types/jquery": "^3.5.29",
93
- "eslint": "^8.55.0",
94
+ "eslint": "^8.57.0",
94
95
  "jquery": "^3.6.4"
95
96
  }
96
97
  }
@@ -99,6 +99,6 @@
99
99
  }
100
100
 
101
101
  #bulk_tag_shadow_popup #bulk_tag_popup #dialogue_popup_controls .menu_button {
102
- width: 100px;
102
+ width: unset;
103
103
  padding: 0.25em;
104
104
  }
@@ -7,7 +7,8 @@
7
7
  background-color: green;
8
8
  }
9
9
 
10
- .extensions_block input[type="checkbox"] {
10
+ .extensions_block input[type="checkbox"],
11
+ .extensions_block input[type="radio"] {
11
12
  margin-left: 10px;
12
13
  margin-right: 10px;
13
14
  }
@@ -209,20 +209,20 @@
209
209
  opacity: 1;
210
210
  }
211
211
 
212
- .tag_as_folder {
212
+ .tag_as_folder.right_menu_button {
213
213
  filter: brightness(75%) saturate(0.6);
214
214
  }
215
215
 
216
- .tag_as_folder:hover,
217
- .tag_as_folder.flash {
218
- filter: brightness(150%) saturate(0.6) !important;
216
+ .tag_as_folder.right_menu_button:hover,
217
+ .tag_as_folder.right_menu_button.flash {
218
+ filter: brightness(150%) saturate(0.6);
219
219
  }
220
220
 
221
- .tag_as_folder.no_folder {
221
+ .tag_as_folder.right_menu_button.no_folder {
222
222
  filter: brightness(25%) saturate(0.25);
223
223
  }
224
224
 
225
- .tag_as_folder .tag_folder_indicator {
225
+ .tag_as_folder.right_menu_button .tag_folder_indicator {
226
226
  position: absolute;
227
227
  top: calc(var(--mainFontSize) * -0.5);
228
228
  right: calc(var(--mainFontSize) * -0.5);
@@ -120,6 +120,14 @@
120
120
  flex-wrap: wrap;
121
121
  }
122
122
 
123
+ .world_entry .inline-drawer-header {
124
+ cursor: initial;
125
+ }
126
+
127
+ .world_entry .killSwitch {
128
+ cursor: pointer;
129
+ }
130
+
123
131
  .world_entry_form_control input[type=button] {
124
132
  cursor: pointer;
125
133
  }
@@ -173,6 +181,10 @@
173
181
  width: 7em;
174
182
  }
175
183
 
184
+ .world_entry .killSwitch.fa-toggle-on {
185
+ color: var(--SmartThemeQuoteColor);
186
+ }
187
+
176
188
  .wi-card-entry {
177
189
  border: 1px solid;
178
190
  border-color: var(--SmartThemeBorderColor);
@@ -14,6 +14,11 @@ declare var isProbablyReaderable;
14
14
  declare var ePub;
15
15
  declare var ai;
16
16
 
17
+ declare var SillyTavern: {
18
+ getContext(): any;
19
+ llm: any;
20
+ };
21
+
17
22
  // Jquery plugins
18
23
  interface JQuery {
19
24
  nanogallery2(options?: any): JQuery;
@@ -0,0 +1,3 @@
1
+ <svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 236.38 282.41">
2
+ <path d="M126.55,0v54.44l-79.87,33.76v93.95l27.53-12.94,43.08,31.09.04-.05v.09l55.21-31.44.13-.08v-80.06l-55.34,24.92v80.2l-42.55-30.7h-.02s0-81.16,0-81.16l57.02-24.11V9.23l93.54,56.12v22.51l-24.34,11.53,1.84,90.56-88.45,51.47-.13.08v34.46L5.23,198.97v-65.56H0v66.92c0,.85.41,1.64,1.11,2.14l113.13,79.91v.05l.04-.02h0s0,0,0,0l121.97-73.54.13-.08v-126.13l-5.84,2.76v-22.94h-.3l.11-.18L126.55,0Z" />
3
+ </svg>
@@ -0,0 +1,149 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="48"
6
+ height="48"
7
+ viewBox="0 0 48 48"
8
+ version="1.1"
9
+ id="svg2120"
10
+ xml:space="preserve"
11
+ inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
12
+ sodipodi:docname="step-into.svg"
13
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
14
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
15
+ xmlns:xlink="http://www.w3.org/1999/xlink"
16
+ xmlns="http://www.w3.org/2000/svg"
17
+ xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
18
+ id="namedview2122"
19
+ pagecolor="#ffffff"
20
+ bordercolor="#000000"
21
+ borderopacity="0.25"
22
+ inkscape:showpageshadow="2"
23
+ inkscape:pageopacity="0.0"
24
+ inkscape:pagecheckerboard="0"
25
+ inkscape:deskcolor="#d1d1d1"
26
+ inkscape:document-units="px"
27
+ showgrid="false"
28
+ inkscape:zoom="11.313708"
29
+ inkscape:cx="58.910834"
30
+ inkscape:cy="25.323262"
31
+ inkscape:window-width="1920"
32
+ inkscape:window-height="992"
33
+ inkscape:window-x="-8"
34
+ inkscape:window-y="-8"
35
+ inkscape:window-maximized="1"
36
+ inkscape:current-layer="g2714" /><defs
37
+ id="defs2117"><inkscape:path-effect
38
+ effect="spiro"
39
+ id="path-effect2144"
40
+ is_visible="true"
41
+ lpeversion="1" /><inkscape:path-effect
42
+ effect="bspline"
43
+ id="path-effect2138"
44
+ is_visible="true"
45
+ lpeversion="1"
46
+ weight="33.333333"
47
+ steps="2"
48
+ helper_size="0"
49
+ apply_no_weight="true"
50
+ apply_with_weight="true"
51
+ only_selected="false" /></defs><g
52
+ inkscape:groupmode="layer"
53
+ id="layer4"
54
+ inkscape:label="img"
55
+ style="display:none"><image
56
+ width="305.68866"
57
+ height="70.374367"
58
+ preserveAspectRatio="none"
59
+ xlink:href="data:image/png;base64,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
87
+ "
88
+ id="image2132"
89
+ x="-82"
90
+ y="-11.9" /></g><g
91
+ inkscape:groupmode="layer"
92
+ id="layer5"
93
+ inkscape:label="dot" /><g
94
+ inkscape:label="over"
95
+ inkscape:groupmode="layer"
96
+ id="layer1"
97
+ style="display:none"><ellipse
98
+ style="fill:#000000;stroke:#000000;stroke-width:5.27982;stroke-dasharray:none"
99
+ id="path2637"
100
+ cx="24"
101
+ cy="33"
102
+ rx="4.3600898"
103
+ ry="4.3600893" /><path
104
+ style="fill:none;stroke:#000000;stroke-width:5;stroke-dasharray:none"
105
+ d="M 9,24 C 9.7590836,20.626295 11.695032,17.529367 14.395314,15.369142 17.095595,13.208917 20.541953,12 24,12 c 3.458047,0 6.904405,1.208917 9.604686,3.369142 C 36.304968,17.529367 38.240916,20.626295 39,24"
106
+ id="path2142"
107
+ inkscape:path-effect="#path-effect2144"
108
+ inkscape:original-d="m 9,24 c 4.959859,-3.824406 10.021901,-8.173595 15,-12 4.978099,-3.8264055 10.285024,8.398237 15,12"
109
+ sodipodi:nodetypes="csc" /><path
110
+ style="fill:none;stroke:#000000;stroke-width:5;stroke-dasharray:none"
111
+ d="M 26,22 H 39 V 9"
112
+ id="path2626"
113
+ sodipodi:nodetypes="ccc" /></g><g
114
+ inkscape:groupmode="layer"
115
+ id="layer6"
116
+ inkscape:label="into"
117
+ style="display:inline"><ellipse
118
+ style="fill:#000000;stroke:#000000;stroke-width:5.27982;stroke-dasharray:none"
119
+ id="path2637-3"
120
+ cx="24"
121
+ cy="38.5"
122
+ rx="4.3600898"
123
+ ry="4.3600893" /><path
124
+ style="fill:#000000;stroke:#000000;stroke-width:5;stroke-dasharray:none"
125
+ d="M 24,2 V 24"
126
+ id="path2668"
127
+ sodipodi:nodetypes="cc" /><path
128
+ style="fill:none;stroke:#000000;stroke-width:5;stroke-dasharray:none"
129
+ d="M 14.807612,16.994936 24,26.187324 33.192388,16.994936"
130
+ id="path2626-8"
131
+ sodipodi:nodetypes="ccc" /></g><g
132
+ inkscape:groupmode="layer"
133
+ id="g2714"
134
+ inkscape:label="out"
135
+ style="display:none"><ellipse
136
+ style="fill:#000000;stroke:#000000;stroke-width:5.27982;stroke-dasharray:none"
137
+ id="ellipse2708"
138
+ cx="24"
139
+ cy="38.5"
140
+ rx="4.3600898"
141
+ ry="4.3600893" /><path
142
+ style="fill:#000000;stroke:#000000;stroke-width:5;stroke-dasharray:none"
143
+ d="M 24,29.722858 V 7.7228579"
144
+ id="path2710"
145
+ sodipodi:nodetypes="cc" /><path
146
+ style="display:inline;fill:none;stroke:#000000;stroke-width:5;stroke-dasharray:none"
147
+ d="M 33.192388,14.727922 24,5.5355339 14.807612,14.727922"
148
+ id="path2712"
149
+ sodipodi:nodetypes="ccc" /></g></svg>
@@ -0,0 +1,149 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="48"
6
+ height="48"
7
+ viewBox="0 0 48 48"
8
+ version="1.1"
9
+ id="svg2120"
10
+ xml:space="preserve"
11
+ inkscape:version="1.2.2 (732a01da63, 2022-12-09)"
12
+ sodipodi:docname="step-out.svg"
13
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
14
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
15
+ xmlns:xlink="http://www.w3.org/1999/xlink"
16
+ xmlns="http://www.w3.org/2000/svg"
17
+ xmlns:svg="http://www.w3.org/2000/svg"><sodipodi:namedview
18
+ id="namedview2122"
19
+ pagecolor="#ffffff"
20
+ bordercolor="#000000"
21
+ borderopacity="0.25"
22
+ inkscape:showpageshadow="2"
23
+ inkscape:pageopacity="0.0"
24
+ inkscape:pagecheckerboard="0"
25
+ inkscape:deskcolor="#d1d1d1"
26
+ inkscape:document-units="px"
27
+ showgrid="false"
28
+ inkscape:zoom="11.313708"
29
+ inkscape:cx="58.910834"
30
+ inkscape:cy="25.323262"
31
+ inkscape:window-width="1920"
32
+ inkscape:window-height="992"
33
+ inkscape:window-x="-8"
34
+ inkscape:window-y="-8"
35
+ inkscape:window-maximized="1"
36
+ inkscape:current-layer="g2714" /><defs
37
+ id="defs2117"><inkscape:path-effect
38
+ effect="spiro"
39
+ id="path-effect2144"
40
+ is_visible="true"
41
+ lpeversion="1" /><inkscape:path-effect
42
+ effect="bspline"
43
+ id="path-effect2138"
44
+ is_visible="true"
45
+ lpeversion="1"
46
+ weight="33.333333"
47
+ steps="2"
48
+ helper_size="0"
49
+ apply_no_weight="true"
50
+ apply_with_weight="true"
51
+ only_selected="false" /></defs><g
52
+ inkscape:groupmode="layer"
53
+ id="layer4"
54
+ inkscape:label="img"
55
+ style="display:none"><image
56
+ width="305.68866"
57
+ height="70.374367"
58
+ preserveAspectRatio="none"
59
+ xlink:href="data:image/png;base64,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
87
+ "
88
+ id="image2132"
89
+ x="-82"
90
+ y="-11.9" /></g><g
91
+ inkscape:groupmode="layer"
92
+ id="layer5"
93
+ inkscape:label="dot" /><g
94
+ inkscape:label="over"
95
+ inkscape:groupmode="layer"
96
+ id="layer1"
97
+ style="display:none"><ellipse
98
+ style="fill:#000000;stroke:#000000;stroke-width:5.27982;stroke-dasharray:none"
99
+ id="path2637"
100
+ cx="24"
101
+ cy="33"
102
+ rx="4.3600898"
103
+ ry="4.3600893" /><path
104
+ style="fill:none;stroke:#000000;stroke-width:5;stroke-dasharray:none"
105
+ d="M 9,24 C 9.7590836,20.626295 11.695032,17.529367 14.395314,15.369142 17.095595,13.208917 20.541953,12 24,12 c 3.458047,0 6.904405,1.208917 9.604686,3.369142 C 36.304968,17.529367 38.240916,20.626295 39,24"
106
+ id="path2142"
107
+ inkscape:path-effect="#path-effect2144"
108
+ inkscape:original-d="m 9,24 c 4.959859,-3.824406 10.021901,-8.173595 15,-12 4.978099,-3.8264055 10.285024,8.398237 15,12"
109
+ sodipodi:nodetypes="csc" /><path
110
+ style="fill:none;stroke:#000000;stroke-width:5;stroke-dasharray:none"
111
+ d="M 26,22 H 39 V 9"
112
+ id="path2626"
113
+ sodipodi:nodetypes="ccc" /></g><g
114
+ inkscape:groupmode="layer"
115
+ id="layer6"
116
+ inkscape:label="into"
117
+ style="display:none"><ellipse
118
+ style="fill:#000000;stroke:#000000;stroke-width:5.27982;stroke-dasharray:none"
119
+ id="path2637-3"
120
+ cx="24"
121
+ cy="38.5"
122
+ rx="4.3600898"
123
+ ry="4.3600893" /><path
124
+ style="fill:#000000;stroke:#000000;stroke-width:5;stroke-dasharray:none"
125
+ d="M 24,2 V 24"
126
+ id="path2668"
127
+ sodipodi:nodetypes="cc" /><path
128
+ style="fill:none;stroke:#000000;stroke-width:5;stroke-dasharray:none"
129
+ d="M 14.807612,16.994936 24,26.187324 33.192388,16.994936"
130
+ id="path2626-8"
131
+ sodipodi:nodetypes="ccc" /></g><g
132
+ inkscape:groupmode="layer"
133
+ id="g2714"
134
+ inkscape:label="out"
135
+ style="display:inline"><ellipse
136
+ style="fill:#000000;stroke:#000000;stroke-width:5.27982;stroke-dasharray:none"
137
+ id="ellipse2708"
138
+ cx="24"
139
+ cy="38.5"
140
+ rx="4.3600898"
141
+ ry="4.3600893" /><path
142
+ style="fill:#000000;stroke:#000000;stroke-width:5;stroke-dasharray:none"
143
+ d="M 24,29.722858 V 7.7228579"
144
+ id="path2710"
145
+ sodipodi:nodetypes="cc" /><path
146
+ style="display:inline;fill:none;stroke:#000000;stroke-width:5;stroke-dasharray:none"
147
+ d="M 33.192388,14.727922 24,5.5355339 14.807612,14.727922"
148
+ id="path2712"
149
+ sodipodi:nodetypes="ccc" /></g></svg>