nothumanallowed 13.5.3 → 13.5.4
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 +35 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nothumanallowed",
|
|
3
|
-
"version": "13.5.
|
|
3
|
+
"version": "13.5.4",
|
|
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.4';
|
|
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
|
@@ -3308,6 +3308,8 @@ var studioState = {
|
|
|
3308
3308
|
};
|
|
3309
3309
|
|
|
3310
3310
|
var studioAbortController = null;
|
|
3311
|
+
var parlActiveAgent = null; // active agent label during parliament streaming
|
|
3312
|
+
var parlDoneAgents = {}; // set of completed agent labels during parliament
|
|
3311
3313
|
|
|
3312
3314
|
function stopStudio() {
|
|
3313
3315
|
if (!studioState.running) return;
|
|
@@ -4193,6 +4195,8 @@ async function runStudio() {
|
|
|
4193
4195
|
studioState.running = true;
|
|
4194
4196
|
studioState.planned = false;
|
|
4195
4197
|
// Keep attachmentContext — it was loaded before hitting Run
|
|
4198
|
+
parlActiveAgent = null;
|
|
4199
|
+
parlDoneAgents = {};
|
|
4196
4200
|
var parlBlockEl = document.getElementById('studioParliamentBlock');
|
|
4197
4201
|
if (parlBlockEl) parlBlockEl.style.display = 'none';
|
|
4198
4202
|
renderStudioNodes();
|
|
@@ -4324,9 +4328,9 @@ async function runStudio() {
|
|
|
4324
4328
|
renderStudioNodes();
|
|
4325
4329
|
|
|
4326
4330
|
// ── Parliament visual block ──────────────────────────────────────
|
|
4327
|
-
// Track active R2 agent for visual block
|
|
4328
|
-
|
|
4329
|
-
|
|
4331
|
+
// Track active R2 agent for visual block (module-level vars)
|
|
4332
|
+
parlActiveAgent = null;
|
|
4333
|
+
parlDoneAgents = {};
|
|
4330
4334
|
|
|
4331
4335
|
// ── Parliament boardroom: first call builds DOM, subsequent calls only update state ──
|
|
4332
4336
|
var parlBlockBuilt = false;
|
|
@@ -5361,10 +5365,33 @@ function runStudioStep(idx, node, task, context, stepDef, signal) {
|
|
|
5361
5365
|
tb.textContent = st;
|
|
5362
5366
|
}
|
|
5363
5367
|
} else {
|
|
5364
|
-
//
|
|
5365
|
-
var
|
|
5366
|
-
var
|
|
5367
|
-
tb.innerHTML = \x27<span style="color:var(--
|
|
5368
|
+
// Word-by-word streaming text with blinking cursor
|
|
5369
|
+
var snippet = output.length > 400 ? output.slice(-400) : output;
|
|
5370
|
+
var safeSnip = snippet.replace(/&/g,\x27&\x27).replace(/</g,\x27<\x27).replace(/>/g,\x27>\x27);
|
|
5371
|
+
tb.innerHTML = \x27<span style="font-size:11px;color:var(--text);line-height:1.5;white-space:pre-wrap;word-break:break-word;font-family:var(--font)">\x27 + safeSnip + \x27<span class="stream-cursor" style="display:inline-block;width:2px;height:13px;background:var(--green);margin-left:1px;vertical-align:text-bottom;animation:streamBlink .7s step-end infinite">​</span></span>\x27;
|
|
5372
|
+
// Update thought bubble of the currently active workflow desk
|
|
5373
|
+
var activeDeskEl = document.querySelector(\x27.prl-desk--active[data-agent-label]\x27);
|
|
5374
|
+
if (activeDeskEl) {
|
|
5375
|
+
var wfBubble = activeDeskEl.querySelector(\x27.prl-action-bubble--active\x27);
|
|
5376
|
+
if (wfBubble) {
|
|
5377
|
+
var wfRaw = output.length > 42 ? output.slice(-42) : output;
|
|
5378
|
+
var wfSafe = wfRaw.replace(/&/g,\x27&\x27).replace(/</g,\x27<\x27).replace(/>/g,\x27>\x27);
|
|
5379
|
+
wfBubble.style.maxWidth = \x2796px\x27;
|
|
5380
|
+
wfBubble.style.fontSize = \x278px\x27;
|
|
5381
|
+
wfBubble.innerHTML = wfSafe + \x27<span style="display:inline-block;width:2px;height:9px;background:var(--green);margin-left:1px;vertical-align:text-bottom;animation:streamBlink .7s step-end infinite">​</span>\x27;
|
|
5382
|
+
}
|
|
5383
|
+
}
|
|
5384
|
+
// Update thought bubble of the active boardroom seat
|
|
5385
|
+
if (parlActiveAgent) {
|
|
5386
|
+
var brSafeLbl = parlActiveAgent.replace(new RegExp(\x27[^a-zA-Z0-9_-]\x27,\x27g\x27),\x27_\x27);
|
|
5387
|
+
var brBubbleEl = document.getElementById(\x27brbubble_\x27+brSafeLbl);
|
|
5388
|
+
if (brBubbleEl) {
|
|
5389
|
+
var brRaw = output.length > 42 ? output.slice(-42) : output;
|
|
5390
|
+
var brSafe = brRaw.replace(/&/g,\x27&\x27).replace(/</g,\x27<\x27).replace(/>/g,\x27>\x27);
|
|
5391
|
+
brBubbleEl.style.display = \x27\x27;
|
|
5392
|
+
brBubbleEl.innerHTML = brSafe + \x27<span style="display:inline-block;width:2px;height:8px;background:var(--green);margin-left:1px;vertical-align:text-bottom;animation:streamBlink .7s step-end infinite">​</span>\x27;
|
|
5393
|
+
}
|
|
5394
|
+
}
|
|
5368
5395
|
}
|
|
5369
5396
|
}
|
|
5370
5397
|
}
|
|
@@ -6239,6 +6266,7 @@ input:focus,textarea:focus{border-color:var(--green3)}
|
|
|
6239
6266
|
.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}
|
|
6240
6267
|
.prl-action-bubble--active{color:var(--dc,#6366f1);border-color:var(--dc,#6366f1);background:rgba(99,102,241,.08);animation:parlBubblePop .4s ease}
|
|
6241
6268
|
@keyframes parlBubblePop{0%{transform:scale(.85);opacity:.5}100%{transform:scale(1);opacity:1}}
|
|
6269
|
+
@keyframes streamBlink{0%,100%{opacity:1}50%{opacity:0}}
|
|
6242
6270
|
/* Character SVG animations */
|
|
6243
6271
|
@keyframes parlArmType{0%,100%{transform:rotate(-8deg) translateY(0)}50%{transform:rotate(8deg) translateY(2px)}}
|
|
6244
6272
|
@keyframes parlHeadNod{0%,100%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(2px) rotate(4deg)}}
|