nothumanallowed 14.4.17 → 14.4.19

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.4.17",
3
+ "version": "14.4.19",
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/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.4.17';
8
+ export const VERSION = '14.4.19';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11
 
@@ -86,12 +86,19 @@ export function register(router) {
86
86
  env: { ...process.env, NODE_ENV: 'production' },
87
87
  });
88
88
 
89
- // Read the newly installed version from disk
89
+ // Get the installed version from npm output or registry
90
90
  let newVersion = '';
91
91
  try {
92
- const pkgPath = path.resolve(__dirname, '..', '..', '..', 'package.json');
93
- const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf8'));
94
- newVersion = pkg.version || '';
92
+ // Extract version from npm install output (e.g. "+ nothumanallowed@14.4.18")
93
+ const verMatch = stdout.match(/nothumanallowed@(\d+\.\d+\.\d+)/);
94
+ if (verMatch) {
95
+ newVersion = verMatch[1];
96
+ } else {
97
+ // Fallback: check registry
98
+ const regResp = await fetch('https://registry.npmjs.org/nothumanallowed/latest');
99
+ const regData = await regResp.json();
100
+ newVersion = regData.version || '';
101
+ }
95
102
  } catch { /* ignore */ }
96
103
 
97
104
  // Restart ops daemon if running (so Telegram/Discord reconnect with new code)
@@ -217,7 +217,9 @@ class SandboxManager {
217
217
  }
218
218
  }
219
219
 
220
- emit({ type: 'error', msg: _attempt >= MAX_RETRIES ? `Failed after ${MAX_RETRIES} attempts` : 'Server crashed on startup' });
220
+ // Show the actual error from stderr
221
+ const errDetail = stderrBuf.split('\n').find((l) => l.includes('Error') || l.includes('error')) || stderrBuf.slice(0, 300);
222
+ emit({ type: 'error', msg: _attempt >= MAX_RETRIES ? `Failed after ${MAX_RETRIES} attempts: ${errDetail}` : `Crash: ${errDetail || 'Server crashed on startup'}` });
221
223
  }
222
224
  }
223
225
 
@@ -2039,7 +2041,7 @@ function _patchEntry(projectDir, entryFile, shimDir, port) {
2039
2041
  const shimAbs = path.join(shimDir, 'index.js').replace(/\\/g, '/');
2040
2042
  const launcher = [
2041
2043
  `// NHA WebCraft Sandbox Launcher — auto-generated`,
2042
- `process.env.PORT = process.env.PORT || '${port}';`,
2044
+ `process.env.PORT = '${port}';`,
2043
2045
  `process.env.NODE_ENV = 'development';`,
2044
2046
  `// Inject shims before loading user code`,
2045
2047
  `require('${shimAbs}');`,