nothumanallowed 14.1.64 → 14.1.66

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": "14.1.64",
3
+ "version": "14.1.66",
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": {
@@ -15,19 +15,28 @@ const DEFAULT_PORT = 3847;
15
15
  export async function cmdUI(args) {
16
16
  let port = DEFAULT_PORT;
17
17
  let noBrowser = false;
18
- let lanMode = false;
18
+ let explicitHost = null;
19
19
 
20
20
  for (const arg of args) {
21
21
  if (arg.startsWith('--port=')) {
22
22
  port = parseInt(arg.split('=')[1], 10) || DEFAULT_PORT;
23
23
  } else if (arg === '--no-browser') {
24
24
  noBrowser = true;
25
- } else if (arg === '--lan' || arg === '--host' || arg === '--host=0.0.0.0') {
26
- lanMode = true;
25
+ } else if (arg === '--lan' || arg === '-lan' || arg === '--host' || arg === '-host' || arg === 'lan') {
26
+ explicitHost = '0.0.0.0';
27
+ noBrowser = true;
28
+ } else if (arg.startsWith('--host=')) {
29
+ explicitHost = arg.split('=')[1] || '0.0.0.0';
30
+ } else if (/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.test(arg)) {
31
+ // Positional IP address — bind to 0.0.0.0 so it's accessible on all interfaces
32
+ // (binding to a specific LAN IP often fails; 0.0.0.0 covers all)
33
+ explicitHost = '0.0.0.0';
34
+ noBrowser = true; // On a headless VM, don't try to open a browser
35
+ console.log(` → LAN mode: UI accessible at http://${arg}:${port}`);
27
36
  }
28
37
  }
29
38
 
30
- const host = lanMode ? '0.0.0.0' : '127.0.0.1';
39
+ const host = explicitHost || '127.0.0.1';
31
40
 
32
41
  // Auto-start ops daemon (Telegram + cron) if not already running
33
42
  if (!isRunning()) {
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 = '14.1.64';
8
+ export const VERSION = '14.1.66';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11
 
@@ -391,6 +391,19 @@ export async function startServer({ port = 3847, host = '127.0.0.1', noBrowser =
391
391
  const { VERSION } = await import('../constants.mjs');
392
392
  console.log(`\n ${BOLD}${G}NHA${NC} ${D}v${VERSION}${NC}`);
393
393
  console.log(` ${G}✓${NC} Server running on ${G}http://${host}:${port}${NC}`);
394
+ if (host === '0.0.0.0') {
395
+ try {
396
+ const os = await import('os');
397
+ const nets = os.default.networkInterfaces();
398
+ for (const iface of Object.values(nets)) {
399
+ for (const info of iface || []) {
400
+ if (info.family === 'IPv4' && !info.internal) {
401
+ console.log(` ${G}✓${NC} LAN: ${G}http://${info.address}:${port}${NC}`);
402
+ }
403
+ }
404
+ }
405
+ } catch {}
406
+ }
394
407
 
395
408
  // ENTERPRISE STARTUP DIAGNOSTIC: Check Google OAuth configuration
396
409
  try {