Merge pull request #2 from SillyLossy/worldinfo

Worldinfo
This commit is contained in:
SillyLossy
2023-02-12 14:47:53 +02:00
committed by GitHub
3 changed files with 67 additions and 24 deletions

View File

@@ -2333,26 +2333,6 @@
koboldai_setting_names = {};
koboldai_setting_names = arr_holder;
// world info settings
koboldai_world_names = data.koboldai_world_names?.length ? data.koboldai_world_names : [];
if(settings.kobold_world != undefined) {
if (koboldai_world_names.includes(settings.kobold_world)) {
kobold_world = settings.kobold_world;
kobold_world_synced = false;
kobold_sync_failed = false;
}
}
koboldai_world_names.forEach((item, i) => {
$('#world_info').append(`<option value='${i}'>${item}</option>`);
// preselect world if saved
if (item == kobold_world){
$('#world_info').val(i).change();
}
});
// end world info settings
preset_settings = settings.preset_settings;
temp = settings.temp;
@@ -2440,6 +2420,26 @@
api_server = settings.api_server;
$('#api_url_text').val(api_server);
// world info settings
koboldai_world_names = data.koboldai_world_names?.length ? data.koboldai_world_names : [];
if(settings.kobold_world != undefined) {
if (koboldai_world_names.includes(settings.kobold_world)) {
kobold_world = settings.kobold_world;
kobold_world_synced = false;
kobold_sync_failed = false;
}
}
koboldai_world_names.forEach((item, i) => {
$('#world_info').append(`<option value='${i}'>${item}</option>`);
// preselect world if saved
if (item == kobold_world) {
$('#world_info').val(i).change();
}
});
// end world info settings
}
if(!is_checked_colab) isColab();
@@ -3086,6 +3086,9 @@
const value = $(this).prop('checked');
kobold_world_data.entries[uid].selective = value;
saveWorldInfo();
const keysecondary = $(this).closest('.world_entry').find('.keysecondary');
value ? keysecondary.show() : keysecondary.hide();
});
selectiveInput.prop('checked', entry.selective).trigger('input');
selectiveInput.siblings('.checkbox_fancy').click(function() {
@@ -3254,6 +3257,41 @@
return null;
}
function getFreeWorldName() {
const MAX_FREE_NAME = 100_000;
for (let index = 1; index < MAX_FREE_NAME; index++) {
const newName = `New World (${index})`;
if (koboldai_world_names.includes(newName)) {
continue;
}
return newName;
}
return undefined;
}
async function createNewWorldInfo() {
const worldInfoTemplate = { folders: {}, entries: {} };
const worldInfoName = getFreeWorldName();
if (!worldInfoName) {
return;
}
kobold_world = worldInfoName;
kobold_world_data = { ...worldInfoTemplate };
await saveWorldInfo(true);
await updateWorldInfoList();
const selectedIndex = koboldai_world_names.indexOf(worldInfoName);
if (selectedIndex !== -1) {
$('#world_info').val(selectedIndex).change();
}
else {
$('#world_info').val('None').change();
}
}
$('#world_info_edit_button').click(() => {
is_world_edit_open ? hideWorldEditor() : showWorldEditor();
});
@@ -3282,6 +3320,10 @@
$('#world_popup_name_button').click(() => {
renameWorldInfo();
});
$('#world_create_button').click(() => {
createNewWorldInfo();
});
});
    </script>
<title>Tavern.AI</title>
@@ -3378,7 +3420,7 @@
</label>
<input class="text_pole" type="text" name="key" placeholder=""/>
</div>
<div class="world_entry_form_control">
<div class="world_entry_form_control keysecondary">
<label for="keysecondary">
<h4>Secondary Key</h4>
<h5>Comma-separated list of additional keywords (e.g: foo,bar).</h5>
@@ -3581,6 +3623,7 @@
<div>
<h4 id="world_info_block">
<span>World Info</span>
<div id="world_create_button" class="right_menu_button"><h2>+Create</h2></div>
<div id="world_import_button" class="right_menu_button"><h2>+Import</h2></div>
</h4>
<h5>How to use (<a href="/notes/13" target="_blank">?</a>)</h5>

View File

@@ -983,14 +983,14 @@ input[type=button] {
display: inline-block;
}
#world_import_button {
#world_import_button, #world_create_button {
cursor: pointer;
display: inline-block;
padding: 0;
margin: 0;
}
#world_import_button h2 {
#world_import_button h2, #world_create_button h2 {
margin-top: auto;
margin-bottom: auto;
margin-left: 1rem;

View File

@@ -1377,7 +1377,7 @@ function isEntryOutOfSync(tavernEntry, koboldEntry) {
tavernEntry.selective !== koboldEntry.selective ||
tavernEntry.constant !== koboldEntry.constant ||
tavernEntry.key.join(',') !== koboldEntry.key ||
tavernEntry.keysecondary.join(',') !== koboldEntry.keysecondary;
(koboldEntry.selective ? tavernEntry.keysecondary.join(',') !== koboldEntry.keysecondary : false);
}
// ** REST CLIENT ASYNC WRAPPERS **