nothumanallowed 13.5.160 → 13.5.162
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/package.json +1 -1
- package/src/commands/ui.mjs +6 -2
- package/src/constants.mjs +1 -1
- package/src/services/web-ui.mjs +9 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nothumanallowed",
|
|
3
|
-
"version": "13.5.
|
|
3
|
+
"version": "13.5.162",
|
|
4
4
|
"description": "NotHumanAllowed — 38 AI agents, 80 tools, Studio (visual agentic workflows). Email, calendar, browser automation, screen capture, canvas, cron/heartbeat, Alexandria E2E messaging, GitHub, Notion, Slack, voice chat, free AI (Liara), 28 languages. Zero-dependency CLI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/src/commands/ui.mjs
CHANGED
|
@@ -617,13 +617,14 @@ export async function cmdUI(args) {
|
|
|
617
617
|
|
|
618
618
|
// GET /api/status
|
|
619
619
|
if (method === 'GET' && pathname === '/api/status') {
|
|
620
|
+
const { loadTokens: loadTokSt } = await import('../services/token-store.mjs');
|
|
620
621
|
sendJSON(res, 200, {
|
|
621
622
|
connected: true,
|
|
622
623
|
version: VERSION,
|
|
623
624
|
provider: config.llm.provider,
|
|
624
625
|
hasApiKey: !!config.llm.apiKey || config.llm.provider === 'nha',
|
|
625
|
-
hasGoogle:
|
|
626
|
-
hasMicrosoft:
|
|
626
|
+
hasGoogle: loadTokSt('google') !== null,
|
|
627
|
+
hasMicrosoft: loadTokSt('microsoft') !== null,
|
|
627
628
|
mailProvider: detectMailProvider(config),
|
|
628
629
|
mailProviders: getProviderStatus(),
|
|
629
630
|
agentName: config.agent?.name || null,
|
|
@@ -655,6 +656,7 @@ export async function cmdUI(args) {
|
|
|
655
656
|
|
|
656
657
|
// GET /api/config — read config values for settings UI
|
|
657
658
|
if (method === 'GET' && pathname === '/api/config') {
|
|
659
|
+
const { loadTokens: loadTok } = await import('../services/token-store.mjs');
|
|
658
660
|
// Return non-sensitive config for the settings form
|
|
659
661
|
sendJSON(res, 200, {
|
|
660
662
|
profile: config.profile || {},
|
|
@@ -666,6 +668,8 @@ export async function cmdUI(args) {
|
|
|
666
668
|
meetingAlert: config.ops?.meetingAlertMinutes || 30,
|
|
667
669
|
hasTelegram: !!config.responder?.telegram?.token,
|
|
668
670
|
hasDiscord: !!config.responder?.discord?.token,
|
|
671
|
+
hasGoogle: loadTok('google') !== null,
|
|
672
|
+
hasMicrosoft: loadTok('microsoft') !== null,
|
|
669
673
|
});
|
|
670
674
|
logRequest(method, pathname, 200, Date.now() - start);
|
|
671
675
|
return;
|
package/src/constants.mjs
CHANGED
|
@@ -5,7 +5,7 @@ import { fileURLToPath } from 'url';
|
|
|
5
5
|
const __filename = fileURLToPath(import.meta.url);
|
|
6
6
|
const __dirname = path.dirname(__filename);
|
|
7
7
|
|
|
8
|
-
export const VERSION = '13.5.
|
|
8
|
+
export const VERSION = '13.5.162';
|
|
9
9
|
export const BASE_URL = 'https://nothumanallowed.com/cli';
|
|
10
10
|
export const API_BASE = 'https://nothumanallowed.com/api/v1';
|
|
11
11
|
|
package/src/services/web-ui.mjs
CHANGED
|
@@ -7589,6 +7589,7 @@ function renderWebCraft(el) {
|
|
|
7589
7589
|
+'<span style="font-size:10px;color:#fde68a;font-family:var(--mono);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1" id="wcRepairFile">'+wcEsc(wcState.repairCurrent || '')+'</span>'
|
|
7590
7590
|
+'<span style="font-size:10px;color:var(--dim);flex-shrink:0" id="wcRepairCounter">'+wcState.repairDone+' / '+wcState.repairTotal+'</span>'
|
|
7591
7591
|
+'<span style="display:flex;gap:3px">'+[0,1,2].map(function(_,idx){ return '<span style="width:4px;height:4px;border-radius:50%;background:#facc15;animation:wcDot 1.1s ease-in-out infinite '+(idx*0.18)+'s"></span>'; }).join('')+'</span>'
|
|
7592
|
+
+'<button onclick="wcStopRepair()" style="padding:2px 8px;background:rgba(239,68,68,0.15);border:1px solid rgba(239,68,68,0.4);border-radius:4px;color:#f87171;font-size:10px;font-weight:700;cursor:pointer;flex-shrink:0">■ Stop</button>'
|
|
7592
7593
|
+'</div>'
|
|
7593
7594
|
+'<div style="height:2px;background:rgba(255,255,255,0.07);border-radius:1px;overflow:hidden">'
|
|
7594
7595
|
+'<div id="wcRepairProg" style="height:100%;width:'+(wcState.repairTotal>0?Math.round((wcState.repairDone/wcState.repairTotal)*100):0)+'%;background:#facc15;border-radius:1px;transition:width .3s ease"></div>'
|
|
@@ -9032,12 +9033,17 @@ async function wcGenerate() {
|
|
|
9032
9033
|
// ── Auto-repair pass — fixes _error and _syntaxError files ────────────────
|
|
9033
9034
|
// Called automatically after generation and available as manual button
|
|
9034
9035
|
var _wcRepairRunning = false;
|
|
9036
|
+
var _wcRepairAbortCtrl = null;
|
|
9037
|
+
function wcStopRepair() {
|
|
9038
|
+
if (_wcRepairAbortCtrl) { _wcRepairAbortCtrl.abort(); _wcRepairAbortCtrl = null; }
|
|
9039
|
+
}
|
|
9035
9040
|
async function wcAutoRepair(filePlan, sysPreamble) {
|
|
9036
9041
|
if (_wcRepairRunning) return;
|
|
9037
9042
|
// Collect broken files: LLM errors + syntax errors
|
|
9038
9043
|
var toFix = wcState.generatedFiles.filter(function(f){ return f._error || f._syntaxError; });
|
|
9039
9044
|
if (toFix.length === 0) return;
|
|
9040
9045
|
|
|
9046
|
+
_wcRepairAbortCtrl = new AbortController();
|
|
9041
9047
|
_wcRepairRunning = true;
|
|
9042
9048
|
wcState.repairing = true;
|
|
9043
9049
|
wcState.repairTotal = toFix.length;
|
|
@@ -9053,6 +9059,7 @@ async function wcAutoRepair(filePlan, sysPreamble) {
|
|
|
9053
9059
|
var sysBase = 'You are an expert full-stack engineer. Output ONLY the complete corrected file content. No explanations, no markdown fences, no preamble. Raw file content only.';
|
|
9054
9060
|
|
|
9055
9061
|
for (var ri = 0; ri < toFix.length; ri++) {
|
|
9062
|
+
if (_wcRepairAbortCtrl && _wcRepairAbortCtrl.signal.aborted) break;
|
|
9056
9063
|
var broken = toFix[ri];
|
|
9057
9064
|
var plan = planMap[broken.name];
|
|
9058
9065
|
wcState.repairDone = ri;
|
|
@@ -9100,7 +9107,7 @@ async function wcAutoRepair(filePlan, sysPreamble) {
|
|
|
9100
9107
|
// Stream repair tokens directly into the <pre>
|
|
9101
9108
|
var repairAccum = '';
|
|
9102
9109
|
var repairLang2 = broken.lang || (plan && plan.lang) || 'text';
|
|
9103
|
-
var fixed = await wcCallLLM(fixSys, fixUser, null, repairLang2, 8192, function(tok) {
|
|
9110
|
+
var fixed = await wcCallLLM(fixSys, fixUser, _wcRepairAbortCtrl ? _wcRepairAbortCtrl.signal : null, repairLang2, 8192, function(tok) {
|
|
9104
9111
|
repairAccum += tok;
|
|
9105
9112
|
var pre2 = document.getElementById('wcLiveCode');
|
|
9106
9113
|
if (pre2) { pre2.textContent = repairAccum; pre2.style.opacity = '1'; var cw = document.getElementById('wcCodeWrap'); if(cw) cw.scrollTop = cw.scrollHeight; }
|
|
@@ -9125,6 +9132,7 @@ async function wcAutoRepair(filePlan, sysPreamble) {
|
|
|
9125
9132
|
}
|
|
9126
9133
|
|
|
9127
9134
|
_wcRepairRunning = false;
|
|
9135
|
+
_wcRepairAbortCtrl = null;
|
|
9128
9136
|
wcState.repairing = false;
|
|
9129
9137
|
wcState.repairTotal = 0;
|
|
9130
9138
|
wcState.repairDone = 0;
|