diff --git a/klite.embd b/klite.embd index 9a17dc57e..b13adf3dc 100644 --- a/klite.embd +++ b/klite.embd @@ -4860,12 +4860,16 @@ Current version: 114 try { let new_loaded_storyobj = JSON.parse(text); //we don't want to fiddle with the file as its very complex. only handle the parts we are interested in, and just leave the rest untouched. - if (new_loaded_storyobj.prompt == null) { + if (new_loaded_storyobj.prompt != null && !new_loaded_storyobj.scenarioVersion) { //quick sanity check. if prompt does not exist, this is not a KAI save. - + kai_json_load(new_loaded_storyobj,false); + if (selectedFilename && selectedFilename != "") { + last_known_filename = selectedFilename; + } + } else { //check for tavernai fields - if (new_loaded_storyobj.name != null || new_loaded_storyobj.description != null || - new_loaded_storyobj.personality != null || new_loaded_storyobj.spec=="chara_card_v2") { + if (!new_loaded_storyobj.scenarioVersion && (new_loaded_storyobj.name != null || new_loaded_storyobj.description != null || + new_loaded_storyobj.personality != null || new_loaded_storyobj.spec=="chara_card_v2")) { load_tavern_obj(new_loaded_storyobj); } else if (new_loaded_storyobj.char_name != null || new_loaded_storyobj.char_persona != null) { @@ -4876,14 +4880,17 @@ Current version: 114 { kai_json_load(new_loaded_storyobj,false); } + else if(new_loaded_storyobj.scenarioVersion>1 && new_loaded_storyobj.scenarioVersion<10) + { + nai_json_load(new_loaded_storyobj); + } + else if(new_loaded_storyobj.lorebookVersion>1 && new_loaded_storyobj.lorebookVersion<10) + { + current_wi = load_nai_wi(new_loaded_storyobj); + } else { msgbox("Could not load selected json file. Does not appear to be a KoboldAI story or compatible format."); } - } else { - kai_json_load(new_loaded_storyobj,false); - if (selectedFilename && selectedFilename != "") { - last_known_filename = selectedFilename; - } } } catch (e) { console.log(e) @@ -5282,6 +5289,7 @@ Current version: 114 } function load_ooba_obj(obj) { + console.log("Loading ooba obj"); let chatopponent = obj.char_name?obj.char_name:defaultchatopponent; let myname = ((localsettings.chatname && localsettings.chatname!="")?localsettings.chatname:"You"); let memory = obj.char_persona?("Persona: "+obj.char_persona):""; @@ -5306,6 +5314,53 @@ Current version: 114 localsettings.gui_type_chat = 2; render_gametext(true); } + function nai_json_load(obj) + { + console.log("Loading nai obj"); + restart_new_game(false); + if(obj.prompt!="") + { + gametext_arr.push(obj.prompt); + } + current_memory = ""; + if(obj.context && obj.context.length>0) + { + for(let i=0;i0) + { + key = itm.keys[0]; + } + + let nwi = { + "key": key, + "keysecondary": "", + "content": itm.text, + "comment": "", + "folder": null, + "selective": false, + "constant": false + }; + loadedwi.push(nwi); + } + return loadedwi; + } function get_aetherroom_scenario() { @@ -7998,7 +8053,7 @@ Current version: 114 localsettings.max_length = cleannum(localsettings.max_length, 1, (localsettings.max_context_length-1)); localsettings.temperature = cleannum(localsettings.temperature, 0.01, 5); localsettings.rep_pen = cleannum(localsettings.rep_pen, 0.1, 5); - localsettings.rep_pen_range = cleannum(localsettings.rep_pen_range, 0, 8192); + localsettings.rep_pen_range = cleannum(localsettings.rep_pen_range, 0, localsettings.max_context_length); localsettings.rep_pen_slope = cleannum(localsettings.rep_pen_slope, 0, 20); localsettings.top_p = cleannum(localsettings.top_p, 0.002, 1); localsettings.min_p = cleannum(localsettings.min_p, 0.0, 1); @@ -8419,7 +8474,7 @@ Current version: 114 function reset_all_settings() { - msgboxYesNo("Reset ALL settings to their defaults? This will also reset your aesthetic UI and your current story! Your saved endpoints and API keys will be unaffected.","Confirm Reset All Settings",()=>{ + msgboxYesNo("Reset ALL settings to their defaults? This will also reset your aesthetic UI and your current story!","Confirm Reset All Settings",()=>{ localsettings = JSON.parse(JSON.stringify(defaultsettings)); let ns = new AestheticInstructUISettings(); aestheticInstructUISettings = deepCopyAestheticSettings(ns); @@ -8783,6 +8838,18 @@ Current version: 114 } } + function test_tts() + { + inputBox("Enter phrase to speak.","Test TTS","","Input text to speak", ()=>{ + let userinput = getInputBoxValue(); + userinput = userinput.trim(); + let ssval = document.getElementById("ttsselect").value; + if (userinput != null && userinput!="" && ssval > 0) { + tts_speak(userinput,ssval); + } + },false); + } + function toggle_tts_mode() { if(document.getElementById("ttsselect").value==XTTS_ID) @@ -8813,12 +8880,17 @@ Current version: 114 } },false); } - function tts_speak(text) + function tts_speak(text, speech_synth_override=null) { if(!text || text=="" || text.trim()=="") { return; } + let ssval = localsettings.speech_synth; + if(speech_synth_override!=null) + { + ssval = speech_synth_override; + } if(localsettings.narrate_only_dialog) { // Remove text within asterisks and the asterisks, then trim @@ -8841,7 +8913,7 @@ Current version: 114 } } - if(localsettings.speech_synth==XTTS_ID) //xtts api server + if(ssval==XTTS_ID) //xtts api server { if(xtts_is_connected) { @@ -8877,7 +8949,7 @@ Current version: 114 { if ('speechSynthesis' in window) { let utterance = new window.SpeechSynthesisUtterance(text); - utterance.voice = window.speechSynthesis.getVoices()[localsettings.speech_synth - 1]; + utterance.voice = window.speechSynthesis.getVoices()[ssval - 1]; window.speechSynthesis.speak(utterance); } } @@ -9794,7 +9866,8 @@ Current version: 114 { if(localsettings.opmode==1) { - submit_payload.prompt = submit_payload.prompt + " \n ASSISTANT: Here is a continuation of the story: \nASSISTANT:"; + submit_payload.prompt = submit_payload.prompt + " \nASSISTANT: Here is a direct partial continuation of the story without repeating it: \nASSISTANT:"; + submit_payload.params.max_length += 100; //add length } urlbase = default_gemini_base; @@ -13738,8 +13811,9 @@ Current version: 114
TTS ?Enable Text-To-Speech to have your story automatically read to you.
- +