Skip to content

Commit ff64c30

Browse files
committed
fixed misc lite bugs, tts parsing issues, klite connectivity process
1 parent 57e8c14 commit ff64c30

File tree

2 files changed

+100
-58
lines changed

2 files changed

+100
-58
lines changed

klite.embd

Lines changed: 91 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ Current version indicated by LITEVER below.
1212
-->
1313

1414
<script>
15-
const LITEVER = 204;
15+
const LITEVER = 205;
1616
const urlParams = new URLSearchParams(window.location.search);
1717
var localflag = true;
1818
const STORAGE_PREFIX = (localflag?"e_":"")+"kaihordewebui_";
@@ -2939,6 +2939,7 @@ Current version indicated by LITEVER below.
29392939
var temp_scenario = null;
29402940
var last_token_budget = ""; //to display token limits
29412941
var last_known_filename = "saved_story.json";
2942+
var backup_localmodeport = 5001; //sometimes we reattempt a different port, this stores a backup
29422943
var localmodeport = 5001;
29432944
var localmodehost = "localhost";
29442945
var localprotocol = "http://";
@@ -3639,6 +3640,7 @@ Current version indicated by LITEVER below.
36393640
if (inputport) {
36403641
localmodeport = parseInt(inputport);
36413642
}
3643+
backup_localmodeport = localmodeport;
36423644

36433645
let inputhost = urlParams.get('host');
36443646
sublocalpathname = "";
@@ -3947,15 +3949,21 @@ initializeInstructUIFunctionality();
39473949
}
39483950
function replace_noninstruct_placeholders(inputtxt,escape=false)
39493951
{
3952+
let firstopponent = localsettings.chatopponent;
3953+
if (firstopponent && firstopponent.includes("||$||")) {
3954+
let coarr = firstopponent.split("||$||");
3955+
coarr = coarr.filter(x => (x && x != ""));
3956+
firstopponent = coarr.length>0?coarr[0]:defaultchatopponent;
3957+
}
39503958
if(escape)
39513959
{
39523960
inputtxt = replaceAll(inputtxt,"{{user}}",escape_html(localsettings.chatname?localsettings.chatname:"User"),true);
3953-
inputtxt = replaceAll(inputtxt,"{{char}}",escape_html(localsettings.chatopponent?localsettings.chatopponent:defaultchatopponent),true);
3961+
inputtxt = replaceAll(inputtxt,"{{char}}",escape_html(localsettings.chatopponent?firstopponent:defaultchatopponent),true);
39543962
}
39553963
else
39563964
{
39573965
inputtxt = replaceAll(inputtxt,"{{user}}",(localsettings.chatname?localsettings.chatname:"User"),true);
3958-
inputtxt = replaceAll(inputtxt,"{{char}}",(localsettings.chatopponent?localsettings.chatopponent:defaultchatopponent),true);
3966+
inputtxt = replaceAll(inputtxt,"{{char}}",(localsettings.chatopponent?firstopponent:defaultchatopponent),true);
39593967
}
39603968

39613969
for(let i=0;i<placeholder_tags_data.length;++i)
@@ -5136,10 +5144,10 @@ initializeInstructUIFunctionality();
51365144
}
51375145
}
51385146

5139-
5140-
5141-
5142-
5147+
function clear_cors_proxy_flag()
5148+
{
5149+
uses_cors_proxy = false;
5150+
}
51435151

51445152
// attempt to connect to the selected backend
51455153
function attempt_connect(popup_aiselect = true)
@@ -9093,6 +9101,9 @@ initializeInstructUIFunctionality();
90939101
custom_cohere_key = "";
90949102

90959103
let epchoice = document.getElementById("customapidropdown").value;
9104+
document.getElementById("connectstatusproxied").classList.add("hidden");
9105+
document.getElementById("connectstatus").innerHTML = "Connecting";
9106+
90969107
if(epchoice==0) //ai horde
90979108
{
90989109
confirm_horde_models();
@@ -9125,6 +9136,7 @@ initializeInstructUIFunctionality();
91259136
custom_kobold_key = desiredkoboldkey;
91269137

91279138
let fetchedurl = apply_proxy_url(desiredkoboldendpoint + kobold_custom_mdl_endpoint);
9139+
91289140
fetch(fetchedurl,{
91299141
method: 'GET',
91309142
headers: get_kobold_header(),
@@ -9147,6 +9159,15 @@ initializeInstructUIFunctionality();
91479159
custom_kobold_endpoint = "";
91489160
render_gametext();
91499161
} else {
9162+
9163+
if(uses_cors_proxy && !is_local_url(fetchedurl))
9164+
{
9165+
document.getElementById("connectstatusproxied").classList.remove("hidden");
9166+
}else
9167+
{
9168+
document.getElementById("connectstatusproxied").classList.add("hidden");
9169+
}
9170+
91509171
//good to go
91519172
custom_kobold_endpoint = desiredkoboldendpoint;
91529173
custom_kobold_key = desiredkoboldkey;
@@ -9365,34 +9386,40 @@ initializeInstructUIFunctionality();
93659386

93669387
let is_local = is_local_url(custom_kobold_endpoint);
93679388

9368-
if (uses_cors_proxy || is_local) {
9369-
if(is_local && sublocalpathname!="")
9370-
{
9371-
sublocalpathname = ""; //one more try
9372-
attempt_connect(false);
9373-
}
9374-
else if(is_local && reattempt_local_port80)
9375-
{
9376-
reattempt_local_port80 = false;
9377-
localmodeport = 80;
9378-
attempt_connect(false);
9379-
}
9380-
else
9389+
//we will go down the fallbacks one by one until we run out of options
9390+
localmodeport = backup_localmodeport;
9391+
if(is_local && sublocalpathname!="")
9392+
{
9393+
sublocalpathname = ""; // first fallback, check subdir paths
9394+
attempt_connect(false);
9395+
}
9396+
else if(reattempt_local_port80) // second fallback, try port 80
9397+
{
9398+
reattempt_local_port80 = false;
9399+
localmodeport = 80;
9400+
attempt_connect(false);
9401+
}
9402+
else if(!is_local && !uses_cors_proxy) //third fallback, use cors proxy if not a local IP
9403+
{
9404+
uses_cors_proxy = true; // fallback to cors proxy, this will remain for rest of session
9405+
connect_custom_endpoint(); //one more try
9406+
}
9407+
else //finally, we give up
9408+
{
9409+
msgbox("Failed to connect to Custom KoboldAI Endpoint!<br><br>Please check if KoboldAI is running at the url: " + desiredkoboldendpoint + "<br><br>You can also <a href='#' class='color_blueurl' onclick='hide_popups();display_endpoint_container();'>try a different URL or API type</a>.","Error Encountered",true);
9410+
selected_models = [];
9411+
selected_workers = [];
9412+
custom_kobold_endpoint = "";
9413+
if(localflag)
93819414
{
9382-
msgbox("Failed to connect to Custom KoboldAI Endpoint!<br><br>Please check if KoboldAI is running at the url: " + desiredkoboldendpoint + "<br><br>You can also <a href='#' class='color_blueurl' onclick='hide_popups();display_endpoint_container();'>try a different URL or API type</a>.","Error Encountered",true);
9383-
selected_models = [];
9384-
selected_workers = [];
9385-
custom_kobold_endpoint = "";
9386-
if(localflag)
9387-
{
9388-
document.getElementById("connectstatus").innerHTML = "Offline Mode";
9389-
}
9390-
render_gametext();
9415+
document.getElementById("connectstatus").innerHTML = "Offline Mode";
9416+
}else{
9417+
document.getElementById("connectstatus").innerHTML = "Error";
93919418
}
9392-
} else {
9393-
uses_cors_proxy = true; //fallback to cors proxy, this will remain for rest of session
9394-
connect_custom_endpoint(); //one more try
9419+
9420+
render_gametext();
93959421
}
9422+
93969423
});
93979424
}
93989425
}
@@ -9491,6 +9518,11 @@ initializeInstructUIFunctionality();
94919518
{
94929519
dismiss_endpoint_container();
94939520

9521+
if(desired_claude_ep.toLowerCase().includes("api.anthropic.com"))
9522+
{
9523+
document.getElementById("connectstatusproxied").classList.remove("hidden");
9524+
}
9525+
94949526
//good to go
94959527
custom_claude_endpoint = desired_claude_ep;
94969528
custom_claude_key = desired_claude_key;
@@ -9900,12 +9932,19 @@ initializeInstructUIFunctionality();
99009932
custom_palm_key = "";
99019933
custom_cohere_key = "";
99029934

9903-
if (selected_idx_arr.length > 0) {
9904-
let prep_sel_models = [];
9905-
let prep_sel_workers = []; //if selected, pick a specific worker ids to use
9935+
let prep_sel_models = [];
9936+
let prep_sel_workers = []; //if selected, pick a specific worker ids to use
99069937

9907-
let manualworker = (document.getElementById("manualworker").checked ? true : false);
9938+
let manualworker = (document.getElementById("manualworker").checked ? true : false);
99089939

9940+
if (selected_idx_arr.length == 0) { //select everything
9941+
manualworker = false;
9942+
for (let i = 0; i < models_data.length; ++i) {
9943+
prep_sel_models.push(models_data[i]);
9944+
}
9945+
}
9946+
else
9947+
{
99099948
for (var i = 0; i < selected_idx_arr.length; ++i) {
99109949
if (manualworker) //we are looping through selected workers
99119950
{
@@ -9925,24 +9964,24 @@ initializeInstructUIFunctionality();
99259964
prep_sel_models.push(addedmodel);
99269965
}
99279966
}
9967+
}
99289968

9929-
//remove undefined and nulls
9930-
prep_sel_models = prep_sel_models.filter(x=>x);
9931-
prep_sel_workers = prep_sel_workers.filter(x=>x);
9969+
//remove undefined and nulls
9970+
prep_sel_models = prep_sel_models.filter(x=>x);
9971+
prep_sel_workers = prep_sel_workers.filter(x=>x);
99329972

9933-
selected_models = prep_sel_models;
9934-
selected_workers = prep_sel_workers;
9935-
localsettings.my_api_key = document.getElementById("apikey").value;
9936-
if(localsettings.my_api_key==null || localsettings.my_api_key=="")
9937-
{
9938-
localsettings.my_api_key = defaultsettings.my_api_key;
9939-
}
9973+
selected_models = prep_sel_models;
9974+
selected_workers = prep_sel_workers;
9975+
localsettings.my_api_key = document.getElementById("apikey").value;
9976+
if(localsettings.my_api_key==null || localsettings.my_api_key=="")
9977+
{
9978+
localsettings.my_api_key = defaultsettings.my_api_key;
9979+
}
99409980

9941-
document.getElementById("connectstatus").innerHTML = "AI Horde";
9981+
render_gametext();
9982+
hide_popups();
99429983

9943-
render_gametext();
9944-
hide_popups();
9945-
}
9984+
document.getElementById("connectstatus").innerHTML = "AI Horde";
99469985
}
99479986

99489987
function delete_my_worker(index)
@@ -19062,6 +19101,7 @@ initializeInstructUIFunctionality();
1906219101
<div id="connectstatusdiv">
1906319102
<div id="connectstatus">Connecting</div>
1906419103
<div class="hidden" style="font-size: 12px;" id="connectstatusmultiplayer"></div>
19104+
<div class="hidden color_orange" style="font-size: 12px;" id="connectstatusproxied">(Proxied)</div>
1906519105
</div>
1906619106
</div>
1906719107

@@ -19591,7 +19631,7 @@ initializeInstructUIFunctionality();
1959119631
</span>
1959219632
</div>
1959319633
<div class="popupfooter">
19594-
<button type="button" class="btn btn-primary" onclick="connect_custom_endpoint()">Ok</button>
19634+
<button type="button" class="btn btn-primary" onclick="clear_cors_proxy_flag();connect_custom_endpoint()">Ok</button>
1959519635
<button type="button" class="btn btn-primary" onclick="dismiss_endpoint_container()">Cancel</button>
1959619636
</div>
1959719637
</div>

otherarch/tts_adapter.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -336,13 +336,12 @@ static std::string process_text(const std::string & text, TTS_VER ver) {
336336
std::transform(processed_text.begin(), processed_text.end(),
337337
processed_text.begin(), ::tolower);
338338

339-
// replace multiple punctuation with single
340-
processed_text = std::regex_replace(processed_text, std::regex(R"(([,.!?])\1+)"), "$1");
341-
//handle words connected by periods, replace the matches with " dot ".
342-
processed_text = std::regex_replace(processed_text, std::regex(R"((\S)\.(\S))"), "$1 dot $2");
343-
344339
if(ver==TTS_VER_2)
345340
{
341+
// replace multiple punctuation with single
342+
processed_text = std::regex_replace(processed_text, std::regex(R"(([,.!?])\1+)"), "$1");
343+
//handle words connected by periods, add a space
344+
processed_text = std::regex_replace(processed_text, std::regex(R"(([.,?!])([^\s]))"), "$1 $2"); //add space after punctuation
346345
std::regex special_chars(R"([\(\)\[\]\{\}\:-_/,\.\\])");
347346
processed_text = std::regex_replace(processed_text, special_chars, " ");
348347
std::regex non_alpha(R"([^a-z\s])");
@@ -356,12 +355,15 @@ static std::string process_text(const std::string & text, TTS_VER ver) {
356355
processed_text = std::regex_replace(processed_text, special_chars, " ");
357356
std::regex non_alpha(R"([^a-z\s.,?!])");
358357
processed_text = std::regex_replace(processed_text, non_alpha, "");
358+
processed_text = std::regex_replace(processed_text, std::regex(R"(\s+)"), " "); // compress multiple spaces
359+
processed_text = std::regex_replace(processed_text, std::regex(R"(([,.!?])\1+)"), "$1"); // replace multiple punctuation with single
360+
processed_text = std::regex_replace(processed_text, std::regex(R"(\s+([.,!?]))"), "$1"); // Remove whitespace before punctuation
361+
processed_text = std::regex_replace(processed_text, std::regex(R"(([.,?!])([^\s]))"), "$1 $2"); //add space after punctuation
359362
processed_text = std::regex_replace(processed_text, std::regex(R"(\,)"), "<|comma|>");
360363
processed_text = std::regex_replace(processed_text, std::regex(R"(\.)"), "<|period|>");
361364
processed_text = std::regex_replace(processed_text, std::regex(R"(\?)"), "<|question_mark|>");
362365
processed_text = std::regex_replace(processed_text, std::regex(R"(\!)"), "<|exclamation_mark|>");
363-
std::regex multiple_spaces(R"(\s+)");
364-
processed_text = std::regex_replace(processed_text, multiple_spaces, " ");
366+
processed_text = std::regex_replace(processed_text, std::regex(R"(\s+)"), " "); // compress multiple spaces
365367
processed_text = std::regex_replace(processed_text, std::regex(R"(^\s+|\s+$)"), "");
366368
processed_text = std::regex_replace(processed_text, std::regex(R"(\s)"), "<|space|>");
367369
}

0 commit comments

Comments
 (0)