1048// async (10-27): spawnSync here froze the whole server (every agent, every approval) for the length of the conversion
L1049: const status = await new Promise(r => { try { const p = spawn(process.env.FFMPEG || 'ffmpeg', ['-y', '-loglevel', 'error', '-i', file, '-vn', '-c:a', 'libopus', '-b:a', '32k', ogg]...
L1050: p.on('error', () => r(-1)); p.on('exit', c => r(c)); } catch { r(-1); } });
...
L1059: form.append('file', new Blob([fs.readFileSync(file)]), path.basename(file));
L1060: const r = await fetch(`https://${String(id).slice(0, 4)}.media.greenapi.com/waInstance${id}/sendFileByUpload/${token}`, { method: 'POST', body: form });
L1061: const j = await r.json().catch(() => ({}));
CriticalSame File Env Network Execution
A single source file combines environment access, network access, and code or shell execution with blocking evidence.
server.mjsView on unpkg · L1048 1// EMO — personal command center over Claude Code agents.
L2: // Run: node server.mjs → http://localhost:8787
L3: import http from 'node:http';
...
L7: import { randomUUID, randomBytes, scryptSync, timingSafeEqual, createHash } from 'node:crypto';
L8: import { spawn, spawnSync } from 'node:child_process';
L9: import { fileURLToPath } from 'node:url';
...
L27: const ASK_OWNER = new Set(['ask_owner', 'ask_elad']); // the yes/no question tool, and its old name (older skills)
L28: process.env.CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS ||= '1'; // the CLI tells when a run is really over (session_state_changed 'idle'); see the run loop
L29:
...
L69: try { fs.readSync(fd, buf, 0, buf.length, c.size); } finally { fs.closeSync(fd); }
L70: const parts = (c.rest + buf.toString('utf8')).split('\n');
CriticalCredential Exfiltration
Source appears to send environment or credential material to an external endpoint.
server.mjsView on unpkg · L1 •matchType = previous_version_dangerous_delta
matchedPackage = @agentic-dev.ai/emo@0.1.0
matchedIdentity = npm:QGFnZW50aWMtZGV2LmFpL2Vtbw:0.1.0
similarity = 0.864
summary = stored previous version shares package body but lacks this dangerous source file
CriticalPrevious Version Dangerous Delta
This package version adds a dangerous source file absent from the previous stored version; route for source-aware review.
server.mjsView on unpkg 1359if (!SECRET_PATH.test(JSON.stringify(input))) return false;
L1360: if (toolName !== 'Bash' && toolName !== 'PowerShell') return true;
L1361: const c = String(input.command || '');
1// EMO — personal command center over Claude Code agents.
L2: // Run: node server.mjs → http://localhost:8787
L3: import http from 'node:http';
...
L7: import { randomUUID, randomBytes, scryptSync, timingSafeEqual, createHash } from 'node:crypto';
L8: import { spawn, spawnSync } from 'node:child_process';
L9: import { fileURLToPath } from 'node:url';
...
L27: const ASK_OWNER = new Set(['ask_owner', 'ask_elad']); // the yes/no question tool, and its old name (older skills)
L28: process.env.CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS ||= '1'; // the CLI tells when a run is really over (session_state_changed 'idle'); see the run loop
L29:
...
L69: try { fs.readSync(fd, buf, 0, buf.length, c.size); } finally { fs.closeSync(fd); }
L70: const parts = (c.rest + buf.toString('utf8')).split('\n');
HighSandbox Evasion Gated Capability
Source gates dangerous network, credential, or execution behavior behind CI, host, platform, time, or geo fingerprint checks.
server.mjsView on unpkg · L1 1// EMO — personal command center over Claude Code agents.
L2: // Run: node server.mjs → http://localhost:8787
L3: import http from 'node:http';
...
L7: import { randomUUID, randomBytes, scryptSync, timingSafeEqual, createHash } from 'node:crypto';
L8: import { spawn, spawnSync } from 'node:child_process';
L9: import { fileURLToPath } from 'node:url';
...
L27: const ASK_OWNER = new Set(['ask_owner', 'ask_elad']); // the yes/no question tool, and its old name (older skills)
L28: process.env.CLAUDE_CODE_EMIT_SESSION_STATE_EVENTS ||= '1'; // the CLI tells when a run is really over (session_state_changed 'idle'); see the run loop
L29:
...
L69: try { fs.readSync(fd, buf, 0, buf.length, c.size); } finally { fs.closeSync(fd); }
L70: const parts = (c.rest + buf.toString('utf8')).split('\n');
LowWeak Crypto
Package source references weak cryptographic algorithms.
server.mjsView on unpkg · L1