Palette v0.2

This commit is contained in:
GuiAworld
2022-08-16 22:33:29 -03:00
5 changed files with 55 additions and 27 deletions

View File

@@ -37,6 +37,7 @@ import itertools
import bisect import bisect
import functools import functools
import traceback import traceback
import multiprocessing
from collections.abc import Iterable from collections.abc import Iterable
from collections import OrderedDict from collections import OrderedDict
from typing import Any, Callable, Optional, TypeVar, Tuple, Union, Dict, Set, List from typing import Any, Callable, Optional, TypeVar, Tuple, Union, Dict, Set, List
@@ -993,6 +994,12 @@ def general_startup(override_args=None):
print("You have selected the following path for your Model :", args.path) print("You have selected the following path for your Model :", args.path)
koboldai_vars.custmodpth = args.path; koboldai_vars.custmodpth = args.path;
koboldai_vars.colaburl = args.path + "/request"; # Lets just use the same parameter to keep it simple koboldai_vars.colaburl = args.path + "/request"; # Lets just use the same parameter to keep it simple
#setup socketio relay queue
koboldai_settings.queue = multiprocessing.Queue()
#t = threading.Thread(target=socket_io_relay, args=(koboldai_settings.queue, socketio))
socketio.start_background_task(socket_io_relay, koboldai_settings.queue, socketio)
print("continued")
#==================================================================# #==================================================================#
# Load Model # Load Model
#==================================================================# #==================================================================#
@@ -6350,12 +6357,14 @@ def UI_2_Set_Selected_Text(data):
def UI_2_submit(data): def UI_2_submit(data):
print(data) print(data)
if not koboldai_vars.noai and data['theme'] != "": if not koboldai_vars.noai and data['theme'] != "":
print("doing random prompt")
memory = koboldai_vars.memory memory = koboldai_vars.memory
koboldai_vars.memory = "{}\n\nYou generate the following {} story concept :".format(koboldai_vars.memory, data['theme']) koboldai_vars.memory = "{}\n\nYou generate the following {} story concept :".format(koboldai_vars.memory, data['theme'])
koboldai_vars.lua_koboldbridge.feedback = None koboldai_vars.lua_koboldbridge.feedback = None
actionsubmit("", force_submit=True, force_prompt_gen=True) actionsubmit("", force_submit=True, force_prompt_gen=True)
koboldai_vars.memory = memory koboldai_vars.memory = memory
else: else:
print("doing normal input")
koboldai_vars.actions.clear_unused_options() koboldai_vars.actions.clear_unused_options()
koboldai_vars.lua_koboldbridge.feedback = None koboldai_vars.lua_koboldbridge.feedback = None
koboldai_vars.recentrng = koboldai_vars.recentrngm = None koboldai_vars.recentrng = koboldai_vars.recentrngm = None
@@ -6589,9 +6598,14 @@ def UI_2_phrase_bias_update(biases):
#==================================================================# #==================================================================#
# Event triggered to rely a message # Event triggered to rely a message
#==================================================================# #==================================================================#
@socketio.on('relay') def socket_io_relay(queue, socketio):
def UI_2_relay(data): while True:
socketio.emit(data[0], data[1], **data[2]) if not queue.empty():
data = queue.get()
#socketio.emit(data[0], data[1], **data[2])
socketio.emit(data[0], data[1], broadcast=True, room="UI_2")
time.sleep(0)
#==================================================================# #==================================================================#
# Event triggered when program errors out # Event triggered when program errors out

View File

@@ -3,11 +3,12 @@ from io import BytesIO
from flask import has_request_context from flask import has_request_context
import socketio as socketio_client import socketio as socketio_client
from collections import OrderedDict from collections import OrderedDict
import requests
rely_clients = {} rely_clients = {}
serverstarted = False serverstarted = False
port = 5000 port = 5000
queue = None
def clean_var_for_emit(value): def clean_var_for_emit(value):
if isinstance(value, KoboldStoryRegister) or isinstance(value, KoboldWorldInfo): if isinstance(value, KoboldStoryRegister) or isinstance(value, KoboldWorldInfo):
@@ -38,23 +39,15 @@ def process_variable_changes(socketio, classname, name, value, old_value, debug_
socketio.emit("var_changed", {"classname": "actions", "name": "Selected Text", "old_value": None, "value": {"id": i, "text": value[i]}}, include_self=True, broadcast=True, room="UI_2") socketio.emit("var_changed", {"classname": "actions", "name": "Selected Text", "old_value": None, "value": {"id": i, "text": value[i]}}, include_self=True, broadcast=True, room="UI_2")
socketio.emit("var_changed", {"classname": "actions", "name": "Options", "old_value": None, "value": {"id": i, "options": value.actions[i]['Options']}}, include_self=True, broadcast=True, room="UI_2") socketio.emit("var_changed", {"classname": "actions", "name": "Options", "old_value": None, "value": {"id": i, "options": value.actions[i]['Options']}}, include_self=True, broadcast=True, room="UI_2")
socketio.emit("var_changed", {"classname": "actions", "name": "Selected Text Length", "old_value": None, "value": {"id": i, 'length': value.actions[i]['Selected Text Length']}}, include_self=True, broadcast=True, room="UI_2") socketio.emit("var_changed", {"classname": "actions", "name": "Selected Text Length", "old_value": None, "value": {"id": i, 'length': value.actions[i]['Selected Text Length']}}, include_self=True, broadcast=True, room="UI_2")
socketio.emit("var_changed", {"classname": "actions", "name": "In AI Input", "old_value": None, "value": {"id": i, 'In AI Input': value.actions[i]['In AI Input']}}, include_self=True, broadcast=True, room="UI_2") if 'In AI Input' in value.actions[i]:
socketio.emit("var_changed", {"classname": "actions", "name": "In AI Input", "old_value": None, "value": {"id": i, 'In AI Input': value.actions[i]['In AI Input']}}, include_self=True, broadcast=True, room="UI_2")
elif isinstance(value, KoboldWorldInfo): elif isinstance(value, KoboldWorldInfo):
value.send_to_ui() value.send_to_ui()
else: else:
#If we got a variable change from a thread other than what the app is run it, eventlet seems to block and no further messages are sent. Instead, we'll rely the message to the app and have the main thread send it #If we got a variable change from a thread other than what the app is run it, eventlet seems to block and no further messages are sent. Instead, we'll rely the message to the app and have the main thread send it
if not has_request_context(): if not has_request_context():
if threading.get_ident() in rely_clients: data = ["var_changed", {"classname": classname, "name": name, "old_value": clean_var_for_emit(old_value), "value": clean_var_for_emit(value)}, {"include_self":True, "broadcast":True, "room":"UI_2"}]
sio = rely_clients[threading.get_ident()] queue.put(data)
if not sio.connected:
sio = create_loopback_socketio()
else:
sio = create_loopback_socketio()
#release no longer used clients
for thread in rely_clients:
if thread not in [x.ident for x in threading.enumerate()]:
del rely_clients[thread]
sio.emit("relay", ["var_changed", {"classname": classname, "name": name, "old_value": clean_var_for_emit(old_value), "value": clean_var_for_emit(value)}, {"include_self":True, "broadcast":True, "room":"UI_2"}])
else: else:
socketio.emit("var_changed", {"classname": classname, "name": name, "old_value": clean_var_for_emit(old_value), "value": clean_var_for_emit(value)}, include_self=True, broadcast=True, room="UI_2") socketio.emit("var_changed", {"classname": classname, "name": name, "old_value": clean_var_for_emit(old_value), "value": clean_var_for_emit(value)}, include_self=True, broadcast=True, room="UI_2")
@@ -519,7 +512,21 @@ class story_settings(settings):
def save_story(self): def save_story(self):
print("Saving") print("Saving")
save_name = self.story_name if self.story_name != "" else "untitled" save_name = self.story_name if self.story_name != "" else "untitled"
with open("stories/{}_v2.json".format(save_name), "w") as settings_file: adder = ""
while True:
if os.path.exists("stories/{}{}_v2.json".format(save_name, adder)):
with open("stories/{}{}_v2.json".format(save_name, adder), "r") as f:
temp = json.load(f)
if 'story_id' in temp:
if self.story_id != temp['story_id']:
adder = 0 if adder == "" else adder+1
else:
break
else:
adder = 0 if adder == "" else adder+1
else:
break
with open("stories/{}{}_v2.json".format(save_name, adder), "w") as settings_file:
settings_file.write(self.to_json()) settings_file.write(self.to_json())
self.gamesaved = True self.gamesaved = True
@@ -1019,7 +1026,7 @@ class KoboldWorldInfo(object):
self.story_settings = story_settings self.story_settings = story_settings
def reset(self): def reset(self):
self.__init__(self.socketio, self.story_settings, self.tokenizer) self.__init__(self.socketio, self.story_settings, self.koboldai_vars, self.tokenizer)
def __iter__(self): def __iter__(self):
self.itter = -1 self.itter = -1

View File

@@ -92,10 +92,17 @@
--flyout_menu_closed_width: 0px; --flyout_menu_closed_width: 0px;
--setting_menu_closed_width_no_pins_width: 0px; --setting_menu_closed_width_no_pins_width: 0px;
--story_options_size: 30%; --story_options_size: 30%;
--story_pinned_areas: "menuicon options gamescreen lefticon" --story_pinned_areas_left: "menuicon options gamescreen lefticon"
"menuicon theme theme lefticon" "menuicon theme theme lefticon"
"menuicon inputrow inputrow lefticon"; "menuicon inputrow inputrow lefticon";
--story_pinned_area_widths: 30px var(--story_options_size) auto 30px; --story_pinned_areas_right: "menuicon gamescreen options lefticon"
"menuicon theme theme lefticon"
"menuicon inputrow inputrow lefticon";
--story_pinned_area_widths_left: 30px var(--story_options_size) auto 30px;
--story_pinned_area_widths_right: 30px auto var(--story_options_size) 30px;
--story_pinned_areas: var(--story_pinned_areas_left);
--story_pinned_area_widths: var(--story_pinned_area_widths_left);
--scrollbar-color: #9b9b9b80;
--scrollbar-size: 6px; --scrollbar-size: 6px;
--light_shadow_value: 0 0px 8px 0 rgba(0, 0, 0, 0.2), 0px 0px 20px 0 rgba(0, 0, 0, 0.19); --light_shadow_value: 0 0px 8px 0 rgba(0, 0, 0, 0.2), 0px 0px 20px 0 rgba(0, 0, 0, 0.19);
--left_menu_strong_shadow: 0 0px 8px 0 rgba(0, 0, 0, 0.2), 25px 0px 20px 0 rgba(0, 0, 0, 0.19); --left_menu_strong_shadow: 0 0px 8px 0 rgba(0, 0, 0, 0.2), 25px 0px 20px 0 rgba(0, 0, 0, 0.19);

View File

@@ -1532,13 +1532,13 @@ function options_on_right(data) {
console.log("Setting cookie to: "+data); console.log("Setting cookie to: "+data);
if (data) { if (data) {
setCookie("options_on_right", "true"); setCookie("options_on_right", "true");
r.style.setProperty('--story_pinned_areas', '"menuicon gamescreen options lefticon"\n"menuicon inputrow inputrow lefticon"'); r.style.setProperty('--story_pinned_areas', 'var(--story_pinned_areas_right)');
r.style.setProperty('--story_pinned_area_widths', '30px auto var(--story_options_size) 30px'); r.style.setProperty('--story_pinned_area_widths', 'var(--story_pinned_area_widths_right)');
document.getElementById('preserve_game_space_setting').checked = true; document.getElementById('preserve_game_space_setting').checked = true;
} else { } else {
setCookie("options_on_right", "false"); setCookie("options_on_right", "false");
r.style.setProperty('--story_pinned_areas', '"menuicon options gamescreen lefticon"\n"menuicon inputrow inputrow lefticon"'); r.style.setProperty('--story_pinned_areas', 'var(--story_pinned_areas_left)');
r.style.setProperty('--story_pinned_area_widths', '30px var(--story_options_size) auto 30px'); r.style.setProperty('--story_pinned_area_widths', 'var(--story_pinned_area_widths_left)');
document.getElementById('preserve_game_space_setting').checked = false; document.getElementById('preserve_game_space_setting').checked = false;
} }
} }

View File

@@ -69,7 +69,7 @@
<div class="statusbar_inner" style="width:0%">0%</div> <div class="statusbar_inner" style="width:0%">0%</div>
</div><br> </div><br>
<button type="button" class="btn action_button submit var_sync_alt_system_aibusy" system_aibusy=False id="btnsend" <button type="button" class="btn action_button submit var_sync_alt_system_aibusy" system_aibusy=False id="btnsend"
onclick="socket.emit('submit', {'data': document.getElementById('input_text').value, 'theme': document.getElementById('themetext').value});document.getElementById('input_text').value = '';" onclick="socket.emit('submit', {'data': document.getElementById('input_text').value, 'theme': document.getElementById('themetext').value});document.getElementById('input_text').value = '';document.getElementById('themetext').value = '';"
>Submit</button> >Submit</button>
<button type="button" class="btn action_button submited var_sync_alt_system_aibusy" system_aibusy=False id="btnsend"><img src="static/thinking.gif" class="force_center" onclick="socket.emit('abort','');"></button> <button type="button" class="btn action_button submited var_sync_alt_system_aibusy" system_aibusy=False id="btnsend"><img src="static/thinking.gif" class="force_center" onclick="socket.emit('abort','');"></button>
<button type="button" class="btn action_button back" onclick="socket.emit('back', {});"><span class="oi" data-glyph="action-undo"></span></button> <button type="button" class="btn action_button back" onclick="socket.emit('back', {});"><span class="oi" data-glyph="action-undo"></span></button>