nothumanallowed 13.2.87 → 13.2.89

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nothumanallowed",
3
- "version": "13.2.87",
3
+ "version": "13.2.89",
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": {
@@ -3218,7 +3218,16 @@ RULES:
3218
3218
  if (isCanvasAgent) {
3219
3219
  sysPrompt = canvasSystemPrompt;
3220
3220
  const canvasData = [attachmentText, context].filter(Boolean).join('\n\n');
3221
- userMsg = `Create a professional dashboard report for this data. Output ONLY the inner HTML body content (starting with <div class="header">):\n\n${canvasData}`;
3221
+ userMsg = `Create a professional dashboard report in ${language}. CRITICAL RULES:
3222
+ 1. Start immediately with <div class="header"> — no preamble
3223
+ 2. Every <div class="section"> MUST contain actual content from the data below — NEVER leave a section empty
3224
+ 3. If data for a section exists, include it verbatim with all details
3225
+ 4. If data for a section does NOT exist, omit that section entirely — do NOT create empty placeholder sections
3226
+ 5. Copy specific facts, names, dates, numbers exactly as they appear in the data
3227
+ 6. Output ONLY HTML starting with <div class="header">
3228
+
3229
+ DATA FROM AGENTS:
3230
+ ${canvasData}`;
3222
3231
  } else if (isLiveDataAgent) {
3223
3232
  // These agents fetched real data — use a focused prompt (no tool definitions to avoid JSON output)
3224
3233
  // Live data agents that fetched their own data: do NOT inject previous context
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.2.87';
8
+ export const VERSION = '13.2.89';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11
 
@@ -3832,6 +3832,10 @@ async function runStudio() {
3832
3832
  }
3833
3833
  if (proposals.length >= 2) {
3834
3834
  studioLog(\x27Parlamento\x27, \x27&#x2656;\x27, \x27Avvio deliberazione — Round 2 cross-reading tra agenti...\x27, \x27system\x27);
3835
+ // Add Parliament node to pipeline visual
3836
+ var parlNodeIdx = studioState.nodes.length;
3837
+ studioState.nodes.push({icon:\x27&#x2656;\x27, agent:\x27Parliament\x27, label:\x27Parlamento\x27, status:\x27running\x27, output:\x27\x27, _rendered:false});
3838
+ renderStudioNodes();
3835
3839
  var deliberateBody = JSON.stringify({task: task, proposals: proposals, language: document.getElementById(\x27langSelect\x27) ? document.getElementById(\x27langSelect\x27).value : \x27it\x27});
3836
3840
  try {
3837
3841
  var delRes = await fetch(\x27/api/studio/deliberate\x27, {method:\x27POST\x27, headers:{\x27Content-Type\x27:\x27application/json\x27}, body: deliberateBody, signal: studioAbortController ? studioAbortController.signal : undefined});
@@ -3867,6 +3871,12 @@ async function runStudio() {
3867
3871
  var delTb2 = delL2.querySelector(\x27.studio-log-entry__text\x27);
3868
3872
  if (delTb2) delTb2.innerHTML = \x27<span style="color:var(--green);font-family:var(--mono);font-size:10px">&#x2656; Deliberando Round 2<span class="thinking-dots"><span></span><span></span><span></span></span></span>\x27;
3869
3873
  }
3874
+ // Update Parliament pipeline node label to show current R2 agent
3875
+ if (studioState.nodes[parlNodeIdx]) {
3876
+ studioState.nodes[parlNodeIdx].label = \x27&#x2656; \x27 + r2Label;
3877
+ studioState.nodes[parlNodeIdx].status = \x27running\x27;
3878
+ renderStudioNodes();
3879
+ }
3870
3880
  } else if (r2LiveM) {
3871
3881
  // Live token count update for the current R2 agent
3872
3882
  var r2AgentName = r2LiveM[1];
@@ -3912,6 +3922,11 @@ async function runStudio() {
3912
3922
  var r2Conv = Math.round((dev.r2_convergence || 0) * 100);
3913
3923
  studioLog(\x27Parlamento\x27, \x27&#x2656;\x27, \x27Deliberazione completa — convergenza R2: \x27 + r2Conv + \x27%\x27, \x27system\x27);
3914
3924
  if (dev.mediation) { context = dev.mediation; }
3925
+ if (studioState.nodes[parlNodeIdx]) {
3926
+ studioState.nodes[parlNodeIdx].status = \x27done\x27;
3927
+ studioState.nodes[parlNodeIdx].label = \x27Parlamento (\x27 + r2Conv + \x27%)\x27;
3928
+ renderStudioNodes();
3929
+ }
3915
3930
  delDone = true;
3916
3931
  } else if (dev.done) {
3917
3932
  delDone = true;