mirror of
https://github.com/KoboldAI/KoboldAI-Client.git
synced 2025-06-05 21:59:24 +02:00
Merge pull request #65 from VE-FORBRYDERNE/sp
Show author and SP length in soft prompt menu
This commit is contained in:
45
aiserver.py
45
aiserver.py
@ -106,6 +106,7 @@ class vars:
|
||||
tfs = 1.0 # Default generator tfs (tail-free sampling)
|
||||
numseqs = 1 # Number of sequences to ask the generator to create
|
||||
gamestarted = False # Whether the game has started (disables UI elements)
|
||||
gamesaved = True # Whether or not current game is saved
|
||||
serverstarted = False # Whether or not the Flask server has started
|
||||
prompt = "" # Prompt
|
||||
memory = "" # Text submitted to memory field
|
||||
@ -1647,6 +1648,7 @@ def lua_is_custommodel():
|
||||
#
|
||||
#==================================================================#
|
||||
def execute_inmod():
|
||||
setgamesaved(False)
|
||||
vars.lua_logname = ...
|
||||
vars.lua_edited = set()
|
||||
vars.lua_deleted = set()
|
||||
@ -1666,6 +1668,7 @@ def execute_genmod():
|
||||
vars.lua_koboldbridge.execute_genmod()
|
||||
|
||||
def execute_outmod():
|
||||
setgamesaved(False)
|
||||
emit('from_server', {'cmd': 'hidemsg', 'data': ''}, broadcast=True)
|
||||
try:
|
||||
tpool.execute(vars.lua_koboldbridge.execute_outmod)
|
||||
@ -1733,7 +1736,7 @@ def do_connect():
|
||||
print("{0}Client connected!{1}".format(colors.GREEN, colors.END))
|
||||
emit('from_server', {'cmd': 'setchatname', 'data': vars.chatname})
|
||||
emit('from_server', {'cmd': 'setanotetemplate', 'data': vars.authornotetemplate})
|
||||
emit('from_server', {'cmd': 'connected', 'smandelete': vars.smandelete, 'smanrename': vars.smanrename})
|
||||
emit('from_server', {'cmd': 'connected', 'smandelete': vars.smandelete, 'smanrename': vars.smanrename, 'modelname': getmodelname()})
|
||||
if(vars.remote):
|
||||
emit('from_server', {'cmd': 'runs_remotely'})
|
||||
if(vars.allowsp):
|
||||
@ -1773,6 +1776,8 @@ def do_connect():
|
||||
elif(vars.mode == "wi"):
|
||||
emit('from_server', {'cmd': 'wimode', 'data': 'true'})
|
||||
|
||||
emit('from_server', {'cmd': 'gamesaved', 'data': vars.gamesaved}, broadcast=True)
|
||||
|
||||
#==================================================================#
|
||||
# Event triggered when browser SocketIO sends data to the server
|
||||
#==================================================================#
|
||||
@ -1937,6 +1942,7 @@ def get_message(msg):
|
||||
togglewimode()
|
||||
elif(msg['cmd'] == 'wiinit'):
|
||||
if(int(msg['data']) < len(vars.worldinfo)):
|
||||
setgamesaved(False)
|
||||
vars.worldinfo[msg['data']]["init"] = True
|
||||
addwiitem(folder_uid=msg['folder'])
|
||||
elif(msg['cmd'] == 'wifolderinit'):
|
||||
@ -1951,17 +1957,22 @@ def get_message(msg):
|
||||
deletewifolder(msg['data'])
|
||||
elif(msg['cmd'] == 'wiexpand'):
|
||||
assert 0 <= int(msg['data']) < len(vars.worldinfo)
|
||||
setgamesaved(False)
|
||||
emit('from_server', {'cmd': 'wiexpand', 'data': msg['data']}, broadcast=True)
|
||||
elif(msg['cmd'] == 'wiexpandfolder'):
|
||||
assert 0 <= int(msg['data']) < len(vars.worldinfo)
|
||||
setgamesaved(False)
|
||||
emit('from_server', {'cmd': 'wiexpandfolder', 'data': msg['data']}, broadcast=True)
|
||||
elif(msg['cmd'] == 'wifoldercollapsecontent'):
|
||||
setgamesaved(False)
|
||||
vars.wifolders_d[msg['data']]['collapsed'] = True
|
||||
emit('from_server', {'cmd': 'wifoldercollapsecontent', 'data': msg['data']}, broadcast=True)
|
||||
elif(msg['cmd'] == 'wifolderexpandcontent'):
|
||||
setgamesaved(False)
|
||||
vars.wifolders_d[msg['data']]['collapsed'] = False
|
||||
emit('from_server', {'cmd': 'wifolderexpandcontent', 'data': msg['data']}, broadcast=True)
|
||||
elif(msg['cmd'] == 'wiupdate'):
|
||||
setgamesaved(False)
|
||||
num = int(msg['num'])
|
||||
fields = ("key", "keysecondary", "content", "comment")
|
||||
for field in fields:
|
||||
@ -1969,6 +1980,7 @@ def get_message(msg):
|
||||
vars.worldinfo[num][field] = msg['data'][field]
|
||||
emit('from_server', {'cmd': 'wiupdate', 'num': msg['num'], 'data': {field: vars.worldinfo[num][field] for field in fields}}, broadcast=True)
|
||||
elif(msg['cmd'] == 'wifolderupdate'):
|
||||
setgamesaved(False)
|
||||
uid = int(msg['uid'])
|
||||
fields = ("name", "collapsed")
|
||||
for field in fields:
|
||||
@ -1976,15 +1988,19 @@ def get_message(msg):
|
||||
vars.wifolders_d[uid][field] = msg['data'][field]
|
||||
emit('from_server', {'cmd': 'wifolderupdate', 'uid': msg['uid'], 'data': {field: vars.wifolders_d[uid][field] for field in fields}}, broadcast=True)
|
||||
elif(msg['cmd'] == 'wiselon'):
|
||||
setgamesaved(False)
|
||||
vars.worldinfo[msg['data']]["selective"] = True
|
||||
emit('from_server', {'cmd': 'wiselon', 'data': msg['data']}, broadcast=True)
|
||||
elif(msg['cmd'] == 'wiseloff'):
|
||||
setgamesaved(False)
|
||||
vars.worldinfo[msg['data']]["selective"] = False
|
||||
emit('from_server', {'cmd': 'wiseloff', 'data': msg['data']}, broadcast=True)
|
||||
elif(msg['cmd'] == 'wiconstanton'):
|
||||
setgamesaved(False)
|
||||
vars.worldinfo[msg['data']]["constant"] = True
|
||||
emit('from_server', {'cmd': 'wiconstanton', 'data': msg['data']}, broadcast=True)
|
||||
elif(msg['cmd'] == 'wiconstantoff'):
|
||||
setgamesaved(False)
|
||||
vars.worldinfo[msg['data']]["constant"] = False
|
||||
emit('from_server', {'cmd': 'wiconstantoff', 'data': msg['data']}, broadcast=True)
|
||||
elif(msg['cmd'] == 'sendwilist'):
|
||||
@ -2280,6 +2296,15 @@ def settingschanged():
|
||||
print("{0}Saving settings!{1}".format(colors.GREEN, colors.END))
|
||||
savesettings()
|
||||
|
||||
#==================================================================#
|
||||
# Set value of gamesaved
|
||||
#==================================================================#
|
||||
def setgamesaved(gamesaved):
|
||||
assert type(gamesaved) is bool
|
||||
if(gamesaved != vars.gamesaved):
|
||||
emit('from_server', {'cmd': 'gamesaved', 'data': gamesaved}, broadcast=True)
|
||||
vars.gamesaved = gamesaved
|
||||
|
||||
#==================================================================#
|
||||
# Take input text from SocketIO and decide what to do with it
|
||||
#==================================================================#
|
||||
@ -3331,6 +3356,7 @@ def inlineedit(chunk, data):
|
||||
if(chunk-1 in vars.actions):
|
||||
vars.actions[chunk-1] = data
|
||||
|
||||
setgamesaved(False)
|
||||
update_story_chunk(chunk)
|
||||
emit('from_server', {'cmd': 'texteffect', 'data': chunk}, broadcast=True)
|
||||
emit('from_server', {'cmd': 'editmode', 'data': 'false'}, broadcast=True)
|
||||
@ -3350,6 +3376,7 @@ def inlinedelete(chunk):
|
||||
else:
|
||||
if(chunk-1 in vars.actions):
|
||||
del vars.actions[chunk-1]
|
||||
setgamesaved(False)
|
||||
remove_story_chunk(chunk)
|
||||
emit('from_server', {'cmd': 'editmode', 'data': 'false'}, broadcast=True)
|
||||
|
||||
@ -3419,6 +3446,7 @@ def addwifolder():
|
||||
# the WI entry with UID dst
|
||||
#==================================================================#
|
||||
def movewiitem(dst, src):
|
||||
setgamesaved(False)
|
||||
if(vars.worldinfo_u[src]["folder"] is not None):
|
||||
for i, e in enumerate(vars.wifolders_u[vars.worldinfo_u[src]["folder"]]):
|
||||
if(e is vars.worldinfo_u[src]):
|
||||
@ -3440,6 +3468,7 @@ def movewiitem(dst, src):
|
||||
# the WI folder with UID dst
|
||||
#==================================================================#
|
||||
def movewifolder(dst, src):
|
||||
setgamesaved(False)
|
||||
vars.wifolders_l.remove(src)
|
||||
if(dst is None):
|
||||
# If dst is None, that means we should move src to be the last folder
|
||||
@ -3663,6 +3692,8 @@ def memsubmit(data):
|
||||
emit('from_server', {'cmd': 'setinputtext', 'data': data}, broadcast=True)
|
||||
# Maybe check for length at some point
|
||||
# For now just send it to storage
|
||||
if(data != vars.memory):
|
||||
setgamesaved(False)
|
||||
vars.memory = data
|
||||
vars.mode = "play"
|
||||
emit('from_server', {'cmd': 'memmode', 'data': 'false'}, broadcast=True)
|
||||
@ -3677,6 +3708,8 @@ def anotesubmit(data, template=""):
|
||||
assert type(data) is str and type(template) is str
|
||||
# Maybe check for length at some point
|
||||
# For now just send it to storage
|
||||
if(data != vars.authornote):
|
||||
setgamesaved(False)
|
||||
vars.authornote = data
|
||||
|
||||
if(vars.authornotetemplate != template):
|
||||
@ -3964,6 +3997,7 @@ def saveRequest(savpath):
|
||||
filename = filename[:-5]
|
||||
vars.laststory = filename
|
||||
emit('from_server', {'cmd': 'setstoryname', 'data': vars.laststory}, broadcast=True)
|
||||
setgamesaved(True)
|
||||
print("{0}Story saved to {1}!{2}".format(colors.GREEN, path.basename(savpath), colors.END))
|
||||
|
||||
#==================================================================#
|
||||
@ -4113,6 +4147,7 @@ def loadRequest(loadpath, filename=None):
|
||||
_filename = filename[:-5]
|
||||
vars.laststory = _filename
|
||||
emit('from_server', {'cmd': 'setstoryname', 'data': vars.laststory}, broadcast=True)
|
||||
setgamesaved(True)
|
||||
sendwi()
|
||||
emit('from_server', {'cmd': 'setmemory', 'data': vars.memory}, broadcast=True)
|
||||
emit('from_server', {'cmd': 'setanote', 'data': vars.authornote}, broadcast=True)
|
||||
@ -4157,7 +4192,8 @@ def spRequest(filename):
|
||||
tensor = np.float32(tensor)
|
||||
assert not np.isinf(tensor).any() and not np.isnan(tensor).any()
|
||||
|
||||
vars.sp_length = tensor.shape[0]
|
||||
vars.sp_length = tensor.shape[-2]
|
||||
vars.spmeta["n_tokens"] = vars.sp_length
|
||||
|
||||
if(vars.model in ("TPUMeshTransformerGPTJ",)):
|
||||
rows = tensor.shape[0]
|
||||
@ -4319,6 +4355,7 @@ def importgame():
|
||||
# Refresh game screen
|
||||
vars.laststory = None
|
||||
emit('from_server', {'cmd': 'setstoryname', 'data': vars.laststory}, broadcast=True)
|
||||
setgamesaved(False)
|
||||
sendwi()
|
||||
emit('from_server', {'cmd': 'setmemory', 'data': vars.memory}, broadcast=True)
|
||||
emit('from_server', {'cmd': 'setanote', 'data': vars.authornote}, broadcast=True)
|
||||
@ -4399,6 +4436,7 @@ def importAidgRequest(id):
|
||||
# Refresh game screen
|
||||
vars.laststory = None
|
||||
emit('from_server', {'cmd': 'setstoryname', 'data': vars.laststory}, broadcast=True)
|
||||
setgamesaved(False)
|
||||
sendwi()
|
||||
emit('from_server', {'cmd': 'setmemory', 'data': vars.memory}, broadcast=True)
|
||||
emit('from_server', {'cmd': 'setanote', 'data': vars.authornote}, broadcast=True)
|
||||
@ -4456,6 +4494,7 @@ def wiimportrequest():
|
||||
print("{0}".format(vars.worldinfo[0]))
|
||||
|
||||
# Refresh game screen
|
||||
setgamesaved(False)
|
||||
sendwi()
|
||||
|
||||
#==================================================================#
|
||||
@ -4488,6 +4527,7 @@ def newGameRequest():
|
||||
# Refresh game screen
|
||||
vars.laststory = None
|
||||
emit('from_server', {'cmd': 'setstoryname', 'data': vars.laststory}, broadcast=True)
|
||||
setgamesaved(True)
|
||||
sendwi()
|
||||
emit('from_server', {'cmd': 'setmemory', 'data': vars.memory}, broadcast=True)
|
||||
emit('from_server', {'cmd': 'setanote', 'data': vars.authornote}, broadcast=True)
|
||||
@ -4501,6 +4541,7 @@ def randomGameRequest(topic, memory=""):
|
||||
vars.recentrng = topic
|
||||
vars.recentrngm = memory
|
||||
newGameRequest()
|
||||
setgamesaved(False)
|
||||
_memory = memory
|
||||
if(len(memory) > 0):
|
||||
_memory = memory.rstrip() + "\n\n"
|
||||
|
Reference in New Issue
Block a user