maidr 2.22.1 → 2.23.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/maidr.js +151 -73
- package/dist/maidr.min.js +1 -1
- package/package.json +1 -1
package/dist/maidr.js
CHANGED
|
@@ -405,7 +405,7 @@ class Constants {
|
|
|
405
405
|
* @default 0
|
|
406
406
|
* @memberof AdvancedUserSettings
|
|
407
407
|
*/
|
|
408
|
-
canTrack =
|
|
408
|
+
canTrack = 1; // 0 / 1, can we track user data
|
|
409
409
|
/**
|
|
410
410
|
* How are we representing braille? like, is it 1:1 with the chart, or do we do some compression and try to represent as accuratly as we can? Not currently in use.
|
|
411
411
|
* @type {boolean}
|
|
@@ -446,6 +446,7 @@ class Constants {
|
|
|
446
446
|
'LLMGeminiMulti',
|
|
447
447
|
'LLMModels',
|
|
448
448
|
'autoInitLLM',
|
|
449
|
+
'clientToken',
|
|
449
450
|
];
|
|
450
451
|
|
|
451
452
|
// LLM settings
|
|
@@ -644,6 +645,17 @@ class Constants {
|
|
|
644
645
|
*/
|
|
645
646
|
manualData = true; // pull from manual data like chart2music (true), or do the old method where we pull from the chart (false)
|
|
646
647
|
|
|
648
|
+
/**
|
|
649
|
+
* Base URL for the API calls to backend services.
|
|
650
|
+
*/
|
|
651
|
+
// baseURL = 'https://maidr-service.azurewebsites.net/api/';
|
|
652
|
+
baseURL = 'http://localhost:7071/api/';
|
|
653
|
+
|
|
654
|
+
// code = '?code=I8Aa2PlPspjQ8Hks0QzGyszP8_i2-XJ3bq7Xh8-ykEe4AzFuYn_QWA%3D%3D';
|
|
655
|
+
code = '';
|
|
656
|
+
|
|
657
|
+
clientToken = null;
|
|
658
|
+
|
|
647
659
|
/**
|
|
648
660
|
* Stops the autoplay if it is currently running.
|
|
649
661
|
*
|
|
@@ -1203,14 +1215,18 @@ class Menu {
|
|
|
1203
1215
|
document.getElementById('LLM_model_openai'),
|
|
1204
1216
|
'change',
|
|
1205
1217
|
function (e) {
|
|
1206
|
-
if (
|
|
1207
|
-
|
|
1208
|
-
.getElementById('openai_auth_key_container')
|
|
1209
|
-
.classList.remove('hidden');
|
|
1218
|
+
if (constants.clientToken && constants.emailAuthKey) {
|
|
1219
|
+
console.log('Client token and email auth key already set');
|
|
1210
1220
|
} else {
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1221
|
+
if (e.target.checked) {
|
|
1222
|
+
document
|
|
1223
|
+
.getElementById('openai_auth_key_container')
|
|
1224
|
+
.classList.remove('hidden');
|
|
1225
|
+
} else {
|
|
1226
|
+
document
|
|
1227
|
+
.getElementById('openai_auth_key_container')
|
|
1228
|
+
.classList.add('hidden');
|
|
1229
|
+
}
|
|
1214
1230
|
}
|
|
1215
1231
|
},
|
|
1216
1232
|
]);
|
|
@@ -1219,14 +1235,18 @@ class Menu {
|
|
|
1219
1235
|
document.getElementById('LLM_model_gemini'),
|
|
1220
1236
|
'change',
|
|
1221
1237
|
function (e) {
|
|
1222
|
-
if (
|
|
1223
|
-
|
|
1224
|
-
.getElementById('gemini_auth_key_container')
|
|
1225
|
-
.classList.remove('hidden');
|
|
1238
|
+
if (constants.clientToken && constants.emailAuthKey) {
|
|
1239
|
+
console.log('Client token and email auth key already set');
|
|
1226
1240
|
} else {
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1241
|
+
if (e.target.checked) {
|
|
1242
|
+
document
|
|
1243
|
+
.getElementById('gemini_auth_key_container')
|
|
1244
|
+
.classList.remove('hidden');
|
|
1245
|
+
} else {
|
|
1246
|
+
document
|
|
1247
|
+
.getElementById('gemini_auth_key_container')
|
|
1248
|
+
.classList.add('hidden');
|
|
1249
|
+
}
|
|
1230
1250
|
}
|
|
1231
1251
|
},
|
|
1232
1252
|
]);
|
|
@@ -1235,18 +1255,26 @@ class Menu {
|
|
|
1235
1255
|
document.getElementById('LLM_model_claude'),
|
|
1236
1256
|
'change',
|
|
1237
1257
|
function (e) {
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
// .classList.add('hidden');
|
|
1246
|
-
// }
|
|
1258
|
+
if (constants.clientToken && constants.emailAuthKey) {
|
|
1259
|
+
console.log('Client token and email auth key already set');
|
|
1260
|
+
} else {
|
|
1261
|
+
document
|
|
1262
|
+
.getElementById('claude_auth_key_container')
|
|
1263
|
+
.classList.add('hidden');
|
|
1264
|
+
}
|
|
1247
1265
|
},
|
|
1248
1266
|
]);
|
|
1249
1267
|
|
|
1268
|
+
constants.events.push([
|
|
1269
|
+
document
|
|
1270
|
+
.getElementById('email_auth_key')
|
|
1271
|
+
.addEventListener('keydown', function (event) {
|
|
1272
|
+
if (event.key === 'Enter') {
|
|
1273
|
+
document.getElementById('verify').click();
|
|
1274
|
+
}
|
|
1275
|
+
}),
|
|
1276
|
+
]);
|
|
1277
|
+
|
|
1250
1278
|
// Skill level other events
|
|
1251
1279
|
constants.events.push([
|
|
1252
1280
|
document.getElementById('skill_level'),
|
|
@@ -1293,6 +1321,9 @@ class Menu {
|
|
|
1293
1321
|
if (checked.length > 2) {
|
|
1294
1322
|
checkbox.checked = false;
|
|
1295
1323
|
alert('You can select up to 2 AI models.');
|
|
1324
|
+
} else if (checked.length === 0) {
|
|
1325
|
+
checkbox.checked = true;
|
|
1326
|
+
alert('You must select at least one AI model.');
|
|
1296
1327
|
}
|
|
1297
1328
|
});
|
|
1298
1329
|
});
|
|
@@ -1393,12 +1424,17 @@ class Menu {
|
|
|
1393
1424
|
document.getElementById('aria_mode_assertive').checked = false;
|
|
1394
1425
|
}
|
|
1395
1426
|
|
|
1396
|
-
|
|
1397
|
-
|
|
1427
|
+
if (constants.emailAuthKey && constants.clientToken) {
|
|
1428
|
+
console.log('email auth key and client token found');
|
|
1429
|
+
this.DisableLLMAPIKeys();
|
|
1430
|
+
} else {
|
|
1431
|
+
for (let model in constants.LLMModels) {
|
|
1432
|
+
document.getElementById(`LLM_model_${model}`).checked = true;
|
|
1398
1433
|
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1434
|
+
document
|
|
1435
|
+
.getElementById(`${model}_auth_key_container`)
|
|
1436
|
+
.classList.remove('hidden');
|
|
1437
|
+
}
|
|
1402
1438
|
}
|
|
1403
1439
|
document
|
|
1404
1440
|
.getElementById(`claude_auth_key_container`)
|
|
@@ -1477,38 +1513,75 @@ class Menu {
|
|
|
1477
1513
|
}
|
|
1478
1514
|
}
|
|
1479
1515
|
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
if (email && email.indexOf('@') !== -1) {
|
|
1483
|
-
let url = `https://maidr-service.azurewebsites.net/api/send_email?code=I8Aa2PlPspjQ8Hks0QzGyszP8_i2-XJ3bq7Xh8-ykEe4AzFuYn_QWA%3D%3D`;
|
|
1516
|
+
DisableLLMAPIKeys() {
|
|
1517
|
+
document.getElementById('email_auth_key').disabled = true;
|
|
1484
1518
|
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
};
|
|
1519
|
+
// hide verify button
|
|
1520
|
+
document.getElementById('verify').classList.add('hidden');
|
|
1488
1521
|
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
})
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1522
|
+
// remove listener on enter
|
|
1523
|
+
document
|
|
1524
|
+
.getElementById('email_auth_key')
|
|
1525
|
+
.removeEventListener('keydown', function (event) {
|
|
1526
|
+
if (event.key === 'Enter') {
|
|
1527
|
+
document.getElementById('verify').click();
|
|
1528
|
+
}
|
|
1529
|
+
});
|
|
1530
|
+
}
|
|
1531
|
+
|
|
1532
|
+
isEmailTriggered = false;
|
|
1533
|
+
|
|
1534
|
+
VerifyEmail() {
|
|
1535
|
+
console.log('verify email');
|
|
1536
|
+
if (!this.isEmailTriggered) {
|
|
1537
|
+
this.isEmailTriggered = true;
|
|
1538
|
+
let email = document.getElementById('email_auth_key').value;
|
|
1539
|
+
if (email && email.indexOf('@') !== -1) {
|
|
1540
|
+
let url = constants.baseURL + `send_email` + constants.code;
|
|
1541
|
+
|
|
1542
|
+
let requestJson = {
|
|
1543
|
+
email: email,
|
|
1544
|
+
};
|
|
1545
|
+
|
|
1546
|
+
fetch(url, {
|
|
1547
|
+
method: 'POST',
|
|
1548
|
+
headers: {
|
|
1549
|
+
'Content-Type': 'application/json',
|
|
1550
|
+
Authentication: constants.emailAuthKey,
|
|
1551
|
+
},
|
|
1552
|
+
body: JSON.stringify(requestJson),
|
|
1505
1553
|
})
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1554
|
+
.then((response) => response.json())
|
|
1555
|
+
.then((data) => {
|
|
1556
|
+
if (data && data.message && data.client_token) {
|
|
1557
|
+
alert(data.message);
|
|
1558
|
+
constants.clientToken = data.client_token;
|
|
1559
|
+
|
|
1560
|
+
this.DisableLLMAPIKeys();
|
|
1561
|
+
|
|
1562
|
+
for (let model in constants.LLMModels) {
|
|
1563
|
+
document
|
|
1564
|
+
.getElementById(`${model}_auth_key_container`)
|
|
1565
|
+
.classList.add('hidden');
|
|
1566
|
+
}
|
|
1567
|
+
|
|
1568
|
+
this.SaveDataToLocalStorage();
|
|
1569
|
+
this.isEmailTriggered = false;
|
|
1570
|
+
} else {
|
|
1571
|
+
console.log(data);
|
|
1572
|
+
alert(data.data);
|
|
1573
|
+
this.isEmailTriggered = false;
|
|
1574
|
+
}
|
|
1575
|
+
})
|
|
1576
|
+
.catch((error) => {
|
|
1577
|
+
console.log(error);
|
|
1578
|
+
alert(error.data);
|
|
1579
|
+
this.isEmailTriggered = false;
|
|
1580
|
+
});
|
|
1581
|
+
} else {
|
|
1582
|
+
alert('Please enter a valid email address.');
|
|
1583
|
+
this.isEmailTriggered = false;
|
|
1584
|
+
}
|
|
1512
1585
|
}
|
|
1513
1586
|
}
|
|
1514
1587
|
|
|
@@ -1811,6 +1884,16 @@ class ChatLLM {
|
|
|
1811
1884
|
'click',
|
|
1812
1885
|
function (e) {
|
|
1813
1886
|
document.getElementById('email_auth_key').value = '';
|
|
1887
|
+
document.getElementById('email_auth_key').disabled = false;
|
|
1888
|
+
constants.clientToken = '';
|
|
1889
|
+
document.getElementById('verify').classList.remove('hidden');
|
|
1890
|
+
document
|
|
1891
|
+
.getElementById('email_auth_key')
|
|
1892
|
+
.addEventListener('keydown', function (event) {
|
|
1893
|
+
if (event.key === 'Enter') {
|
|
1894
|
+
document.getElementById('verify').click();
|
|
1895
|
+
}
|
|
1896
|
+
});
|
|
1814
1897
|
},
|
|
1815
1898
|
]);
|
|
1816
1899
|
constants.events.push([
|
|
@@ -2290,8 +2373,7 @@ class ChatLLM {
|
|
|
2290
2373
|
|
|
2291
2374
|
ClaudePromptAPI(text, imgBase64 = null) {
|
|
2292
2375
|
console.log('Claude prompt API');
|
|
2293
|
-
let url =
|
|
2294
|
-
'https://maidr-service.azurewebsites.net/api/claude?code=I8Aa2PlPspjQ8Hks0QzGyszP8_i2-XJ3bq7Xh8-ykEe4AzFuYn_QWA%3D%3D';
|
|
2376
|
+
let url = constants.baseURL + 'claude' + constants.code;
|
|
2295
2377
|
|
|
2296
2378
|
// Create the prompt
|
|
2297
2379
|
let prompt = constants.LLMSystemMessage;
|
|
@@ -2313,7 +2395,7 @@ class ChatLLM {
|
|
|
2313
2395
|
method: 'POST',
|
|
2314
2396
|
headers: {
|
|
2315
2397
|
'Content-Type': 'application/json',
|
|
2316
|
-
Authentication: constants.emailAuthKey,
|
|
2398
|
+
Authentication: constants.emailAuthKey + ' ' + constants.clientToken,
|
|
2317
2399
|
},
|
|
2318
2400
|
body: JSON.stringify(requestJson),
|
|
2319
2401
|
})
|
|
@@ -2368,17 +2450,15 @@ class ChatLLM {
|
|
|
2368
2450
|
|
|
2369
2451
|
OpenAIPromptAPI(text, img = null) {
|
|
2370
2452
|
// request init
|
|
2371
|
-
let url =
|
|
2372
|
-
'https://maidr-service.azurewebsites.net/api/openai?code=I8Aa2PlPspjQ8Hks0QzGyszP8_i2-XJ3bq7Xh8-ykEe4AzFuYn_QWA%3D%3D';
|
|
2453
|
+
let url = constants.baseURL + 'openai' + constants.code;
|
|
2373
2454
|
let auth = constants.openAIAuthKey;
|
|
2374
2455
|
let requestJson = chatLLM.OpenAIJson(text, img);
|
|
2375
|
-
console.log('LLM request: ', requestJson);
|
|
2376
2456
|
|
|
2377
2457
|
fetch(url, {
|
|
2378
2458
|
method: 'POST',
|
|
2379
2459
|
headers: {
|
|
2380
2460
|
'Content-Type': 'application/json',
|
|
2381
|
-
Authentication: constants.emailAuthKey,
|
|
2461
|
+
Authentication: constants.emailAuthKey + ' ' + constants.clientToken,
|
|
2382
2462
|
},
|
|
2383
2463
|
body: JSON.stringify(requestJson),
|
|
2384
2464
|
})
|
|
@@ -2402,7 +2482,7 @@ class ChatLLM {
|
|
|
2402
2482
|
if (!this.requestJson) {
|
|
2403
2483
|
this.requestJson = {};
|
|
2404
2484
|
//this.requestJson.model = 'gpt-4-vision-preview';
|
|
2405
|
-
this.requestJson.model = 'gpt-4o-2024-
|
|
2485
|
+
this.requestJson.model = 'gpt-4o-2024-11-20';
|
|
2406
2486
|
this.requestJson.max_tokens = constants.LLMmaxResponseTokens; // note: if this is too short (tested with less than 200), the response gets cut off
|
|
2407
2487
|
|
|
2408
2488
|
// sys message
|
|
@@ -2505,8 +2585,7 @@ class ChatLLM {
|
|
|
2505
2585
|
}
|
|
2506
2586
|
|
|
2507
2587
|
async GeminiPromptAPI(text, imgBase64 = null) {
|
|
2508
|
-
let url =
|
|
2509
|
-
'https://maidr-service.azurewebsites.net/api/gemini?code=I8Aa2PlPspjQ8Hks0QzGyszP8_i2-XJ3bq7Xh8-ykEe4AzFuYn_QWA%3D%3D';
|
|
2588
|
+
let url = constants.baseURL + 'gemini' + constants.code;
|
|
2510
2589
|
|
|
2511
2590
|
// Create the prompt
|
|
2512
2591
|
let prompt = constants.LLMSystemMessage;
|
|
@@ -2528,7 +2607,7 @@ class ChatLLM {
|
|
|
2528
2607
|
method: 'POST',
|
|
2529
2608
|
headers: {
|
|
2530
2609
|
'Content-Type': 'application/json',
|
|
2531
|
-
Authentication: constants.emailAuthKey,
|
|
2610
|
+
Authentication: constants.emailAuthKey + ' ' + constants.clientToken,
|
|
2532
2611
|
},
|
|
2533
2612
|
body: JSON.stringify(requestJson),
|
|
2534
2613
|
});
|
|
@@ -3096,8 +3175,7 @@ class Helper {
|
|
|
3096
3175
|
*/
|
|
3097
3176
|
class Tracker {
|
|
3098
3177
|
// URL
|
|
3099
|
-
logUrl =
|
|
3100
|
-
'https://maidr-service.azurewebsites.net/api/log?code=I8Aa2PlPspjQ8Hks0QzGyszP8_i2-XJ3bq7Xh8-ykEe4AzFuYn_QWA%3D%3D'; // TODO Replace
|
|
3178
|
+
logUrl = constants.baseURL + 'log' + constants.code; // TODO Replace
|
|
3101
3179
|
isLocal = false;
|
|
3102
3180
|
|
|
3103
3181
|
constructor() {
|
|
@@ -11800,13 +11878,13 @@ function SetEvents() {
|
|
|
11800
11878
|
for (let i = 0; i < constants.events.length; i++) {
|
|
11801
11879
|
if (Array.isArray(constants.events[i][0])) {
|
|
11802
11880
|
for (let j = 0; j < constants.events[i][0].length; j++) {
|
|
11803
|
-
constants.events[i][0][j]
|
|
11881
|
+
constants.events[i][0][j]?.addEventListener(
|
|
11804
11882
|
constants.events[i][1],
|
|
11805
11883
|
constants.events[i][2]
|
|
11806
11884
|
);
|
|
11807
11885
|
}
|
|
11808
11886
|
} else {
|
|
11809
|
-
constants.events[i][0]
|
|
11887
|
+
constants.events[i][0]?.addEventListener(
|
|
11810
11888
|
constants.events[i][1],
|
|
11811
11889
|
constants.events[i][2]
|
|
11812
11890
|
);
|