nothumanallowed 13.2.83 → 13.2.84
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 +11 -2
- package/src/constants.mjs +1 -1
- package/src/services/web-ui.mjs +26 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nothumanallowed",
|
|
3
|
-
"version": "13.2.
|
|
3
|
+
"version": "13.2.84",
|
|
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
|
@@ -2998,10 +2998,19 @@ ${rawText.slice(0, 18000)}`;
|
|
|
2998
2998
|
// Run all queries sequentially, accumulate results
|
|
2999
2999
|
for (let qi = 0; qi < searchQueries.length; qi++) {
|
|
3000
3000
|
const q = searchQueries[qi];
|
|
3001
|
+
sendToken(`[Searching: "${q.slice(0, 60)}"] `);
|
|
3001
3002
|
try {
|
|
3002
|
-
const searchResult = await withTimeout(executeTool('web_search', { query: q, deep:
|
|
3003
|
+
const searchResult = await withTimeout(executeTool('web_search', { query: q, deep: true }, config), 35000);
|
|
3003
3004
|
const searchStr = typeof searchResult === 'string' ? searchResult : JSON.stringify(searchResult);
|
|
3004
|
-
|
|
3005
|
+
// If no results, try without 'deep' (fallback to basic search)
|
|
3006
|
+
if (!searchStr || searchStr.length < 50 || /no results|not found/i.test(searchStr)) {
|
|
3007
|
+
sendToken('[Retrying basic search...] ');
|
|
3008
|
+
const retryResult = await withTimeout(executeTool('web_search', { query: q }, config), 25000);
|
|
3009
|
+
const retryStr = typeof retryResult === 'string' ? retryResult : JSON.stringify(retryResult);
|
|
3010
|
+
toolData += (toolData ? '\n\n' : '') + `## Web search: "${q}":\n${retryStr || 'No results found.'}`;
|
|
3011
|
+
} else {
|
|
3012
|
+
toolData += (toolData ? '\n\n' : '') + `## Web search: "${q}":\n${searchStr}`;
|
|
3013
|
+
}
|
|
3005
3014
|
} catch (e) { toolData += (toolData ? '\n\n' : '') + `## Search "${q}" failed: ${e.message}`; }
|
|
3006
3015
|
}
|
|
3007
3016
|
} catch (e) { toolData = toolData || `Web search failed: ${e.message}`; }
|
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.84';
|
|
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
|
@@ -3796,7 +3796,15 @@ async function runStudio() {
|
|
|
3796
3796
|
if (ct) ct.textContent = node.label + ' Report';
|
|
3797
3797
|
}
|
|
3798
3798
|
}
|
|
3799
|
-
context
|
|
3799
|
+
// Accumulate context: append each step's output so specialist agents see ALL previous data
|
|
3800
|
+
var NL = String.fromCharCode(10);
|
|
3801
|
+
if (realOutput) {
|
|
3802
|
+
context = context
|
|
3803
|
+
? context + NL + NL + '---' + NL + '## ' + node.label + ':' + NL + realOutput
|
|
3804
|
+
: '## ' + node.label + ':' + NL + realOutput;
|
|
3805
|
+
} else if (stepResult.canvas) {
|
|
3806
|
+
context = context || '[Canvas generated]';
|
|
3807
|
+
}
|
|
3800
3808
|
}
|
|
3801
3809
|
|
|
3802
3810
|
// Parliament mode: Round 2 cross-reading deliberation
|
|
@@ -3993,8 +4001,14 @@ function studioAddTokens(inp, out) {
|
|
|
3993
4001
|
function studioUpdateTokenBar() {
|
|
3994
4002
|
var el = document.getElementById('studioTokenBar');
|
|
3995
4003
|
if (!el) return;
|
|
3996
|
-
if (studioTokens.in === 0 && studioTokens.out === 0) { el.
|
|
3997
|
-
|
|
4004
|
+
if (studioTokens.in === 0 && studioTokens.out === 0) { el.innerHTML = ''; return; }
|
|
4005
|
+
var total = studioTokens.in + studioTokens.out;
|
|
4006
|
+
el.innerHTML = '<span style="color:var(--green);font-weight:700">\u2B06 ' + studioTokens.in.toLocaleString() + '</span>' +
|
|
4007
|
+
'<span style="color:var(--dim)"> in </span>' +
|
|
4008
|
+
'<span style="color:#a5b4fc;font-weight:700">\u2B07 ' + studioTokens.out.toLocaleString() + '</span>' +
|
|
4009
|
+
'<span style="color:var(--dim)"> out \u2022 </span>' +
|
|
4010
|
+
'<span style="color:var(--bright);font-weight:700">' + total.toLocaleString() + '</span>' +
|
|
4011
|
+
'<span style="color:var(--dim)"> tot</span>';
|
|
3998
4012
|
}
|
|
3999
4013
|
|
|
4000
4014
|
function runStudioStep(idx, node, task, context, stepDef, signal) {
|
|
@@ -4003,7 +4017,9 @@ function runStudioStep(idx, node, task, context, stepDef, signal) {
|
|
|
4003
4017
|
var canvasHtml = null;
|
|
4004
4018
|
// Inject attachment into first step only — pass PDF/image as dedicated fields,
|
|
4005
4019
|
// NOT as raw base64 in context (would cause 100k+ token overflow for any real PDF).
|
|
4006
|
-
|
|
4020
|
+
// Cap accumulated context to ~40KB to avoid token overflow — keep the most recent content
|
|
4021
|
+
var cappedContext = context && context.length > 40000 ? context.slice(-40000) : context;
|
|
4022
|
+
var bodyObj = {stepIdx: idx, agent: node.agent, task: task, context: cappedContext, stepDef: stepDef};
|
|
4007
4023
|
if (idx === 0 && studioState.attachmentContext) {
|
|
4008
4024
|
var ac = studioState.attachmentContext;
|
|
4009
4025
|
var isPdfAttach = ac.indexOf('[ATTACHED PDF:') === 0;
|
|
@@ -4049,7 +4065,7 @@ function runStudioStep(idx, node, task, context, stepDef, signal) {
|
|
|
4049
4065
|
if (ev.token) {
|
|
4050
4066
|
var isStatus = ev.token.charAt(0) === \x27[\x27 && ev.token.indexOf(\x27]\x27) > 0 && ev.token.length < 80;
|
|
4051
4067
|
if (!isStatus) { output += ev.token; }
|
|
4052
|
-
// Update live log
|
|
4068
|
+
// Update live log
|
|
4053
4069
|
var entries = document.querySelectorAll(\x27.studio-log-entry\x27);
|
|
4054
4070
|
var last = entries[entries.length - 1];
|
|
4055
4071
|
if (last) {
|
|
@@ -4057,8 +4073,12 @@ function runStudioStep(idx, node, task, context, stepDef, signal) {
|
|
|
4057
4073
|
if (tb) {
|
|
4058
4074
|
if (isStatus) {
|
|
4059
4075
|
tb.textContent = ev.token.replace(new RegExp(\x27[\\\\r\\\\n]+\x27,\x27g\x27), \x27 \x27);
|
|
4076
|
+
} else {
|
|
4077
|
+
// Live token counter — shows progress without raw content
|
|
4078
|
+
var chars = output.length;
|
|
4079
|
+
var toks = Math.ceil(chars / 4);
|
|
4080
|
+
tb.innerHTML = \x27<span style="color:var(--green);font-family:var(--mono);font-size:10px">● Generating\u2026 \x27 + toks + \x27 token</span>\x27;
|
|
4060
4081
|
}
|
|
4061
|
-
// LLM output: don\x27t show raw tokens — just keep the animated dots from CSS
|
|
4062
4082
|
}
|
|
4063
4083
|
}
|
|
4064
4084
|
}
|