diff --git a/aiserver.py b/aiserver.py index 05f7a85a..2652ea4b 100644 --- a/aiserver.py +++ b/aiserver.py @@ -2788,7 +2788,7 @@ def actionback(): vars.recentback = True remove_story_chunk(last_key + 1) #for the redo to not get out of whack, need to reset the max # in the actions sequence - vars.actions.set_next_id(vars.actions.get_last_key()) + vars.actions.set_next_id(last_key) elif(len(vars.genseqs) == 0): emit('from_server', {'cmd': 'errmsg', 'data': "Cannot delete the prompt."}) else: @@ -2801,10 +2801,9 @@ def actionredo(): genout = [{"generated_text": item['Text']} for item in vars.actions_metadata[vars.actions.get_last_key()+1]['Alternative Text'] if (item["Previous Selection"]==True)] if len(genout) > 0: genout = genout + [{"generated_text": item['Text']} for item in vars.actions_metadata[vars.actions.get_last_key()+1]['Alternative Text'] if (item["Pinned"]==True) and (item["Previous Selection"]==False)] - if len(genout) == 1: vars.actions_metadata[vars.actions.get_last_key()+1]['Alternative Text'] = [item for item in vars.actions_metadata[vars.actions.get_last_key()+1]['Alternative Text'] if (item["Previous Selection"]!=True)] - genresult(genout[0]['generated_text'], flash=True) + genresult(genout[0]['generated_text'], flash=True, ignore_formatting=True) else: # Store sequences in memory until selection is made vars.genseqs = genout @@ -2812,6 +2811,7 @@ def actionredo(): # Send sequences to UI for selection genout = [[item['Text'], "redo"] for item in vars.actions_metadata[vars.actions.get_last_key()+1]['Alternative Text'] if (item["Previous Selection"]==True)] + emit('from_server', {'cmd': 'genseqs', 'data': genout}, broadcast=True) else: emit('from_server', {'cmd': 'popuperror', 'data': "There's nothing to undo"}, broadcast=True) @@ -3192,12 +3192,13 @@ def generate(txt, minimum, maximum, found_entries=None): #==================================================================# # Deal with a single return sequence from generate() #==================================================================# -def genresult(genout, flash=True): +def genresult(genout, flash=True, ignore_formatting=False): if not vars.quiet: print("{0}{1}{2}".format(colors.CYAN, genout, colors.END)) # Format output before continuing - genout = applyoutputformatting(genout) + if not ignore_formatting: + genout = applyoutputformatting(genout) vars.lua_koboldbridge.feedback = genout @@ -4619,8 +4620,6 @@ def loadRequest(loadpath, filename=None): emit('from_server', {'cmd': 'hidegenseqs', 'data': ''}, broadcast=True) print("{0}Story loaded from {1}!{2}".format(colors.GREEN, filename, colors.END)) - print([k for k in vars.actions]) - print([k for k in vars.actions_metadata]) send_debug() #==================================================================# @@ -5031,7 +5030,7 @@ def send_debug(): except: pass try: - debug_info = "{}Actions: {}\n".format(debug_info, vars.actions.get_last_key()) + debug_info = "{}Actions: {}\n".format(debug_info, [k for k in vars.actions]) except: pass try: diff --git a/structures.py b/structures.py index 287f92c1..53bf1ba2 100644 --- a/structures.py +++ b/structures.py @@ -19,10 +19,16 @@ class KoboldStoryRegister(collections.OrderedDict): return self.popitem()[1] def get_first_key(self) -> int: - return next(iter(self)) + if len(self) == 0: + return -1 + else: + return next(iter(self)) def get_last_key(self) -> int: - return next(reversed(self)) + if len(self) == 0: + return -1 + else: + return next(reversed(self)) def __getitem__(self, k: int) -> str: return super().__getitem__(k)