nothumanallowed 13.5.26 → 13.5.28
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 +9 -4
- package/src/constants.mjs +1 -1
- package/src/services/web-ui.mjs +31 -25
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nothumanallowed",
|
|
3
|
-
"version": "13.5.
|
|
3
|
+
"version": "13.5.28",
|
|
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
|
@@ -3910,7 +3910,7 @@ DELIBERATION ROUND 2 — REFINEMENT:
|
|
|
3910
3910
|
let r2Out = '';
|
|
3911
3911
|
let r2TokCount = 0;
|
|
3912
3912
|
try {
|
|
3913
|
-
await callLLMStream(config, r2Sys, 'Produce your refined Round 2 response.',
|
|
3913
|
+
await callLLMStream(config, r2Sys, 'Produce your refined Round 2 response. Write complete content under every heading — never leave a section title without body text.',
|
|
3914
3914
|
(tok) => {
|
|
3915
3915
|
r2Out += tok;
|
|
3916
3916
|
r2TokCount += Math.ceil(tok.length / 4);
|
|
@@ -3918,7 +3918,7 @@ DELIBERATION ROUND 2 — REFINEMENT:
|
|
|
3918
3918
|
if (r2TokCount % 20 < 3) {
|
|
3919
3919
|
sendTok2(`[Round 2 ${proposal.label || proposal.agent}: ${r2TokCount} token] `);
|
|
3920
3920
|
}
|
|
3921
|
-
}, { max_tokens:
|
|
3921
|
+
}, { max_tokens: 8192 });
|
|
3922
3922
|
} catch (e) { r2Out = proposal.output; }
|
|
3923
3923
|
r2Results.push({ agent: proposal.agent, label: proposal.label, icon: proposal.icon, output: r2Out });
|
|
3924
3924
|
sendEv2({ deliberation_r2: { agent: proposal.agent, label: proposal.label, icon: proposal.icon, output: r2Out } });
|
|
@@ -3976,10 +3976,15 @@ ${allR2Ctx}${contradictionBlock}
|
|
|
3976
3976
|
|
|
3977
3977
|
${medTask}
|
|
3978
3978
|
|
|
3979
|
-
CRITICAL
|
|
3979
|
+
CRITICAL WRITING RULES — ENFORCE STRICTLY:
|
|
3980
|
+
- NEVER write a heading or numbered title without immediately writing its full content below it. A heading with no body text beneath it is FORBIDDEN.
|
|
3981
|
+
- Every section (e.g. "3.1. Sito Web") MUST be followed by at least 3-5 concrete bullet points or sentences explaining WHAT to do and HOW. Never just list the title and move on.
|
|
3982
|
+
- Every agent's contribution must be traceable. If an agent raised a point not incorporated, explicitly state why.
|
|
3983
|
+
- Do NOT summarize sections at the end without first writing their full content.
|
|
3984
|
+
- Write the complete content of each section before moving to the next.`;
|
|
3980
3985
|
try {
|
|
3981
3986
|
await callLLMStream(config, medSys, 'Produce the Parliament final synthesis.',
|
|
3982
|
-
(tok) => { mediationOutput += tok; }, { max_tokens:
|
|
3987
|
+
(tok) => { mediationOutput += tok; }, { max_tokens: 8192 });
|
|
3983
3988
|
} catch (e) { mediationOutput = ''; }
|
|
3984
3989
|
sendEv2({ deliberation_r3: { output: mediationOutput, converged } });
|
|
3985
3990
|
}
|
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.28';
|
|
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
|
@@ -3325,7 +3325,7 @@ var studioAbortController = null;
|
|
|
3325
3325
|
var parlActiveAgent = null; // active agent label during parliament streaming
|
|
3326
3326
|
var parlDoneAgents = {}; // set of completed agent labels during parliament
|
|
3327
3327
|
var _parlPersistHtml = null; // persists parliament block HTML across tab navigations
|
|
3328
|
-
var _PARL_STAMP = '<!--nha-parl-v13.5.
|
|
3328
|
+
var _PARL_STAMP = '<!--nha-parl-v13.5.28-->';
|
|
3329
3329
|
|
|
3330
3330
|
function stopStudio() {
|
|
3331
3331
|
if (!studioState.running) return;
|
|
@@ -3956,7 +3956,8 @@ function renderStudioNodes() {
|
|
|
3956
3956
|
var charHtml = \x27<div class="iso-char-mover"\x27+charIdAttr+\x27>\x27+isoCharSvg({emojiIdx: isOrch ? 99 : emojiIdx, isActive: isActive, isDone: isDone, scale: 1.1, accentColor: accentColor})+\x27</div>\x27;
|
|
3957
3957
|
var clickAttr = isOrch ? \x27\x27 : (\x27data-agent-label="\x27+esc(label)+\x27" onclick="studioScrollToAgent(this.getAttribute(String.fromCharCode(100,97,116,97,45,97,103,101,110,116,45,108,97,98,101,108)))"\x27);
|
|
3958
3958
|
// Flying doc emoji when active
|
|
3959
|
-
|
|
3959
|
+
// 3 paper sheets flying up from above the monitor — staggered animation via nth-child
|
|
3960
|
+
var flyDoc = isActive ? \x27<div class="iso-fly-doc"><span>\x27+String.fromCodePoint(0x1F4C4)+\x27</span><span>\x27+String.fromCodePoint(0x1F4C3)+\x27</span><span>\x27+String.fromCodePoint(0x1F4C4)+\x27</span></div>\x27 : \x27\x27;
|
|
3960
3961
|
// Bubble id: orchestrator gets wfOrchBubble, agents get isobubble_IDX
|
|
3961
3962
|
var bubbleId = isOrch ? \x27wfOrchBubble\x27 : (\x27isobubble_\x27+nodeIdx);
|
|
3962
3963
|
var bubbleVisible = (bubbleText || isOrch || isActive) ? \x27visible\x27 : \x27hidden\x27;
|
|
@@ -4053,16 +4054,16 @@ function renderStudioNodes() {
|
|
|
4053
4054
|
if (activeNodeIdx >= 0) {
|
|
4054
4055
|
requestAnimationFrame(function() {
|
|
4055
4056
|
var orchChar = document.getElementById(\x27wfOrchChar\x27);
|
|
4056
|
-
var orchStation =
|
|
4057
|
-
var activeStation =
|
|
4057
|
+
var orchStation = document.querySelector(\x27[data-station-idx="-1"]\x27);
|
|
4058
|
+
var activeStation = document.querySelector(\x27[data-station-idx="\x27+activeNodeIdx+\x27"]\x27);
|
|
4058
4059
|
if (orchChar && orchStation && activeStation) {
|
|
4059
4060
|
var orchRect = orchStation.getBoundingClientRect();
|
|
4060
4061
|
var activeRect = activeStation.getBoundingClientRect();
|
|
4061
|
-
// Shift the char 60% of the way toward the active column center
|
|
4062
4062
|
var delta = (activeRect.left + activeRect.width/2) - (orchRect.left + orchRect.width/2);
|
|
4063
|
-
var shift = Math.round(delta * 0.
|
|
4064
|
-
orchChar.style.transition = \x27transform
|
|
4063
|
+
var shift = Math.round(delta * 0.62);
|
|
4064
|
+
orchChar.style.transition = \x27transform 1.2s cubic-bezier(.4,0,.2,1)\x27;
|
|
4065
4065
|
orchChar.style.transform = \x27translateX(\x27+shift+\x27px)\x27;
|
|
4066
|
+
orchChar.setAttribute(\x27data-last-shift\x27, String(shift));
|
|
4066
4067
|
// Also update orch bubble to show what it is assigning
|
|
4067
4068
|
var orchBubble = document.getElementById(\x27wfOrchBubble\x27);
|
|
4068
4069
|
if (orchBubble) {
|
|
@@ -5077,22 +5078,22 @@ async function runStudio() {
|
|
|
5077
5078
|
if (ib2 <= ia) return;
|
|
5078
5079
|
var ea = document.getElementById(\x27brseat_\x27+pa.label.replace(/[^a-zA-Z0-9_-]/g,\x27_\x27));
|
|
5079
5080
|
var eb = document.getElementById(\x27brseat_\x27+pb2.label.replace(/[^a-zA-Z0-9_-]/g,\x27_\x27));
|
|
5080
|
-
addCommLine(ea, eb, \x27#
|
|
5081
|
+
addCommLine(ea, eb, \x27#111827\x27, \x274 3\x27, 2, 0.9, \x27\x27);
|
|
5081
5082
|
});
|
|
5082
5083
|
});
|
|
5083
5084
|
} else if (activeLabel) {
|
|
5084
5085
|
var aLblSafe2 = activeLabel.replace(/[^a-zA-Z0-9_-]/g,\x27_\x27);
|
|
5085
5086
|
var activeSeatEl2 = document.getElementById(\x27brseat_\x27+aLblSafe2);
|
|
5086
|
-
// Orch → active agent
|
|
5087
|
-
addCommLine(orchEl2, activeSeatEl2, \x27#
|
|
5088
|
-
// R2/R3: done agents → active agent
|
|
5087
|
+
// Orch → active agent: thick black dashed animated line
|
|
5088
|
+
addCommLine(orchEl2, activeSeatEl2, \x27#111827\x27, \x276 4\x27, 3, 1, \x27brDashFlow 1s linear infinite\x27);
|
|
5089
|
+
// R2/R3: done agents → active agent: dark grey dashed
|
|
5089
5090
|
if (phase === \x27r2\x27 || phase === \x27r3\x27) {
|
|
5090
5091
|
proposals.forEach(function(pp2) {
|
|
5091
5092
|
var doneL = pp2.label || pp2.agent;
|
|
5092
5093
|
if (doneL === activeLabel) return;
|
|
5093
5094
|
if (!parlDoneAgents[doneL]) return;
|
|
5094
5095
|
var doneSeat = document.getElementById(\x27brseat_\x27+doneL.replace(/[^a-zA-Z0-9_-]/g,\x27_\x27));
|
|
5095
|
-
addCommLine(doneSeat, activeSeatEl2, \x27#
|
|
5096
|
+
addCommLine(doneSeat, activeSeatEl2, \x27#374151\x27, \x275 3\x27, 2.5, 1, \x27brDashFlow 1.4s linear infinite\x27);
|
|
5096
5097
|
});
|
|
5097
5098
|
}
|
|
5098
5099
|
}
|
|
@@ -5649,7 +5650,7 @@ function runStudioStep(idx, node, task, context, stepDef, signal) {
|
|
|
5649
5650
|
var wfSafe = wfSnippet.replace(/&/g,\x27&\x27).replace(/</g,\x27<\x27).replace(/>/g,\x27>\x27);
|
|
5650
5651
|
isoB.className = \x27iso-bubble iso-bubble--active\x27;
|
|
5651
5652
|
isoB.style.visibility = \x27visible\x27;
|
|
5652
|
-
isoB.innerHTML = wfSafe + \x27<span style="display:inline-block;width:2px;height:8px;background:#
|
|
5653
|
+
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;
|
|
5653
5654
|
}
|
|
5654
5655
|
// Update orchestrator bubble: show which agent it assigned and move the char
|
|
5655
5656
|
var orchB = document.getElementById(\x27wfOrchBubble\x27);
|
|
@@ -5660,15 +5661,17 @@ function runStudioStep(idx, node, task, context, stepDef, signal) {
|
|
|
5660
5661
|
}
|
|
5661
5662
|
// Move orchestrator char toward active agent column (live, every token)
|
|
5662
5663
|
var orchCharEl = document.getElementById(\x27wfOrchChar\x27);
|
|
5663
|
-
var orchStEl =
|
|
5664
|
-
var actStEl =
|
|
5664
|
+
var orchStEl = document.querySelector(\x27[data-station-idx="-1"]\x27);
|
|
5665
|
+
var actStEl = document.querySelector(\x27[data-station-idx="\x27+idx+\x27"]\x27);
|
|
5665
5666
|
if (orchCharEl && orchStEl && actStEl) {
|
|
5666
5667
|
var orchR = orchStEl.getBoundingClientRect();
|
|
5667
5668
|
var actR = actStEl.getBoundingClientRect();
|
|
5668
5669
|
var dlt = (actR.left + actR.width/2) - (orchR.left + orchR.width/2);
|
|
5669
|
-
var shft = Math.round(dlt * 0.
|
|
5670
|
-
if
|
|
5671
|
-
|
|
5670
|
+
var shft = Math.round(dlt * 0.62);
|
|
5671
|
+
// Only update if shift changed by more than 4px (avoid jitter)
|
|
5672
|
+
var lastShft = parseFloat(orchCharEl.getAttribute(\x27data-last-shift\x27) || \x270\x27);
|
|
5673
|
+
if (Math.abs(shft - lastShft) > 4) {
|
|
5674
|
+
orchCharEl.style.transition = \x27transform 1.2s cubic-bezier(.4,0,.2,1)\x27;
|
|
5672
5675
|
orchCharEl.style.transform = \x27translateX(\x27+shft+\x27px)\x27;
|
|
5673
5676
|
orchCharEl.setAttribute(\x27data-last-shift\x27, String(shft));
|
|
5674
5677
|
}
|
|
@@ -6558,19 +6561,22 @@ input:focus,textarea:focus{border-color:var(--green3)}
|
|
|
6558
6561
|
.iso-scene{background:#f0ede6;cursor:default;max-width:100%;overflow-x:auto;box-shadow:0 4px 24px rgba(0,0,0,.18);border-radius:12px;overflow:hidden}
|
|
6559
6562
|
.iso-station{display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;transition:filter .2s,transform .2s;padding:8px 4px;border-radius:12px;border:1.5px solid transparent;position:relative}
|
|
6560
6563
|
.iso-station:hover{filter:brightness(1.06);transform:translateY(-2px)}
|
|
6561
|
-
.iso-char-mover{position:relative;transition:transform .
|
|
6562
|
-
.iso-char-mover.iso-orch-walking{animation:orchWalkGrid 1.8s ease-in-out infinite alternate}
|
|
6563
|
-
@keyframes orchWalkGrid{0%{transform:translateX(0) scale(1)}100%{transform:translateX(18px) scale(1.05)}}
|
|
6564
|
+
.iso-char-mover{position:relative;transition:transform 0.9s cubic-bezier(.4,0,.2,1)}
|
|
6564
6565
|
.iso-char-mover.iso-orch-done{animation:orchBounce .7s ease forwards}
|
|
6565
6566
|
@keyframes orchBounce{0%{transform:scale(1)}40%{transform:scale(1.18) translateY(-6px)}100%{transform:scale(1)}}
|
|
6566
|
-
|
|
6567
|
-
|
|
6567
|
+
/* Fly-doc: multiple sheets flying from monitor upward */
|
|
6568
|
+
.iso-fly-doc{position:absolute;top:2px;left:50%;font-size:14px;pointer-events:none;z-index:25}
|
|
6569
|
+
.iso-fly-doc span{position:absolute;display:block;animation:flySheet 1.4s ease-in-out infinite}
|
|
6570
|
+
.iso-fly-doc span:nth-child(1){animation-delay:0s;left:-10px}
|
|
6571
|
+
.iso-fly-doc span:nth-child(2){animation-delay:.45s;left:2px}
|
|
6572
|
+
.iso-fly-doc span:nth-child(3){animation-delay:.9s;left:12px}
|
|
6573
|
+
@keyframes flySheet{0%{transform:translateY(0) rotate(-8deg);opacity:0}15%{opacity:1}60%{transform:translateY(-38px) rotate(14deg);opacity:.9}100%{transform:translateY(-58px) rotate(-5deg);opacity:0}}
|
|
6568
6574
|
.iso-desk{width:90%;height:16px;background:linear-gradient(180deg,#d4a448 0%,#b8832a 100%);border-radius:4px 4px 2px 2px;box-shadow:0 4px 0 #8a5e18,0 6px 10px rgba(0,0,0,.3);border-top:2px solid #e8c060;position:relative;margin-top:4px}
|
|
6569
6575
|
.iso-desk::after{content:'';position:absolute;bottom:-4px;left:8px;right:8px;height:4px;background:#7a5010;border-radius:0 0 3px 3px}
|
|
6570
6576
|
.iso-monitor{width:56px;height:40px;background:#12101e;border:2px solid #3a3070;border-radius:5px;display:flex;align-items:center;justify-content:center;position:relative;margin-bottom:-2px}
|
|
6571
6577
|
.iso-monitor::after{content:'';position:absolute;bottom:-5px;left:50%;transform:translateX(-50%);width:10px;height:5px;background:#252436;border-radius:0 0 3px 3px}
|
|
6572
6578
|
.iso-monitor-screen{width:44px;height:28px;background:rgba(60,40,160,.35);border-radius:2px;display:flex;align-items:center;justify-content:center}
|
|
6573
|
-
.iso-monitor-blink{width:7px;height:7px;border-radius:50%;background:#6366f1;animation:monBlink .9s ease-in-out infinite}
|
|
6579
|
+
.iso-monitor-blink{width:7px;height:7px;border-radius:50%;background:#6366f1;animation:monBlink .9s ease-in-out infinite;margin-right:6px}
|
|
6574
6580
|
@keyframes monBlink{0%,100%{opacity:1;box-shadow:0 0 8px #6366f1}50%{opacity:.25;box-shadow:none}}
|
|
6575
6581
|
.iso-tool-badge{font-size:22px;line-height:1;filter:drop-shadow(0 2px 5px rgba(0,0,0,.35));user-select:none;margin-bottom:1px}
|
|
6576
6582
|
/* Animated status chip for [bracket tokens] */
|
|
@@ -6586,7 +6592,7 @@ input:focus,textarea:focus{border-color:var(--green3)}
|
|
|
6586
6592
|
.iso-orch-wrap.prl-head{animation:isoCharBob 1.4s ease-in-out infinite}
|
|
6587
6593
|
/* Thought bubble / speech bubble above character */
|
|
6588
6594
|
.iso-bubble{font-size:9px;font-family:var(--mono);padding:3px 9px;border-radius:12px;border:1px solid #ccc;background:rgba(255,255,255,.9);color:#6b7280;white-space:normal;word-break:break-word;max-width:160px;line-height:1.4;transition:all .25s;pointer-events:none;backdrop-filter:blur(6px);text-align:center}
|
|
6589
|
-
.iso-bubble--active{background
|
|
6595
|
+
.iso-bubble--active{background:#0f172a;border-color:#1d4ed8;color:#dbeafe;animation:isoBubblePop .35s ease;white-space:normal;max-width:160px;word-break:break-word;line-height:1.35}
|
|
6590
6596
|
.iso-bubble--orch{font-size:9px;padding:3px 9px;border-radius:12px;border-color:#818cf8;color:#a5b4fc;background:rgba(20,15,50,.9)}
|
|
6591
6597
|
@keyframes isoBubblePop{0%{transform:scale(.8) translateY(4px);opacity:.4}100%{transform:scale(1) translateY(0);opacity:1}}
|
|
6592
6598
|
.iso-name{font-size:10px;font-family:var(--mono);font-weight:700;letter-spacing:.3px;text-align:center;max-width:160px;white-space:normal;word-break:break-word;line-height:1.3;background:rgba(255,255,255,.85);border-radius:6px;padding:2px 6px;pointer-events:none;backdrop-filter:blur(4px)}
|