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 +1 -1
- package/src/commands/ui.mjs +26 -23
- package/src/constants.mjs +1 -1
- package/src/services/web-ui.mjs +6 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nothumanallowed",
|
|
3
|
-
"version": "13.2.
|
|
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": {
|
package/src/commands/ui.mjs
CHANGED
|
@@ -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
|
-
//
|
|
2749
|
-
const
|
|
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 (
|
|
2767
|
-
//
|
|
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
|
-
|
|
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
|
-
? `
|
|
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.
|
|
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
|
|
package/src/services/web-ui.mjs
CHANGED
|
@@ -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:'◯ wait', running:'▶ running', done:'✓ done', error:'✕ error'}[n.status] || '';
|
|
2751
|
-
|
|
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
|
-
|
|
2762
|
+
var arrowDelay = (i * 120 + 60) + 'ms';
|
|
2763
|
+
html += '<div class="' + arrowCls + '" style="opacity:0;animation:stNodeIn .3s ease ' + arrowDelay + ' forwards">→</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)}
|