Commit Graph

2400 Commits

Author SHA1 Message Date
valadaptive 315d981804 Reject generation on circuit breaker error 2023-12-10 18:13:34 -05:00
Cohee 7450112e9b Unbust user continue in group chats 2023-12-11 00:02:49 +02:00
Cohee e8742a3e9d Merge branch 'release' into staging 2023-12-10 23:28:10 +02:00
Cohee 2e6ab8be46 Add Object.hasOwn polyfill 2023-12-10 23:28:00 +02:00
Cohee 05b08f1ce2 Don't await delay promise 2023-12-10 21:51:16 +02:00
Cohee 2e50efc35c Limit waiting for TTS to init to 1 second on chat change 2023-12-10 21:50:52 +02:00
valadaptive ae9445e500 Reject on data.error 2023-12-10 13:56:31 -05:00
valadaptive 5fd466b53f Fix generateQuietPrompt 2023-12-10 13:54:39 -05:00
Cohee 420d186823 Add reduced motion toggle 2023-12-10 20:02:25 +02:00
valadaptive 33f969f097 Have Generate() return a promise
Generate(), being async, now returns a promise-within-a-promise.
If called with `let p = await Generate(...)`, it'll wait for generation
to *start*. If you then `await p`, you'll wait for generation to
*finish*. This makes it much easier to tell exactly when generation's
done. generateGroupWrapper has been similarly modified.
2023-12-10 12:30:10 -05:00
Cohee 13e016f3e5
Merge pull request #1508 from LenAnderson/tts-skip-codeblocks-option
add TTS option to skip codeblock narration
2023-12-10 19:28:16 +02:00
valadaptive 03884b29ad Always call resolve in Generate()
This lets us get rid of the janky hack in group-chats to tell when a
message is done generating.
2023-12-10 12:26:30 -05:00
valadaptive f5d2e50f5e Remove isGenerationAborted
Just check the AbortSignal.
2023-12-10 12:24:18 -05:00
Cohee f8a903e1fd #1506 Fix big markdown images 2023-12-10 18:45:55 +02:00
Cohee dbd52a7994
Merge pull request #1482 from valadaptive/sse-stream
Refactor server-sent events parsing
2023-12-10 18:32:19 +02:00
LenAnderson bf88829b03 add option to skip codeblock narration 2023-12-10 16:32:10 +00:00
Cohee af89cfa870 Code clean-up 2023-12-10 16:48:25 +02:00
Cohee 5054de247b Merge branch 'staging' into qr-editor-tab-support 2023-12-10 16:36:28 +02:00
Cohee 9acef0fae6 Horde doesn't support API tokenizers 2023-12-10 16:21:06 +02:00
Cohee f54bf99006 Fix token ids not displaying in "API_CURRENT" mode for TextGen 2023-12-10 16:09:00 +02:00
Cohee 6957d9e7cf Fix display names of Best match tokenizers 2023-12-10 16:03:25 +02:00
Cohee 6e5eea5dba Unbreak previously selected API tokenizer in dropdown 2023-12-10 15:56:38 +02:00
Cohee d5140142fb Merge branch 'staging' into tokenizers-cleanup 2023-12-10 15:51:15 +02:00
Cohee e0d0e1dd66
Merge pull request #1502 from valadaptive/status-cleanup
Clean up getStatus code
2023-12-10 15:49:37 +02:00
Cohee 6be1c6ff10
Merge pull request #1504 from valadaptive/store-compiled-templates
Cache compiled Handlebars templates
2023-12-10 15:32:52 +02:00
Cohee 5f1683f43a More input padding and stricter sanitation 2023-12-10 15:07:39 +02:00
valadaptive 0201a0260c Default event type to 'message' if it's empty
Added to the upstream test suite. Matches the spec.
2023-12-10 04:45:10 -05:00
valadaptive 55976e61a3 Fix tokenizer override
I searched for all users of tokenizers.API, but missed that the menu
converts the numerical select values directly to enum values. I've used
the special tokenizer value 98 to represent "the tokenizer API for
whichever backend we're currently using".
2023-12-09 23:57:21 -05:00
valadaptive 0fce475a95 Implement random sort with a shuffle
Sorting with a random comparator doesn't actually shuffle an array.
Depending on the sorting algorithm used, there will be a bias to the
shuffle (see https://bost.ocks.org/mike/shuffle/compare.html).
If you open that link in Firefox, the bias will be especially bad.
Instead of implementing "random" character sort using a random sort
comparator, use the shuffle function instead.
2023-12-09 22:52:38 -05:00
valadaptive c48bc8a76e Cache compiled Handlebars templates
Since we already have a template cache, it makes sense to store the
templates in it *after* compiling them, to avoid the overhead of
re-compiling them every time we call renderTemplate.

I've also changed the cache from an object to a Map--it's more
semantically correct, and avoids weird edge cases like a template named
"hasOwnProperty" or some other function that exists as an object
property.
2023-12-09 21:29:36 -05:00
valadaptive 499d158c11 Remove last usage of getAPIServerUrl
Now that we're not using this in the tokenizers code, we can remove it.
2023-12-09 20:55:34 -05:00
valadaptive 014416546c Add padding once in getTokenCount
This means we don't have to pass the "padding" parameter into every
function so they can add the padding themselves--we can do it in just
one place instead.
2023-12-09 20:53:16 -05:00
valadaptive 2f2cd197cc Clean up tokenizer API code
Store the URLs for each tokenizer's action in one place at the top of
the file, instead of in a bunch of switch-cases. The URLs for the
textgen and Kobold APIs don't change and hence don't need to be
function arguments.
2023-12-09 20:48:41 -05:00
valadaptive 09465fbb97 Inline most get(...)TokenizerParams calls
For everything except textgenerationwebui, these params are now simple
enough that it doesn't make sense for them to be in a separate function.
2023-12-09 20:35:11 -05:00
valadaptive 30502ac949 Split up Kobold and textgenerationwebui endpoints
The endpoint was one big if/else statement that did two entirely
different things depending on the value of main_api. It makes more sense
for those to be two separate endpoints.
2023-12-09 20:26:24 -05:00
valadaptive 7486ab3886 Separate textgen and Kobold tokenization APIs
They function differently and have different logic and API parameters,
so it makes sense to count them as two different APIs. Kobold's API
doesn't return tokens, so it can only be used to count them.

There's still a lot of duplicate code which I will clean up in the
following commits.
2023-12-09 20:24:56 -05:00
valadaptive 18177c147d Separate remote and server tokenization code paths
This lets us remove extraneous API params from paths where they aren't
needed.
2023-12-09 20:08:48 -05:00
valadaptive ddd73a204a Remove "remote" language from tokenizer functions
We'll be making a distinction between tokenizing *on* the server itself,
and tokenizing via the server having the AI service do it. It makes more
sense to use the term "remote" for the latter.
2023-12-09 19:49:22 -05:00
valadaptive 8bad059a62 Rename /tokenize_via_api endpoint
No redirect for this since I don't expect any extensions to be calling this directly.
2023-12-09 19:29:24 -05:00
valadaptive a23be7d785 Clean up CSS for API "connect" buttons
Instead of identifying each connect button by ID, we can just use the
.api_button class. The .menu_button class *would* override it due to CSS
cascade rules (specifically, declarations later in the stylesheet apply
over ones that appear earlier), but the `.menu_button.api_button`
selector has a higher *specificity* and hence works.
2023-12-09 18:52:14 -05:00
valadaptive babb127aee Move NovelAI status functions over to the rest
Have all the get(...)Status and event handler registrations in the same
areas, rather than having the NovelAI ones far away. I want to
eventually move all the API-specific stuff into separate modules, but
this will make things cleaner for the time being.
2023-12-09 18:41:51 -05:00
valadaptive 0ea0399ed1 Separate getStatus into Kobold/textgen versions
This adds a bit of duplicate code for the time being, but ultimately
makes the code less confusing because we only need to include the bits
that are relevant to the specific API in each function. We can also
remove API parameters that are useless depending on the endpoint.
2023-12-09 18:39:19 -05:00
LenAnderson a3ec8d709d add support for tab and shift-tab in QR editor 2023-12-09 17:56:36 +00:00
Cohee 2d7811fa46
Merge pull request #1499 from LenAnderson/qr-execute-from-any-preset
Allow /run for quick replies from any preset
2023-12-09 19:49:03 +02:00
LenAnderson d00861d913 allow /run for quick replies from other presets
/run otherPresetName.quickReplyLabel
2023-12-09 17:20:15 +00:00
Cohee e79f6d82da
Merge pull request #1498 from artisticMink/bulkedit-delete-optimization
Only refresh character list after all deletions have been processed.
2023-12-09 18:07:44 +02:00
Cohee b915b89ca9 Fix ESLint 2023-12-09 16:09:10 +02:00
Cohee 04c83eae71 Use null coalescing operator 2023-12-09 16:07:55 +02:00
Cohee ad9130b538 Single doc mode: edit on click 2023-12-09 16:01:43 +02:00
artisticMink dfd41a110a Prevent 'no such file or directory' error when mass deleting characters 2023-12-09 14:36:37 +01:00
artisticMink 4692450975 Enable getPastCharacterChats to work with specific character ids 2023-12-09 14:36:15 +01:00
artisticMink ba3966e148 Only refresh character list after all deletions have been processed. 2023-12-09 14:31:18 +01:00
valadaptive 3cfc32c16d Refactor error handling
Remove the StreamingProcessor.hook method and use a try-catch block to
await the generator promise and set the generator, handling errors with
onError if it fails.
2023-12-08 18:40:17 -05:00
valadaptive d735b12399 Refactor event stream parsing
I was really overcomplicating this before; this is simpler and faster.
Passes my existing test suite.
2023-12-08 15:05:57 -05:00
valadaptive 699c369443 Remove ignoreBOM
Apparently the ignoreBOM option actually means "include the BOM". I've
added a test for this in my own repository, and will also be submitting
a pull request to MDN to clarify this in their documentation.
2023-12-07 23:15:55 -05:00
Cohee b0e7b73a32 Fix streaming processor error handler hooks 2023-12-08 02:01:08 +02:00
valadaptive 5569a63595 Remove legacy_streaming setting
This was a workaround for older versions of Slaude that implemented SSE
improperly. This was fixed in Slaude 7 months ago, so the workaround can
be removed.
2023-12-07 18:00:36 -05:00
valadaptive cdcd913805 Don't stream events if the API returned a 4xx code 2023-12-07 18:00:36 -05:00
valadaptive 5540c165cf Refactor server-sent events parsing
Create one server-sent events stream class which implements the entire
spec (different line endings, chunking, etc) and use it in all the
streaming generators.
2023-12-07 18:00:36 -05:00
Cohee 6f610204d6
Merge pull request #1488 from LenAnderson/add-index-argument-to-setvar-/-setglobalvar
Add index argument to setvar / setglobalvar
2023-12-08 00:40:14 +02:00
Cohee 2607e787ff Put comment command on hold 2023-12-08 00:38:13 +02:00
Cohee e2f886d796 Revert pipe caching 2023-12-08 00:33:27 +02:00
Cohee 7f7ad6f523 Merge branch 'staging' into backgrounds-endpoint 2023-12-07 23:16:33 +02:00
Cohee 404b1562e5
Merge pull request #1491 from valadaptive/stats-endpoint
Move stats endpoints into their own module
2023-12-07 23:11:12 +02:00
valadaptive 2367f4f38f Rename backgrounds API endpoints 2023-12-07 15:17:19 -05:00
LenAnderson 65f2cc1952 add a comment slash commend /#
for commenting longer ST scripts
2023-12-07 18:29:28 +00:00
LenAnderson d52b5fb947 pass prev pipeResult through if result undefined 2023-12-07 18:28:58 +00:00
LenAnderson 5a719d635a use isArray instead of instanceof 2023-12-07 18:27:11 +00:00
LenAnderson 7bfed3fca1 /addvar on array to push 2023-12-07 18:12:05 +00:00
Cohee c84b6a5101 Add WI inclusion groups 2023-12-07 20:06:06 +02:00
valadaptive 26ebb417f4 Rename stats API endpoints 2023-12-07 13:00:34 -05:00
Cohee e804f27368 Convert value to string for echo. Fix return value 2023-12-07 19:37:55 +02:00
LenAnderson 2ee57afe2a add helpString for index in setvar 2023-12-07 16:51:45 +00:00
LenAnderson db6f782e0f add index to /setvar and /setglobalvar 2023-12-07 16:48:24 +00:00
Cohee b1f68d886c Fix WI field access for UID = 0 2023-12-07 18:45:34 +02:00
Cohee 72adb4c8aa Fix window.ai streaming 2023-12-07 17:42:06 +02:00
Cohee 990f958f4f #1484 Consolidate chat name template 2023-12-07 16:59:53 +02:00
Cohee 2417ae9d87 #1484 Display version on close chat 2023-12-07 16:57:47 +02:00
Cohee 785be22e51 Merge branch 'staging' into st-object-vars 2023-12-07 16:46:02 +02:00
Cohee e9a49b7997
Merge pull request #1485 from LenAnderson/qr-expand-editor
Add expand button to QR textareas
2023-12-07 15:31:01 +02:00
Cohee b506a17260 Fix expand after drag 2023-12-07 15:29:40 +02:00
LenAnderson afd32d1f4d better handling of array / object vars 2023-12-07 12:56:28 +00:00
LenAnderson 0290916035 stop expanding textarea 2023-12-07 12:29:00 +00:00
LenAnderson a1bfca78b3 add custom titles (tooltips) to QR buttons 2023-12-07 12:20:02 +00:00
LenAnderson d62ef8badc add expand button for QR textareas 2023-12-07 12:04:39 +00:00
Cohee 75abc6101a /input input => /input default 2023-12-07 13:44:49 +02:00
Cohee 0e6802c9d9 Too much lint 2023-12-07 13:35:48 +02:00
Cohee 25db4b6fde Merge branch 'staging' into feat/slash-commands-missing-args 2023-12-07 13:19:15 +02:00
Cohee 8082144c5a Merge branch 'staging' into worldinfo-endpoint 2023-12-07 12:58:57 +02:00
Cohee 0138008031 Merge branch 'staging' into groups-endpoint 2023-12-07 12:50:24 +02:00
Cohee c0fb5a4787
Merge pull request #1473 from valadaptive/chats-endpoint
Move chat endpoints into their own module
2023-12-07 12:36:43 +02:00
Cohee 9b7a0f3d35 Hide loader before displaying blocking error message 2023-12-07 12:29:12 +02:00
Cohee bd1f09c644 Add loader for chat renaming 2023-12-07 12:27:18 +02:00
Cohee 698890ae0f Fix /delchat slash command 2023-12-07 12:20:33 +02:00
RossAscends c51a821b1e fix zen slider rep pen range value transfer 2023-12-07 11:52:10 +09:00
SrJuggernaut d6d0371459 add missing args to some slash commands 2023-12-06 19:26:29 -06:00
valadaptive c746e6a426 Rename worldinfo API endpoints 2023-12-06 20:00:51 -05:00
valadaptive 8027372fc2 Rename group API endpoints 2023-12-06 19:59:58 -05:00
valadaptive 6efe95f4f1 Rename chat API endpoints 2023-12-06 19:58:24 -05:00
Cohee 55d7bd6a87 Return last evaluation of random 2023-12-07 02:45:35 +02:00
Cohee f575e0d61d Add {{currentSwipeId}} / {{lastSwipeId}} macros 2023-12-07 02:35:24 +02:00
Cohee 393a15cd81 Run auto-executed STscripts after message rendered 2023-12-07 02:12:49 +02:00
Cohee 24aff67d50 Fix {{original}} macro left out if original is empty 2023-12-07 01:27:55 +02:00
valadaptive 39d771cc4a Replace path "\" with "/" server-side 2023-12-06 17:22:37 -05:00
Cohee 100dae5fd0
Merge pull request #1444 from valadaptive/characters-endpoint
Move character endpoints into their own module
2023-12-06 23:45:14 +02:00
Cohee 5e282ac7b4 lint: infix spacing 2023-12-06 22:08:06 +02:00
LenAnderson ea7720a7de add /len slash command 2023-12-06 19:03:20 +00:00
LenAnderson a5c595d8ae add list accessors to /getvar and /getglobalvar 2023-12-06 19:03:10 +00:00
Cohee 64496425cc Save chat before reloading 2023-12-06 17:23:54 +02:00
Cohee 61f186764d Fix QR bar popout position 2023-12-06 14:53:29 +02:00
Cohee d36422e558 Fix/optimize bulk favorite 2023-12-06 01:56:07 +02:00
Cohee b58f14d1d2 Fix bulk menu not working 2023-12-06 00:55:42 +02:00
Cohee 7f703704c7 Display loader on loading past chats 2023-12-06 00:42:41 +02:00
Cohee 356c3a4300 Fix amount gen on zen sliders 2023-12-05 14:12:06 +02:00
Cohee c9fbe75566 Rename WI logic ONE => ANY 2023-12-05 12:04:27 +02:00
Bronya Rand 537e9428e0 proper revert cuz vsc revert weird... 2023-12-05 03:00:26 -06:00
Bronya Rand f9ecc77b10 revert changes after cohee fix 2023-12-05 02:56:52 -06:00
valadaptive b689b8bd30 Rename character API endpoints
Precursor to moving the character API into its own module
2023-12-04 17:35:06 -05:00
Bronya Rand a90fe54e5b bak should not be here 2023-12-04 16:05:05 -06:00
Bronya Rand f71b83b14f add comment on new code and add () for logic checks 2023-12-04 16:00:02 -06:00
Bronya Rand 085daaeff7 simplify and proper NOT check fix 2023-12-04 15:57:04 -06:00
Cohee ddd16c1469
Merge pull request #1452 from valadaptive/assets-router
Use Express router for assets + "files" endpoints
2023-12-04 21:29:52 +02:00
Cohee 1ac494d468 Don't attempt to send files on dry runs. 2023-12-04 21:28:36 +02:00
Cohee 3ad7d5d520 Negotiate formatting with VS Code autoformat 2023-12-04 20:59:11 +02:00
valadaptive d24c1dde10 Use Express router for assets + "files" endpoints
I've split out the "file/upload" endpoint into its own module, and
renamed it to "files" to be consistent with the existing naming scheme.
2023-12-04 12:40:53 -05:00
valadaptive 5f1bed1e70 Enable object-curly-spacing lint 2023-12-04 12:32:41 -05:00
Cohee fcbfdc70af Merge branch 'staging' into sd-next-upscalers 2023-12-04 19:07:34 +02:00
Cohee 8476ec7570 Merge branch 'staging' into tokenizer-renames 2023-12-04 19:01:38 +02:00
Cohee 4bbb36a601 Merge branch 'staging' into viewsecrets-rename 2023-12-04 18:49:01 +02:00
Cohee 8bf18891b3 Add data model field for WI entry group 2023-12-04 18:47:35 +02:00
valadaptive 9d4990d25d Rename sd-next/upscalers to sd/next/upscalers 2023-12-04 10:22:47 -05:00
valadaptive 57bc95133e Rename tokenizer routes
They're all under tokenizers/ now, and there are "count", "encode", and
"decode" endpoints. This forms a clearer hierarchy.
2023-12-04 10:17:43 -05:00
valadaptive 2180610363 Rename /viewsecrets to /api/secrets/view 2023-12-04 10:14:51 -05:00
LenAnderson 76bfad8cdc fix: listeners calling wrong index after reorder 2023-12-04 13:33:28 +00:00
LenAnderson 8283d4dc08 fix: ctx button id after reordering 2023-12-04 13:28:58 +00:00
Cohee 604e62298c Concise welcome 2023-12-04 11:59:49 +02:00
Cohee 786e131c1e Disable scroll adjustment for firefox 2023-12-04 11:00:22 +02:00
Cohee 12a4194bd5
Merge pull request #1443 from valadaptive/aphrodite-fix
Fix holdover textgenerationwebui_settings
2023-12-04 00:37:58 +02:00
valadaptive 3c59b5b7a5 Fix holdover textgenerationwebui_settings 2023-12-03 17:36:25 -05:00
Cohee 671df1f62e Fix constant usage 2023-12-04 00:24:23 +02:00
Cohee 7a58a095a4 Merge branch 'staging' into completion-source-refactor 2023-12-04 00:22:02 +02:00
Cohee 0a092629ce Fix undefined variable reference 2023-12-03 23:24:39 +02:00
valadaptive 24ccef3aba Fix "settings" variable being shadowed 2023-12-03 15:44:36 -05:00
valadaptive e33c8bd955 Replace use_[source] with chat_completion_source
Same as the is_[api] replacement--it's easier to have one enum field
than several mutually-exclusive boolean ones
2023-12-03 15:03:39 -05:00
valadaptive 9c33ddbafc Make textgen settings type checks more concise 2023-12-03 14:56:01 -05:00
valadaptive 047c897ead Remove is[API] functions
Just use an equality comparison. It's a bit longer, but only because
"textgenerationwebui_settings" is a long identifier.
2023-12-03 14:56:01 -05:00
valadaptive ba54e3dea0 Replaces is_[api] params with api_type param
These were 5 mutually-exclusive booleans, which can be replaced with one
param that takes on 5 values, one for each API type.
2023-12-03 14:56:01 -05:00
Cohee 8a1ead531c
Merge pull request #1439 from valadaptive/prompt-manager-class
Convert PromptManagerModule to a class
2023-12-03 21:52:27 +02:00
Cohee 939e938ba2 Disallow multiswipe for quiet gens 2023-12-03 20:56:25 +02:00
Cohee 1786b0d340 #1403 Add Aphrodite multi-swipe 2023-12-03 20:40:09 +02:00