@hackerai/local 0.1.3 → 0.1.5

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/README.md CHANGED
@@ -23,10 +23,8 @@ hackerai-local --token YOUR_TOKEN
23
23
  npx @hackerai/local --token hsb_abc123 --name "My Laptop"
24
24
  ```
25
25
 
26
- This pulls the pre-built HackerAI Agent Sandbox image (~4GB) with a pre-configured setup environment to execute automated security tools with ease and security. Includes comprehensive automated security tools:
27
- nmap, sqlmap, ffuf, gobuster, nuclei, hydra, nikto, wpscan, subfinder, httpx, bloodhound, kerbrute, and more.
28
-
29
- All tools are pre-installed, configured, and ready to use immediately - no manual setup required.
26
+ This pulls the pre-built HackerAI sandbox image (~2GB) with 30+ pentesting tools including:
27
+ nmap, sqlmap, ffuf, gobuster, nuclei, hydra, nikto, wpscan, subfinder, httpx, and more.
30
28
 
31
29
  ### Custom Docker Image
32
30
 
@@ -48,7 +46,7 @@ npx @hackerai/local --token hsb_abc123 --name "Work PC" --dangerous
48
46
  | ------------------ | ------------------------------------------------------ |
49
47
  | `--token TOKEN` | Authentication token from HackerAI Settings (required) |
50
48
  | `--name NAME` | Connection name shown in HackerAI (default: hostname) |
51
- | `--image IMAGE` | Docker image to use (default: hackerai/sandbox) |
49
+ | `--image IMAGE` | Docker image to use (default: hackerai/sandbox) |
52
50
  | `--dangerous` | Run commands directly on host OS without Docker |
53
51
  | `--convex-url URL` | Override backend URL (for development) |
54
52
  | `--help, -h` | Show help message |
@@ -61,7 +59,7 @@ npx @hackerai/local --token hsb_abc123 --name "Work PC" --dangerous
61
59
 
62
60
  ## Security
63
61
 
64
- - **Docker Mode**: Commands run in a container with process isolation, but with direct host network access (`--network host`) and network capabilities (`--cap-add=NET_RAW --cap-add=NET_ADMIN`) so pentesting tools like nmap, masscan, and tcpdump can perform network scans and packet captures
62
+ - **Docker Mode**: Commands run in a container with process isolation, but with direct host network access (`--network host`) so pentesting tools can scan and interact with network services
65
63
  - **Dangerous Mode**: Commands run directly on your OS without any isolation - use with caution
66
64
 
67
65
  ## License
package/dist/index.js CHANGED
@@ -17,9 +17,101 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  const browser_1 = require("convex/browser");
19
19
  const child_process_1 = require("child_process");
20
- const util_1 = require("util");
21
20
  const os_1 = __importDefault(require("os"));
22
- const execAsync = (0, util_1.promisify)(child_process_1.exec);
21
+ // Align with LLM context limits: ~2048 tokens ≈ 6000 chars
22
+ const MAX_OUTPUT_SIZE = 6000;
23
+ // Idle timeout: auto-terminate after 1 hour without commands
24
+ const IDLE_TIMEOUT_MS = 60 * 60 * 1000; // 1 hour
25
+ // Truncation marker for 25% head + 75% tail strategy
26
+ const TRUNCATION_MARKER = "\n\n[... OUTPUT TRUNCATED - middle content removed to fit context limits ...]\n\n";
27
+ /**
28
+ * Truncates output using 25% head + 75% tail strategy.
29
+ * This preserves both the command start (context) and the end (final results/errors).
30
+ */
31
+ function truncateOutput(content, maxSize = MAX_OUTPUT_SIZE) {
32
+ if (content.length <= maxSize)
33
+ return content;
34
+ const markerLength = TRUNCATION_MARKER.length;
35
+ const budgetForContent = maxSize - markerLength;
36
+ // 25% head + 75% tail strategy
37
+ const headBudget = Math.floor(budgetForContent * 0.25);
38
+ const tailBudget = budgetForContent - headBudget;
39
+ const head = content.slice(0, headBudget);
40
+ const tail = content.slice(-tailBudget);
41
+ return head + TRUNCATION_MARKER + tail;
42
+ }
43
+ /**
44
+ * Runs a shell command using spawn for better output control.
45
+ * Collects stdout/stderr and handles timeouts gracefully.
46
+ */
47
+ function runShellCommand(command, options = {}) {
48
+ const { timeout = 30000, shell = "/bin/bash", maxOutputSize = MAX_OUTPUT_SIZE, } = options;
49
+ return new Promise((resolve) => {
50
+ let stdout = "";
51
+ let stderr = "";
52
+ let killed = false;
53
+ let timeoutId;
54
+ const proc = (0, child_process_1.spawn)(shell, ["-c", command], {
55
+ stdio: ["ignore", "pipe", "pipe"],
56
+ });
57
+ // Set up timeout
58
+ if (timeout > 0) {
59
+ timeoutId = setTimeout(() => {
60
+ killed = true;
61
+ proc.kill("SIGTERM");
62
+ // Force kill after 2 seconds if still running
63
+ setTimeout(() => {
64
+ if (!proc.killed) {
65
+ proc.kill("SIGKILL");
66
+ }
67
+ }, 2000);
68
+ }, timeout);
69
+ }
70
+ proc.stdout?.on("data", (data) => {
71
+ stdout += data.toString();
72
+ // Prevent memory issues by capping collection (we'll truncate at the end)
73
+ if (stdout.length > maxOutputSize * 2) {
74
+ stdout = truncateOutput(stdout, maxOutputSize * 2);
75
+ }
76
+ });
77
+ proc.stderr?.on("data", (data) => {
78
+ stderr += data.toString();
79
+ if (stderr.length > maxOutputSize * 2) {
80
+ stderr = truncateOutput(stderr, maxOutputSize * 2);
81
+ }
82
+ });
83
+ proc.on("close", (code) => {
84
+ if (timeoutId)
85
+ clearTimeout(timeoutId);
86
+ // Final truncation to fit Convex limits
87
+ const truncatedStdout = truncateOutput(stdout, maxOutputSize);
88
+ const truncatedStderr = truncateOutput(stderr, maxOutputSize);
89
+ if (killed) {
90
+ resolve({
91
+ stdout: truncatedStdout,
92
+ stderr: truncatedStderr + "\n[Command timed out and was terminated]",
93
+ exitCode: 124, // Standard timeout exit code
94
+ });
95
+ }
96
+ else {
97
+ resolve({
98
+ stdout: truncatedStdout,
99
+ stderr: truncatedStderr,
100
+ exitCode: code ?? 1,
101
+ });
102
+ }
103
+ });
104
+ proc.on("error", (error) => {
105
+ if (timeoutId)
106
+ clearTimeout(timeoutId);
107
+ resolve({
108
+ stdout: truncateOutput(stdout, maxOutputSize),
109
+ stderr: truncateOutput(stderr + "\n" + error.message, maxOutputSize),
110
+ exitCode: 1,
111
+ });
112
+ });
113
+ });
114
+ }
23
115
  function runWithOutput(command, args) {
24
116
  return new Promise((resolve, reject) => {
25
117
  const proc = (0, child_process_1.spawn)(command, args, { stdio: "inherit" });
@@ -44,7 +136,6 @@ const api = {
44
136
  disconnect: "localSandbox:disconnect",
45
137
  getPendingCommands: "localSandbox:getPendingCommands",
46
138
  markCommandExecuting: "localSandbox:markCommandExecuting",
47
- submitOutputChunk: "localSandbox:submitOutputChunk",
48
139
  submitResult: "localSandbox:submitResult",
49
140
  },
50
141
  };
@@ -64,24 +155,27 @@ class LocalSandboxClient {
64
155
  containerId;
65
156
  userId;
66
157
  connectionId;
158
+ session;
67
159
  heartbeatInterval;
68
160
  commandSubscription;
69
161
  isShuttingDown = false;
162
+ lastActivityTime;
70
163
  constructor(config) {
71
164
  this.config = config;
72
165
  this.convex = new browser_1.ConvexClient(config.convexUrl);
166
+ this.lastActivityTime = Date.now();
73
167
  }
74
168
  async start() {
75
169
  console.log(chalk.blue("🚀 Starting HackerAI local sandbox..."));
76
170
  if (!this.config.dangerous) {
77
- try {
78
- await execAsync("docker --version");
79
- console.log(chalk.green("✓ Docker is available"));
80
- }
81
- catch {
171
+ const dockerCheck = await runShellCommand("docker --version", {
172
+ timeout: 5000,
173
+ });
174
+ if (dockerCheck.exitCode !== 0) {
82
175
  console.error(chalk.red("❌ Docker not found. Please install Docker or use --dangerous mode."));
83
176
  process.exit(1);
84
177
  }
178
+ console.log(chalk.green("✓ Docker is available"));
85
179
  this.containerId = await this.createContainer();
86
180
  console.log(chalk.green(`✓ Container: ${this.containerId.slice(0, 12)}`));
87
181
  }
@@ -90,9 +184,53 @@ class LocalSandboxClient {
90
184
  }
91
185
  await this.connect();
92
186
  }
187
+ getContainerName() {
188
+ // Generate a predictable container name for --persist mode
189
+ // Sanitize the connection name to be docker-compatible
190
+ const sanitized = this.config.name
191
+ .toLowerCase()
192
+ .replace(/[^a-z0-9-]/g, "-")
193
+ .replace(/-+/g, "-")
194
+ .replace(/^-|-$/g, "");
195
+ return `hackerai-sandbox-${sanitized || "default"}`;
196
+ }
197
+ async findExistingContainer(containerName) {
198
+ // Check if container with this name exists
199
+ const result = await runShellCommand(`docker ps -a --filter "name=^${containerName}$" --format "{{.ID}}|{{.State}}"`, { timeout: 5000 });
200
+ if (result.exitCode !== 0 || !result.stdout.trim()) {
201
+ return null;
202
+ }
203
+ const [id, state] = result.stdout.trim().split("|");
204
+ return { id, running: state === "running" };
205
+ }
93
206
  async createContainer() {
94
207
  const image = this.config.image;
95
208
  const isDefaultImage = image === DEFAULT_IMAGE;
209
+ // In persist mode, try to reuse existing container
210
+ if (this.config.persist) {
211
+ const containerName = this.getContainerName();
212
+ const existing = await this.findExistingContainer(containerName);
213
+ if (existing) {
214
+ if (existing.running) {
215
+ console.log(chalk.green(`✓ Reusing existing container: ${containerName}`));
216
+ return existing.id;
217
+ }
218
+ else {
219
+ // Container exists but stopped - start it
220
+ console.log(chalk.blue(`Starting existing container: ${containerName}`));
221
+ const startResult = await runShellCommand(`docker start ${existing.id}`, { timeout: 30000 });
222
+ if (startResult.exitCode === 0) {
223
+ console.log(chalk.green(`✓ Container started: ${containerName}`));
224
+ return existing.id;
225
+ }
226
+ // If start failed, remove and create fresh
227
+ console.log(chalk.yellow(`⚠️ Failed to start, creating new container...`));
228
+ await runShellCommand(`docker rm -f ${existing.id}`, {
229
+ timeout: 5000,
230
+ });
231
+ }
232
+ }
233
+ }
96
234
  if (this.config.build) {
97
235
  console.log(chalk.red("❌ --build flag is not supported in the npx package."));
98
236
  console.log(chalk.yellow("Use the pre-built image or specify a custom --image."));
@@ -113,8 +251,15 @@ class LocalSandboxClient {
113
251
  }
114
252
  }
115
253
  console.log(chalk.blue("Creating Docker container..."));
116
- const { stdout } = await execAsync(`docker run -d --network host --cap-add=NET_RAW --cap-add=NET_ADMIN ${this.config.image} tail -f /dev/null`);
117
- return stdout.trim();
254
+ // In persist mode, use a named container
255
+ const nameFlag = this.config.persist
256
+ ? `--name ${this.getContainerName()} `
257
+ : "";
258
+ const result = await runShellCommand(`docker run -d ${nameFlag}--network host ${this.config.image} tail -f /dev/null`, { timeout: 60000 });
259
+ if (result.exitCode !== 0) {
260
+ throw new Error(`Failed to create container: ${result.stderr}`);
261
+ }
262
+ return result.stdout.trim();
118
263
  }
119
264
  getOsInfo() {
120
265
  return {
@@ -156,15 +301,16 @@ class LocalSandboxClient {
156
301
  imageName: this.config.dangerous ? undefined : this.config.image,
157
302
  osInfo: this.config.dangerous ? this.getOsInfo() : undefined,
158
303
  }));
159
- if (!result.success) {
304
+ if (!result.success || !result.session) {
160
305
  throw new Error(result.error || "Authentication failed");
161
306
  }
162
307
  this.userId = result.userId;
163
308
  this.connectionId = result.connectionId;
309
+ this.session = result.session;
164
310
  console.log(chalk.green("✓ Authenticated"));
165
311
  console.log(chalk.bold(chalk.green("🎉 Local sandbox is ready!")));
166
312
  console.log(chalk.gray(`Connection: ${this.connectionId}`));
167
- console.log(chalk.gray(`Mode: ${this.getModeDisplay()}`));
313
+ console.log(chalk.gray(`Mode: ${this.getModeDisplay()}${this.config.persist ? " (persistent)" : ""}`));
168
314
  this.startHeartbeat();
169
315
  this.startCommandSubscription();
170
316
  }
@@ -181,15 +327,27 @@ class LocalSandboxClient {
181
327
  }
182
328
  }
183
329
  startCommandSubscription() {
184
- if (!this.connectionId)
330
+ if (!this.connectionId || !this.userId || !this.session)
185
331
  return;
186
- // Use Convex subscription for real-time command updates (much more efficient than polling)
332
+ // Use Convex subscription for real-time command updates
187
333
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
188
334
  this.commandSubscription = this.convex.onUpdate(api.localSandbox.getPendingCommands, {
189
- token: this.config.token,
190
335
  connectionId: this.connectionId,
336
+ // Pass signed session for secure verification without DB lookups
337
+ session: {
338
+ userId: this.userId,
339
+ expiresAt: this.session.expiresAt,
340
+ signature: this.session.signature,
341
+ },
191
342
  }, async (data) => {
192
- if (this.isShuttingDown || !data?.commands)
343
+ if (this.isShuttingDown)
344
+ return;
345
+ // Handle session auth errors - client needs to re-authenticate
346
+ if (data?.authError) {
347
+ console.debug("Session expired or invalid, will refresh on next heartbeat");
348
+ return;
349
+ }
350
+ if (!data?.commands)
193
351
  return;
194
352
  for (const cmd of data.commands) {
195
353
  await this.executeCommand(cmd);
@@ -197,9 +355,11 @@ class LocalSandboxClient {
197
355
  });
198
356
  }
199
357
  async executeCommand(cmd) {
200
- const { command_id, command, env, cwd, timeout } = cmd;
358
+ const { command_id, command, env, cwd, timeout, background } = cmd;
201
359
  const startTime = Date.now();
202
- console.log(chalk.cyan(`▶ Executing: ${command}`));
360
+ // Update activity time to prevent idle timeout
361
+ this.lastActivityTime = Date.now();
362
+ console.log(chalk.cyan(`▶ ${background ? "[BG] " : ""}Executing: ${command}`));
203
363
  try {
204
364
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
205
365
  await this.convex.mutation(api.localSandbox.markCommandExecuting, {
@@ -212,12 +372,48 @@ class LocalSandboxClient {
212
372
  }
213
373
  if (env) {
214
374
  const envString = Object.entries(env)
215
- .map(([k, v]) => `export ${k}="${v}"`)
375
+ .map(([k, v]) => {
376
+ // Escape quotes, backticks, and $ to prevent shell injection
377
+ const escaped = v
378
+ .replace(/\\/g, "\\\\")
379
+ .replace(/"/g, '\\"')
380
+ .replace(/\$/g, "\\$")
381
+ .replace(/`/g, "\\`");
382
+ return `export ${k}="${escaped}"`;
383
+ })
216
384
  .join("; ");
217
385
  fullCommand = `${envString}; ${fullCommand}`;
218
386
  }
219
- // Use spawn for streaming output
220
- const result = await this.executeWithStreaming(fullCommand, command_id, timeout ?? 30000);
387
+ // Handle background mode - spawn and return immediately with PID
388
+ if (background) {
389
+ const pid = await this.spawnBackground(fullCommand);
390
+ const duration = Date.now() - startTime;
391
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
392
+ await this.convex.mutation(api.localSandbox.submitResult, {
393
+ commandId: command_id,
394
+ token: this.config.token,
395
+ stdout: "",
396
+ stderr: "",
397
+ exitCode: 0,
398
+ pid,
399
+ duration,
400
+ });
401
+ console.log(chalk.green(`✓ Background process started with PID: ${pid}`));
402
+ return;
403
+ }
404
+ let result;
405
+ if (this.config.dangerous) {
406
+ result = await runShellCommand(fullCommand, {
407
+ timeout: timeout ?? 30000,
408
+ shell: "/bin/bash",
409
+ });
410
+ }
411
+ else {
412
+ // Use single quotes to prevent host shell from interpreting $(), backticks, etc.
413
+ // This ensures ALL command execution happens inside the Docker container
414
+ const escapedCommand = fullCommand.replace(/'/g, "'\\''");
415
+ result = await runShellCommand(`docker exec ${this.containerId} bash -c '${escapedCommand}'`, { timeout: timeout ?? 30000 });
416
+ }
221
417
  const duration = Date.now() - startTime;
222
418
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
223
419
  await this.convex.mutation(api.localSandbox.submitResult, {
@@ -225,7 +421,7 @@ class LocalSandboxClient {
225
421
  token: this.config.token,
226
422
  stdout: result.stdout,
227
423
  stderr: result.stderr,
228
- exitCode: result.code,
424
+ exitCode: result.exitCode,
229
425
  duration,
230
426
  });
231
427
  console.log(chalk.green(`✓ Command completed in ${duration}ms`));
@@ -238,109 +434,51 @@ class LocalSandboxClient {
238
434
  commandId: command_id,
239
435
  token: this.config.token,
240
436
  stdout: "",
241
- stderr: message,
437
+ stderr: truncateOutput(message),
242
438
  exitCode: 1,
243
439
  duration,
244
440
  });
245
441
  console.log(chalk.red(`✗ Command failed: ${message}`));
246
442
  }
247
443
  }
248
- async executeWithStreaming(fullCommand, commandId, timeout) {
249
- return new Promise((resolve) => {
250
- let stdout = "";
251
- let stderr = "";
252
- let resolved = false;
253
- // Debounce chunk submissions to avoid overwhelming Convex
254
- let pendingStdout = "";
255
- let pendingStderr = "";
256
- let flushTimeout = null;
257
- const flushChunks = async () => {
258
- if (flushTimeout) {
259
- clearTimeout(flushTimeout);
260
- flushTimeout = null;
261
- }
262
- const stdoutChunk = pendingStdout;
263
- const stderrChunk = pendingStderr;
264
- pendingStdout = "";
265
- pendingStderr = "";
266
- if (stdoutChunk || stderrChunk) {
267
- try {
268
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
269
- await this.convex.mutation(api.localSandbox.submitOutputChunk, {
270
- token: this.config.token,
271
- commandId,
272
- stdout: stdoutChunk || undefined,
273
- stderr: stderrChunk || undefined,
274
- });
275
- }
276
- catch {
277
- // Ignore chunk submission errors - final result will have full output
278
- }
279
- }
280
- };
281
- const scheduleFlush = () => {
282
- if (!flushTimeout) {
283
- flushTimeout = setTimeout(flushChunks, 100); // Flush every 100ms
284
- }
285
- };
286
- let proc;
287
- if (this.config.dangerous) {
288
- proc = (0, child_process_1.spawn)("/bin/bash", ["-c", fullCommand]);
289
- }
290
- else {
291
- // Use single quotes to prevent host shell from interpreting $(), backticks, etc.
292
- const escapedCommand = fullCommand.replace(/'/g, "'\\''");
293
- proc = (0, child_process_1.spawn)("docker", [
294
- "exec",
295
- this.containerId,
296
- "bash",
297
- "-c",
298
- escapedCommand,
299
- ]);
300
- }
301
- proc.stdout?.on("data", (data) => {
302
- const chunk = data.toString();
303
- stdout += chunk;
304
- pendingStdout += chunk;
305
- scheduleFlush();
306
- });
307
- proc.stderr?.on("data", (data) => {
308
- const chunk = data.toString();
309
- stderr += chunk;
310
- pendingStderr += chunk;
311
- scheduleFlush();
312
- });
313
- const cleanup = async (code) => {
314
- if (resolved)
315
- return;
316
- resolved = true;
317
- // Flush any remaining chunks
318
- if (flushTimeout) {
319
- clearTimeout(flushTimeout);
320
- }
321
- await flushChunks();
322
- resolve({ stdout, stderr, code });
323
- };
324
- proc.on("close", (code) => {
325
- cleanup(code ?? 0);
326
- });
327
- proc.on("error", (error) => {
328
- stderr += error.message;
329
- cleanup(1);
444
+ async spawnBackground(fullCommand) {
445
+ if (this.config.dangerous) {
446
+ // Spawn directly on host in dangerous mode
447
+ const child = (0, child_process_1.spawn)("/bin/bash", ["-c", fullCommand], {
448
+ detached: true,
449
+ stdio: "ignore",
330
450
  });
331
- // Handle timeout
332
- setTimeout(() => {
333
- if (!resolved) {
334
- proc.kill("SIGTERM");
335
- stderr += "\nCommand timed out";
336
- cleanup(124); // Standard timeout exit code
337
- }
338
- }, timeout);
339
- });
451
+ child.unref();
452
+ return child.pid ?? -1;
453
+ }
454
+ else {
455
+ // For Docker, start the process in background inside container and get its PID
456
+ // Using 'nohup command & echo $!' to get the container process PID
457
+ const escapedCommand = fullCommand.replace(/'/g, "'\\''");
458
+ const result = await runShellCommand(`docker exec ${this.containerId} bash -c 'nohup ${escapedCommand} > /dev/null 2>&1 & echo $!'`, { timeout: 5000 });
459
+ if (result.exitCode === 0 && result.stdout.trim()) {
460
+ const pid = parseInt(result.stdout.trim(), 10);
461
+ return isNaN(pid) ? -1 : pid;
462
+ }
463
+ return -1;
464
+ }
340
465
  }
341
- startHeartbeat() {
342
- this.heartbeatInterval = setInterval(async () => {
466
+ scheduleNextHeartbeat() {
467
+ // Add jitter (±10s) to prevent thundering herd when multiple clients connect
468
+ const baseInterval = 60000; // 1 minute
469
+ const jitter = Math.floor(Math.random() * 20000) - 10000; // -10000 to +10000
470
+ const interval = baseInterval + jitter;
471
+ this.heartbeatInterval = setTimeout(async () => {
343
472
  if (this.connectionId && !this.isShuttingDown) {
473
+ // Check for idle timeout
474
+ const idleTime = Date.now() - this.lastActivityTime;
475
+ if (idleTime >= IDLE_TIMEOUT_MS) {
476
+ const idleMinutes = Math.floor(idleTime / 60000);
477
+ console.log(chalk.yellow(`\n⏰ Idle timeout: No commands received for ${idleMinutes} minutes`));
478
+ console.log(chalk.yellow("Auto-terminating to save resources..."));
479
+ await this.cleanup();
480
+ process.exit(0);
481
+ }
344
482
  try {
345
483
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
346
484
  const result = (await this.convex.mutation(api.localSandbox.heartbeat, {
@@ -353,16 +491,29 @@ class LocalSandboxClient {
353
491
  await this.cleanup();
354
492
  process.exit(1);
355
493
  }
494
+ // Refresh session and restart subscription with new session
495
+ if (result.session) {
496
+ this.session = result.session;
497
+ this.restartCommandSubscription();
498
+ }
356
499
  }
357
- catch {
358
- // Ignore transient heartbeat errors
500
+ catch (error) {
501
+ const message = error instanceof Error ? error.message : String(error);
502
+ console.debug(`Heartbeat error (will retry): ${message}`);
359
503
  }
360
504
  }
361
- }, 30000);
505
+ // Schedule next heartbeat with fresh jitter
506
+ if (!this.isShuttingDown) {
507
+ this.scheduleNextHeartbeat();
508
+ }
509
+ }, interval);
510
+ }
511
+ startHeartbeat() {
512
+ this.scheduleNextHeartbeat();
362
513
  }
363
514
  stopHeartbeat() {
364
515
  if (this.heartbeatInterval) {
365
- clearInterval(this.heartbeatInterval);
516
+ clearTimeout(this.heartbeatInterval);
366
517
  this.heartbeatInterval = undefined;
367
518
  }
368
519
  }
@@ -372,36 +523,58 @@ class LocalSandboxClient {
372
523
  this.commandSubscription = undefined;
373
524
  }
374
525
  }
526
+ restartCommandSubscription() {
527
+ this.stopCommandSubscription();
528
+ this.startCommandSubscription();
529
+ }
375
530
  async cleanup() {
376
531
  console.log(chalk.blue("\n🧹 Cleaning up..."));
377
532
  this.isShuttingDown = true;
378
533
  this.stopHeartbeat();
379
534
  this.stopCommandSubscription();
380
- if (this.connectionId) {
381
- try {
382
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
383
- await this.convex.mutation(api.localSandbox.disconnect, {
384
- token: this.config.token,
385
- connectionId: this.connectionId,
386
- });
387
- console.log(chalk.green("✓ Disconnected"));
535
+ // Set up force-exit timeout (5 seconds)
536
+ const forceExitTimeout = setTimeout(() => {
537
+ console.log(chalk.yellow("⚠️ Force exiting after 5 second timeout..."));
538
+ process.exit(1);
539
+ }, 5000);
540
+ try {
541
+ if (this.connectionId) {
542
+ try {
543
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
544
+ await this.convex.mutation(api.localSandbox.disconnect, {
545
+ token: this.config.token,
546
+ connectionId: this.connectionId,
547
+ });
548
+ console.log(chalk.green("✓ Disconnected"));
549
+ }
550
+ catch (error) {
551
+ const message = error instanceof Error ? error.message : String(error);
552
+ console.warn(chalk.yellow(`⚠️ Failed to disconnect: ${message}`));
553
+ }
388
554
  }
389
- catch {
390
- // Ignore disconnect errors
555
+ if (this.containerId) {
556
+ if (this.config.persist) {
557
+ console.log(chalk.green(`✓ Container preserved: ${this.getContainerName()}`));
558
+ console.log(chalk.gray(" (Use --persist again to reuse it, or docker rm to remove)"));
559
+ }
560
+ else {
561
+ const result = await runShellCommand(`docker rm -f ${this.containerId}`, {
562
+ timeout: 3000,
563
+ });
564
+ if (result.exitCode === 0) {
565
+ console.log(chalk.green("✓ Container removed"));
566
+ }
567
+ else {
568
+ console.error(chalk.red("Error removing container:"), result.stderr);
569
+ }
570
+ }
391
571
  }
572
+ // Close the Convex client to clean up WebSocket connection
573
+ await this.convex.close();
392
574
  }
393
- if (this.containerId) {
394
- try {
395
- await execAsync(`docker rm -f ${this.containerId}`);
396
- console.log(chalk.green("✓ Container removed"));
397
- }
398
- catch (error) {
399
- const message = error instanceof Error ? error.message : String(error);
400
- console.error(chalk.red("Error removing container:"), message);
401
- }
575
+ finally {
576
+ clearTimeout(forceExitTimeout);
402
577
  }
403
- // Close the Convex client to clean up WebSocket connection
404
- await this.convex.close();
405
578
  }
406
579
  }
407
580
  // Parse command-line arguments
@@ -426,6 +599,7 @@ ${chalk.yellow("Options:")}
426
599
  --name NAME Connection name (default: hostname)
427
600
  --image IMAGE Docker image to use (default: pre-built HackerAI sandbox)
428
601
  --dangerous Run commands directly on host OS (no Docker)
602
+ --persist Keep container running on exit and reuse if exists
429
603
  --convex-url URL Override Convex backend URL (for development)
430
604
  --help, -h Show this help message
431
605
 
@@ -436,6 +610,9 @@ ${chalk.yellow("Examples:")}
436
610
  # Use a custom Docker image (e.g., Kali Linux)
437
611
  npx @hackerai/local --token hsb_abc123 --name "Kali" --image kalilinux/kali-rolling
438
612
 
613
+ # Persistent container (faster restarts, preserves installed packages)
614
+ npx @hackerai/local --token hsb_abc123 --name "Dev" --persist
615
+
439
616
  # Dangerous mode (no Docker isolation) - use with caution!
440
617
  npx @hackerai/local --token hsb_abc123 --name "Work PC" --dangerous
441
618
 
@@ -447,6 +624,10 @@ ${chalk.red("⚠️ Security Warning:")}
447
624
  Docker mode provides process isolation but uses --network host for direct
448
625
  network access (required for pentesting tools to scan network services).
449
626
  In DANGEROUS mode, commands run directly on your OS without any isolation.
627
+
628
+ ${chalk.cyan("Auto-termination:")}
629
+ The client automatically terminates after 1 hour of inactivity (no commands
630
+ executed) to save system resources.
450
631
  `);
451
632
  process.exit(0);
452
633
  }
@@ -457,6 +638,7 @@ const config = {
457
638
  image: getArg("--image") || DEFAULT_IMAGE,
458
639
  dangerous: hasFlag("--dangerous"),
459
640
  build: hasFlag("--build"),
641
+ persist: hasFlag("--persist"),
460
642
  };
461
643
  if (!config.token) {
462
644
  console.error(chalk.red("❌ No authentication token provided"));
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hackerai/local",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "HackerAI Local Sandbox Client - Execute commands on your local machine",
5
5
  "bin": {
6
6
  "hackerai-local": "./dist/index.js"