nothumanallowed 13.2.13 → 13.2.14

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.13",
3
+ "version": "13.2.14",
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": {
@@ -2745,10 +2745,8 @@ Respond with ONLY valid JSON, no markdown:
2745
2745
 
2746
2746
  // ── Build system prompt with real tool data ───────────────────
2747
2747
  const isCanvasAgent = agent === 'CanvasAgent';
2748
- // Synthesis agents: do NOT wrap with TOOL_DEFINITIONS use focused prompts only
2749
- const isSynthesisAgent = ['WriterAgent','SummaryAgent','DataAnalystAgent','SecurityAgent','DevOpsAgent'].includes(agent);
2750
- const isToolOutputAgent = ['CalendarAgent','EmailAgent','GitHubAgent','NotionAgent','SlackAgent'].includes(agent);
2751
- const isPureAnalysis = isSynthesisAgent || isToolOutputAgent;
2748
+ // Tool-data agents: fetch real live data and use buildSystemPrompt (tool calls allowed)
2749
+ const isLiveDataAgent = ['CalendarAgent','EmailAgent','GitHubAgent','NotionAgent','SlackAgent','DriveAgent','BrowserAgent','WebSearchAgent','ResearchAgent'].includes(agent);
2752
2750
 
2753
2751
  const canvasSystemPrompt = `You are an HTML report generator. Output a single complete HTML document. No preamble, no explanation.
2754
2752
  RULES:
@@ -2763,33 +2761,38 @@ RULES:
2763
2761
  if (isCanvasAgent) {
2764
2762
  sysPrompt = canvasSystemPrompt;
2765
2763
  userMsg = `Generate a beautiful HTML dashboard report for this content. Start immediately with <!DOCTYPE html>:\n\n${context.slice(0, 8000)}`;
2766
- } else if (isSynthesisAgent) {
2767
- // Focused system promptno TOOL_DEFINITIONS bloat
2768
- const today = new Date().toISOString().split('T')[0];
2769
- const language = config?.language || 'Italian';
2770
- sysPrompt = `You are ${agent}, a specialist AI agent inside NHA Studio. Today is ${today}. Respond in ${language}.
2771
- Task: ${stepPrompt}
2772
- ${toolData ? `\n## LIVE DATA:\n${toolData.slice(0, 4000)}\n` : ''}
2773
- ${context ? `\n## CONTEXT FROM PREVIOUS STEPS:\n${context.slice(0, 5000)}\n` : ''}
2774
- Write your full response in plain prose. Do NOT output JSON, tool calls, or code blocks unless explicitly asked. Use the context and data above — do not ask for more information.`;
2775
- userMsg = toolData
2776
- ? `Use the live data and context above to complete: ${stepPrompt}`
2777
- : context
2778
- ? `Based on the context above, complete: ${stepPrompt}`
2779
- : stepPrompt;
2780
- } else {
2764
+ } else if (isLiveDataAgent) {
2765
+ // These agents fetched real data use buildSystemPrompt so they can call tools too
2781
2766
  const agentInstruction = `You are ${agent}, a specialist AI agent inside NHA Studio.\nYour task: ${stepPrompt}\n` +
2782
2767
  (toolData ? `\n## DATA FROM TOOLS:\n${toolData.slice(0, 4000)}\n` : '') +
2783
2768
  (context ? `\n## OUTPUT FROM PREVIOUS AGENTS:\n${context.slice(0, 3000)}\n` : '') +
2784
- (isToolOutputAgent
2785
- ? '\nWrite your analysis in plain text. Do NOT output JSON, tool calls, or code blocks. Use the context above.'
2786
- : '\nOutput your result directly. No preamble.');
2769
+ '\nWrite your analysis in plain text. Do NOT output JSON, tool calls, or code blocks. Summarize the data clearly.';
2787
2770
  sysPrompt = buildSystemPrompt(agent, agentInstruction, config);
2788
2771
  userMsg = toolData
2789
- ? `Use the data above to complete: ${stepPrompt}`
2772
+ ? `Summarize the data above for: ${stepPrompt}`
2790
2773
  : context
2791
2774
  ? `Based on the previous output, complete: ${stepPrompt}`
2792
2775
  : stepPrompt;
2776
+ } else {
2777
+ // All other agents (WriterAgent, DataAnalystAgent, specialist agents, etc.)
2778
+ // Use a focused prompt with NO TOOL_DEFINITIONS to prevent JSON/tool-call output
2779
+ const today = new Date().toISOString().split('T')[0];
2780
+ const language = config?.language || 'Italian';
2781
+ sysPrompt = `You are ${agent}, a specialist AI agent inside NHA Studio. Today is ${today}. Respond in ${language}.
2782
+
2783
+ CRITICAL RULES:
2784
+ - Do NOT output JSON, tool calls, function calls, or code blocks
2785
+ - Do NOT ask for more information — use only the data provided below
2786
+ - Write in plain prose, structured with headers and bullet points where appropriate
2787
+ - Be thorough and specific — this is for an executive briefing
2788
+
2789
+ ${toolData ? `## LIVE DATA:\n${toolData.slice(0, 4000)}\n` : ''}
2790
+ ${context ? `## CONTEXT FROM PREVIOUS AGENTS:\n${context.slice(0, 5000)}\n` : ''}`;
2791
+ userMsg = toolData
2792
+ ? `Use the live data and context above to complete this task: ${stepPrompt}`
2793
+ : context
2794
+ ? `Using the context from previous steps, complete this task: ${stepPrompt}`
2795
+ : stepPrompt;
2793
2796
  }
2794
2797
 
2795
2798
  // ── Stream LLM response ───────────────────────────────────────
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.13';
8
+ export const VERSION = '13.2.14';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11
 
@@ -2748,7 +2748,8 @@ function renderStudioNodes() {
2748
2748
  else if (n.status === 'done') cls += ' studio-node--done';
2749
2749
  else if (n.status === 'error') cls += ' studio-node--error';
2750
2750
  var statusLabel = {waiting:'&#9711; wait', running:'&#9654; running', done:'&#10003; done', error:'&#10005; error'}[n.status] || '';
2751
- html += '<div class="' + cls + '">';
2751
+ var delay = (i * 120) + 'ms';
2752
+ html += '<div class="' + cls + '" style="animation-delay:' + delay + '">';
2752
2753
  html += '<div class="studio-node__circle">' + n.icon + '</div>';
2753
2754
  html += '<div class="studio-node__label">' + esc(n.label) + '</div>';
2754
2755
  html += '<div class="studio-node__status studio-node__status--' + n.status + '">' + statusLabel + '</div>';
@@ -2758,7 +2759,8 @@ function renderStudioNodes() {
2758
2759
  var arrowCls = 'studio-arrow';
2759
2760
  if (n.status === 'done' && next.status === 'running') arrowCls += ' studio-arrow--active';
2760
2761
  else if (n.status === 'done') arrowCls += ' studio-arrow--done';
2761
- html += '<div class="' + arrowCls + '">&#8594;</div>';
2762
+ var arrowDelay = (i * 120 + 60) + 'ms';
2763
+ html += '<div class="' + arrowCls + '" style="opacity:0;animation:stNodeIn .3s ease ' + arrowDelay + ' forwards">&#8594;</div>';
2762
2764
  }
2763
2765
  });
2764
2766
  html += '</div>';
@@ -3678,7 +3680,8 @@ input:focus,textarea:focus{border-color:var(--green3)}
3678
3680
  .studio-canvas__empty{display:flex;align-items:center;justify-content:center;height:180px;color:var(--dim);font-size:11px;flex-direction:column;gap:8px}
3679
3681
  .studio-canvas__empty-icon{font-size:32px;opacity:.3}
3680
3682
  .studio-nodes{display:flex;align-items:center;gap:0;padding:28px 24px;overflow-x:auto;min-height:130px;background:var(--bg2);border-radius:10px;border:1px solid var(--border);margin-bottom:16px}
3681
- .studio-node{position:relative;display:flex;flex-direction:column;align-items:center;gap:7px;min-width:106px;max-width:126px}
3683
+ .studio-node{position:relative;display:flex;flex-direction:column;align-items:center;gap:7px;min-width:106px;max-width:126px;opacity:0;animation:stNodeIn .35s ease forwards}
3684
+ @keyframes stNodeIn{from{opacity:0;transform:translateY(10px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}
3682
3685
  .studio-node__circle{width:56px;height:56px;border-radius:14px;border:1.5px solid var(--border2);background:var(--bg3);display:flex;align-items:center;justify-content:center;font-size:22px;transition:all .35s;flex-shrink:0}
3683
3686
  .studio-node--active .studio-node__circle{border-color:var(--green3);box-shadow:0 0 0 4px rgba(99,102,241,.15);background:var(--greendim);animation:stRing 1.4s ease-out infinite}
3684
3687
  .studio-node--done .studio-node__circle{border-color:#22c55e;background:rgba(34,197,94,.08);box-shadow:0 0 0 3px rgba(34,197,94,.12)}