nothumanallowed 13.5.31 → 13.5.33
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/constants.mjs +1 -1
- package/src/services/web-ui.mjs +31 -12
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nothumanallowed",
|
|
3
|
-
"version": "13.5.
|
|
3
|
+
"version": "13.5.33",
|
|
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/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.33';
|
|
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
|
@@ -231,6 +231,9 @@ var agentChatHistory = []; // [{role:'user'|'agent', text:'...'}]
|
|
|
231
231
|
|
|
232
232
|
// ---- NAV ----
|
|
233
233
|
function switchView(v) {
|
|
234
|
+
// Close any open modal (e.g. calendar day detail) before switching view
|
|
235
|
+
var modal=document.getElementById('agentModal');
|
|
236
|
+
if(modal&&modal.classList.contains('modal-overlay--open')){closeModal();}
|
|
234
237
|
currentView = v;
|
|
235
238
|
// Invalidate cached data so pages always show fresh content
|
|
236
239
|
if(v==='contacts')contactsData=null;
|
|
@@ -1195,6 +1198,16 @@ function calKey(y,m,d){return y+'-'+String(m+1).padStart(2,'0')+'-'+String(d).pa
|
|
|
1195
1198
|
function isToday(y,m,d){var t=new Date();return t.getFullYear()===y&&t.getMonth()===m&&t.getDate()===d}
|
|
1196
1199
|
|
|
1197
1200
|
function renderCalendar(el){
|
|
1201
|
+
// Guard: if Google not connected, show setup message — don't block on API call
|
|
1202
|
+
if(!settingsData.hasGoogle){
|
|
1203
|
+
el.innerHTML='<div style="max-width:400px;margin:60px auto;text-align:center;padding:32px;border:1px solid var(--border);border-radius:12px;background:var(--bg2)">' +
|
|
1204
|
+
'<div style="font-size:40px;margin-bottom:16px">📅</div>' +
|
|
1205
|
+
'<div style="color:var(--bright);font-size:18px;font-weight:700;margin-bottom:8px">Calendar</div>' +
|
|
1206
|
+
'<div style="color:var(--dim);font-size:13px;margin-bottom:24px">Connect your Google account to view and manage calendar events.</div>' +
|
|
1207
|
+
'<button onclick="switchView(\\x27settings\\x27)" style="background:var(--green3);color:var(--bg);padding:10px 24px;border-radius:var(--r);font-weight:700;font-size:13px;cursor:pointer;border:none">Connect Google \u2192</button>' +
|
|
1208
|
+
'</div>';
|
|
1209
|
+
return;
|
|
1210
|
+
}
|
|
1198
1211
|
var firstDay=new Date(calYear,calMonth,1).getDay();
|
|
1199
1212
|
var daysInMonth=new Date(calYear,calMonth+1,0).getDate();
|
|
1200
1213
|
var monthName=new Date(calYear,calMonth,1).toLocaleDateString('en',{month:'long',year:'numeric'});
|
|
@@ -3325,7 +3338,7 @@ var studioAbortController = null;
|
|
|
3325
3338
|
var parlActiveAgent = null; // active agent label during parliament streaming
|
|
3326
3339
|
var parlDoneAgents = {}; // set of completed agent labels during parliament
|
|
3327
3340
|
var _parlPersistHtml = null; // persists parliament block HTML across tab navigations
|
|
3328
|
-
var _PARL_STAMP = '<!--nha-parl-v13.5.
|
|
3341
|
+
var _PARL_STAMP = '<!--nha-parl-v13.5.33-->';
|
|
3329
3342
|
|
|
3330
3343
|
function stopStudio() {
|
|
3331
3344
|
if (!studioState.running) return;
|
|
@@ -3949,7 +3962,9 @@ function renderStudioNodes() {
|
|
|
3949
3962
|
var bubbleText = isOrch
|
|
3950
3963
|
? (hasActive ? (\x27Assegno step \x27+(doneCount+1)+\x27/\x27+totalCount) : (doneCount===totalCount&&totalCount>0 ? \x27\u2714 Fatto!\x27 : \x27In attesa\x27))
|
|
3951
3964
|
: (isDone ? \x27\u2714 fatto\x27 : (isErr ? \x27\u2715 errore\x27 : (isActive ? \x27\x27 : \x27\x27)));
|
|
3952
|
-
var bubbleBg = isOrch ? \x27rgba(
|
|
3965
|
+
var bubbleBg = isOrch ? \x27rgba(255,255,255,.95)\x27 : (isActive ? \x27#ffffff\x27 : (isDone ? \x27rgba(0,0,0,.08)\x27 : \x27rgba(239,68,68,.12)\x27));
|
|
3966
|
+
var bubbleColor = isActive ? \x27#000000\x27 : (isOrch ? \x27#111827\x27 : (isDone ? \x27#374151\x27 : \x27#6b7280\x27));
|
|
3967
|
+
var bubbleFontWeight = isActive ? \x27700\x27 : \x27500\x27;
|
|
3953
3968
|
var glowBox = isActive ? (\x270 0 0 3px \x27+accentColor+\x2744,0 8px 24px \x27+accentColor+\x2733\x27) : (isDone ? (\x270 0 0 2px rgba(0,0,0,.25)\x27) : \x27none\x27);
|
|
3954
3969
|
// Orchestrator char: no CSS walk animation — JS moves it via inline transform toward the active agent column
|
|
3955
3970
|
var charIdAttr = isOrch ? \x27 id="wfOrchChar"\x27 : \x27\x27;
|
|
@@ -3963,7 +3978,7 @@ function renderStudioNodes() {
|
|
|
3963
3978
|
var bubbleVisible = (bubbleText || isOrch || isActive) ? \x27visible\x27 : \x27hidden\x27;
|
|
3964
3979
|
return \x27<div class="iso-station" \x27+clickAttr+\x27 data-station-idx="\x27+(isOrch?-1:nodeIdx)+\x27" style="box-shadow:\x27+glowBox+\x27;border-color:\x27+accentColor+\x27;transition:box-shadow .4s">\x27+
|
|
3965
3980
|
flyDoc+
|
|
3966
|
-
\x27<div class="iso-bubble\x27+(isActive?\x27 iso-bubble--active\x27:\x27\x27)+\x27" id="\x27+bubbleId+\x27" style="border-color:\x27+accentColor+\x27;color:\x27+
|
|
3981
|
+
\x27<div class="iso-bubble\x27+(isActive?\x27 iso-bubble--active\x27:\x27\x27)+\x27" id="\x27+bubbleId+\x27" style="border-color:\x27+accentColor+\x27;color:\x27+bubbleColor+\x27;font-weight:\x27+bubbleFontWeight+\x27;background:\x27+bubbleBg+\x27;visibility:\x27+bubbleVisible+\x27">\x27+esc(bubbleText)+\x27</div>\x27+
|
|
3967
3982
|
\x27<div class="iso-tool-badge">\x27+toolEmoji+\x27</div>\x27+
|
|
3968
3983
|
charHtml+
|
|
3969
3984
|
\x27<div class="iso-desk" style="width:85%;border-top-color:\x27+accentColor+\x2733"></div>\x27+
|
|
@@ -4906,7 +4921,7 @@ async function runStudio() {
|
|
|
4906
4921
|
\x27<div style="position:absolute;top:112px;left:58px;font-size:20px;z-index:5">\x27+String.fromCodePoint(0x1F331)+\x27</div>\x27+
|
|
4907
4922
|
\x27<div style="position:absolute;top:112px;right:58px;font-size:20px;z-index:5">\x27+String.fromCodePoint(0x1F331)+\x27</div>\x27+
|
|
4908
4923
|
// Cross-agent communication SVG overlay (dynamic, updated per call)
|
|
4909
|
-
\x27<svg id="brCommSvg" style="position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:
|
|
4924
|
+
\x27<svg id="brCommSvg" style="position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:20;overflow:visible"></svg>\x27+
|
|
4910
4925
|
\x27<div style="position:relative;z-index:10;display:flex;flex-direction:column;justify-content:center;min-height:480px;padding:20px 16px;gap:0;box-sizing:border-box">\x27+
|
|
4911
4926
|
\x27<div class="br-seats-row">\x27+topHtml+\x27</div>\x27+
|
|
4912
4927
|
\x27<div style="position:relative;display:flex;align-items:center;width:100%;min-height:160px">\x27+
|
|
@@ -4956,8 +4971,9 @@ async function runStudio() {
|
|
|
4956
4971
|
orchSpeech.style.display = \x27\x27;
|
|
4957
4972
|
// Rotate through phrases based on progress
|
|
4958
4973
|
orchSpeech.textContent = spArr[doneCount % spArr.length];
|
|
4959
|
-
orchSpeech.style.borderColor =
|
|
4960
|
-
orchSpeech.style.color =
|
|
4974
|
+
orchSpeech.style.borderColor = \x27#374151\x27;
|
|
4975
|
+
orchSpeech.style.color = \x27#000000\x27;
|
|
4976
|
+
orchSpeech.style.fontWeight = \x27700\x27;
|
|
4961
4977
|
}
|
|
4962
4978
|
}
|
|
4963
4979
|
|
|
@@ -5010,7 +5026,7 @@ async function runStudio() {
|
|
|
5010
5026
|
bubbleEl.style.fontWeight = isActive ? \x27700\x27 : \x27500\x27;
|
|
5011
5027
|
}
|
|
5012
5028
|
if (nameEl) {
|
|
5013
|
-
nameEl.style.color = isDone ? \x27#111827\x27 : (isActive ?
|
|
5029
|
+
nameEl.style.color = isDone ? \x27#111827\x27 : (isActive ? \x27#000000\x27 : \x27#374151\x27);
|
|
5014
5030
|
nameEl.style.fontWeight = isActive ? \x27800\x27 : \x27600\x27;
|
|
5015
5031
|
}
|
|
5016
5032
|
});
|
|
@@ -5653,6 +5669,9 @@ function runStudioStep(idx, node, task, context, stepDef, signal) {
|
|
|
5653
5669
|
var wfSafe = wfSnippet.replace(/&/g,\x27&\x27).replace(/</g,\x27<\x27).replace(/>/g,\x27>\x27);
|
|
5654
5670
|
isoB.className = \x27iso-bubble iso-bubble--active\x27;
|
|
5655
5671
|
isoB.style.visibility = \x27visible\x27;
|
|
5672
|
+
isoB.style.color = \x27#000000\x27;
|
|
5673
|
+
isoB.style.fontWeight = \x27700\x27;
|
|
5674
|
+
isoB.style.background = \x27#ffffff\x27;
|
|
5656
5675
|
isoB.innerHTML = wfSafe + \x27<span style="display:inline-block;width:2px;height:8px;background:#1d4ed8;margin-left:1px;vertical-align:text-bottom;animation:streamBlink .7s step-end infinite">​</span>\x27;
|
|
5657
5676
|
}
|
|
5658
5677
|
// Update orchestrator bubble: show which agent it assigned and move the char
|
|
@@ -6497,14 +6516,14 @@ input:focus,textarea:focus{border-color:var(--green3)}
|
|
|
6497
6516
|
.br-orch--active .br-orch-emoji{animation:brOrchWalk 1.4s ease-in-out infinite alternate;filter:drop-shadow(0 0 20px #6366f1CC)}
|
|
6498
6517
|
@keyframes brOrchWalk{0%{transform:translateX(0) scale(1)}100%{transform:translateX(14px) scale(1.07)}}
|
|
6499
6518
|
.br-orch--done .br-orch-emoji{animation:orchBounce .7s ease forwards}
|
|
6500
|
-
.br-orch-speech{font-size:10px;font-weight:800;font-family:var(--mono);padding:4px 10px;border:2px solid #
|
|
6519
|
+
.br-orch-speech{font-size:10px;font-weight:800;font-family:var(--mono);padding:4px 10px;border:2px solid #374151;border-radius:10px;background:#ffffff;color:#000000;white-space:nowrap;animation:brSpeechPop .7s ease-in-out infinite alternate;pointer-events:none;margin-bottom:4px;box-shadow:0 2px 8px rgba(0,0,0,.15)}
|
|
6501
6520
|
@keyframes brSpeechPop{0%{transform:scale(1) rotate(-1deg)}100%{transform:scale(1.06) rotate(1deg)}}
|
|
6502
|
-
.br-orch-label{font-size:9px;font-family:var(--mono);font-weight:800;color:#
|
|
6521
|
+
.br-orch-label{font-size:9px;font-family:var(--mono);font-weight:800;color:#000000;background:rgba(255,255,255,.92);border-radius:6px;padding:2px 8px;margin-top:2px}
|
|
6503
6522
|
/* Bubble above agent */
|
|
6504
|
-
.br-bubble{font-size:9px;font-family:var(--mono);padding:4px 9px;border-radius:10px 10px 10px 2px;border:1.5px solid
|
|
6523
|
+
.br-bubble{font-size:9px;font-family:var(--mono);font-weight:700;padding:4px 9px;border-radius:10px 10px 10px 2px;border:1.5px solid #374151;background:#ffffff;color:#000000;line-height:1.4;word-break:break-word;max-width:120px;white-space:normal;box-shadow:0 2px 8px rgba(0,0,0,.12);margin-bottom:3px}
|
|
6505
6524
|
/* Agent name pill */
|
|
6506
6525
|
.br-seat-name{font-size:9px;font-family:var(--mono);font-weight:600;color:#374151;text-align:center;white-space:normal;word-break:break-word;max-width:100px;line-height:1.3;margin-top:1px;background:rgba(255,255,255,.75);border-radius:4px;padding:1px 4px;transition:color .3s,font-weight .2s;backdrop-filter:blur(2px)}
|
|
6507
|
-
.br-seat--active .br-seat-name{color:#
|
|
6526
|
+
.br-seat--active .br-seat-name{color:#000000;font-weight:800}
|
|
6508
6527
|
.br-seat--done .br-seat-name{color:#111827}
|
|
6509
6528
|
@keyframes brDotFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
|
|
6510
6529
|
/* Convergence */
|
|
@@ -6605,7 +6624,7 @@ input:focus,textarea:focus{border-color:var(--green3)}
|
|
|
6605
6624
|
.prl-desk--active{background:#1e1a45;border-color:var(--dc,#6366f1);box-shadow:0 0 20px rgba(99,102,241,.3),0 0 40px rgba(99,102,241,.1),inset 0 1px 0 rgba(150,130,255,.15)}
|
|
6606
6625
|
.prl-desk--done{border-color:#2a4a2a;background:#162516}
|
|
6607
6626
|
.prl-action-bubble{font-size:9px;color:#6b7280;font-family:var(--mono);padding:2px 6px;border-radius:8px;background:#111;border:1px solid #2a2a38;min-height:16px;text-align:center;white-space:normal;word-break:break-word;max-width:88px;line-height:1.3;transition:all .3s}
|
|
6608
|
-
.prl-action-bubble--active{color:
|
|
6627
|
+
.prl-action-bubble--active{color:#000000;font-weight:700;border-color:#374151;background:#ffffff;animation:parlBubblePop .4s ease}
|
|
6609
6628
|
@keyframes parlBubblePop{0%{transform:scale(.85);opacity:.5}100%{transform:scale(1);opacity:1}}
|
|
6610
6629
|
@keyframes streamBlink{0%,100%{opacity:1}50%{opacity:0}}
|
|
6611
6630
|
/* Character SVG animations */
|