nothumanallowed 9.4.11 → 9.4.13
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": "9.4.
|
|
3
|
+
"version": "9.4.13",
|
|
4
4
|
"description": "NotHumanAllowed — 38 AI agents + 58 tools + browser automation + web search. Streaming chat, headless Chrome CDP, multi-conversation, export. Gmail, Calendar, Drive, GitHub, Notion, Slack. Zero-dependency CLI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/src/commands/ui.mjs
CHANGED
|
@@ -1233,7 +1233,6 @@ export async function cmdUI(args) {
|
|
|
1233
1233
|
const wantsScreenshot = /screenshot|screen\s*shot|schermo|cattura|foto|immagine/i.test(msg);
|
|
1234
1234
|
const wantsSearch = /\b(cerca|search|find|look\s*up|ricerca|cercare)\b/i.test(msg);
|
|
1235
1235
|
|
|
1236
|
-
console.log(` [flow] actions=${actions.length} [${actions.map(a=>a.action).join(',')}] wantsSearch=${wantsSearch} wantsScreenshot=${wantsScreenshot}`);
|
|
1237
1236
|
// If user asked to search but LLM didn't call web_search, force it
|
|
1238
1237
|
if (wantsSearch && !actions.some(a => a.action === 'web_search')) {
|
|
1239
1238
|
// Extract search query from message (remove action words)
|
|
@@ -1307,7 +1306,6 @@ export async function cmdUI(args) {
|
|
|
1307
1306
|
}
|
|
1308
1307
|
|
|
1309
1308
|
// If the tool produced a screenshot (web_search with screenshot=true), send it via SSE
|
|
1310
|
-
console.log(` [debug] action=${action} resultStr.length=${resultStr.length} hasScreenshot=${resultStr.includes('[Screenshot')} last80=${resultStr.slice(-80)}`);
|
|
1311
1309
|
if (resultStr.includes('[Screenshot of results captured')) {
|
|
1312
1310
|
try {
|
|
1313
1311
|
const fileMatch = resultStr.match(/file:(ss-\d+\.jpg)/);
|
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 = '9.4.
|
|
8
|
+
export const VERSION = '9.4.13';
|
|
9
9
|
export const BASE_URL = 'https://nothumanallowed.com/cli';
|
|
10
10
|
export const API_BASE = 'https://nothumanallowed.com/api/v1';
|
|
11
11
|
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import os from 'os';
|
|
11
|
+
import path from 'path';
|
|
11
12
|
|
|
12
13
|
import {
|
|
13
14
|
listMessages,
|
|
@@ -1322,12 +1323,9 @@ export async function executeTool(action, params, config) {
|
|
|
1322
1323
|
if (params.screenshot) {
|
|
1323
1324
|
try {
|
|
1324
1325
|
const be = await import('./browser-engine.mjs');
|
|
1325
|
-
console.log(` [web_search_ss] isBrowserRunning=${be.isBrowserRunning()}`);
|
|
1326
1326
|
// Ensure browser is running
|
|
1327
1327
|
if (!be.isBrowserRunning()) {
|
|
1328
|
-
console.log(` [web_search_ss] launching browser...`);
|
|
1329
1328
|
await be.browserOpen('https://example.com', { waitForLoad: true });
|
|
1330
|
-
console.log(` [web_search_ss] browser launched`);
|
|
1331
1329
|
}
|
|
1332
1330
|
// Build search results HTML
|
|
1333
1331
|
const esc = (s) => (s || '').replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"');
|
|
@@ -1348,7 +1346,7 @@ export async function executeTool(action, params, config) {
|
|
|
1348
1346
|
fsMod.writeFileSync(path.join(ssDir, ssFilename), Buffer.from(ss.base64, 'base64'));
|
|
1349
1347
|
return textResult + `\n\n[Screenshot of results captured (${Math.round(ss.size / 1024)}KB) file:${ssFilename}]`;
|
|
1350
1348
|
}
|
|
1351
|
-
} catch
|
|
1349
|
+
} catch { /* screenshot failed */ }
|
|
1352
1350
|
}
|
|
1353
1351
|
|
|
1354
1352
|
return textResult;
|
package/src/services/web-ui.mjs
CHANGED
|
@@ -576,12 +576,7 @@ function sendChat(){
|
|
|
576
576
|
renderMessages();
|
|
577
577
|
}
|
|
578
578
|
if(currentEvent==='screenshot'&&data.base64){
|
|
579
|
-
|
|
580
|
-
var ssUrl=data.filename?'/api/screenshots/'+data.filename:'data:image/'+(data.format||'jpeg')+';base64,'+data.base64;
|
|
581
|
-
chatHistory[streamIdx]._screenshots.push(ssUrl);
|
|
582
|
-
chatHistory[streamIdx].content+='\\n\\n';
|
|
583
|
-
renderMessages();
|
|
584
|
-
// Show and update browser viewer with the screenshot
|
|
579
|
+
// Only update the browser viewer — the actual image in chat is handled by the 'done' event via screenshotFiles
|
|
585
580
|
showBrowserViewer('Screenshot','Captured');
|
|
586
581
|
updateBrowserFrame(data.base64,data.format||'jpeg');
|
|
587
582
|
updateBrowserStatus('Screenshot captured');
|
|
@@ -593,7 +588,7 @@ function sendChat(){
|
|
|
593
588
|
if(data.url)updateBrowserStatus(data.url);
|
|
594
589
|
}
|
|
595
590
|
if(currentEvent==='tool_synthesis'){chatHistory[streamIdx].content='';renderMessages();}
|
|
596
|
-
if(currentEvent==='done'){endStreaming();if(data.content)chatHistory[streamIdx].content=data.content;var ssf=data.screenshotFiles||[];for(var fi=0;fi<ssf.length;fi++){chatHistory[streamIdx].content+='\\n\\n';}
|
|
591
|
+
if(currentEvent==='done'){endStreaming();if(data.content)chatHistory[streamIdx].content=data.content;var ssf=data.screenshotFiles||[];for(var fi=0;fi<ssf.length;fi++){chatHistory[streamIdx].content+='\\n\\n';}renderMessages();loadConvList();if(ssf.length>0)setTimeout(closeBrowserViewer,5000);}
|
|
597
592
|
if(currentEvent==='error'){endStreaming();chatHistory[streamIdx].content='Error: '+(data.message||'Unknown');renderMessages();}
|
|
598
593
|
}catch(e){}
|
|
599
594
|
}
|