@hackerai/local 0.5.2 → 0.7.0

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.
@@ -3,10 +3,7 @@
3
3
  *
4
4
  * These tests verify:
5
5
  * - Output truncation (25% head + 75% tail strategy)
6
- * - Docker capabilities for penetration testing tools
7
- * - Docker run command building
8
- * - Sandbox mode detection
9
- * - Shell detection parsing
6
+ * - Platform shell detection
10
7
  */
11
8
  export {};
12
9
  //# sourceMappingURL=utils.test.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/utils.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
1
+ {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/utils.test.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -4,10 +4,7 @@
4
4
  *
5
5
  * These tests verify:
6
6
  * - Output truncation (25% head + 75% tail strategy)
7
- * - Docker capabilities for penetration testing tools
8
- * - Docker run command building
9
- * - Sandbox mode detection
10
- * - Shell detection parsing
7
+ * - Platform shell detection
11
8
  */
12
9
  Object.defineProperty(exports, "__esModule", { value: true });
13
10
  const utils_1 = require("../utils");
@@ -47,95 +44,6 @@ describe("Output Truncation", () => {
47
44
  expect(result).toContain(utils_1.TRUNCATION_MARKER);
48
45
  });
49
46
  });
50
- describe("Docker Capabilities", () => {
51
- it("should include NET_RAW for ping, nmap, raw sockets", () => {
52
- expect(utils_1.DOCKER_CAPABILITIES).toContain("NET_RAW");
53
- });
54
- it("should include NET_ADMIN for network interface tools", () => {
55
- expect(utils_1.DOCKER_CAPABILITIES).toContain("NET_ADMIN");
56
- });
57
- it("should include SYS_PTRACE for debugging tools", () => {
58
- expect(utils_1.DOCKER_CAPABILITIES).toContain("SYS_PTRACE");
59
- });
60
- it("should build capability flags correctly", () => {
61
- const flags = (0, utils_1.buildDockerCapabilityFlags)();
62
- expect(flags).toBe("--cap-add=NET_RAW --cap-add=NET_ADMIN --cap-add=SYS_PTRACE");
63
- });
64
- });
65
- describe("Docker Run Command", () => {
66
- it("should build basic docker run command with capabilities", () => {
67
- const cmd = (0, utils_1.buildDockerRunCommand)({ image: "hackerai/sandbox:latest" });
68
- expect(cmd).toContain("docker run -d");
69
- expect(cmd).toContain("--cap-add=NET_RAW");
70
- expect(cmd).toContain("--cap-add=NET_ADMIN");
71
- expect(cmd).toContain("--cap-add=SYS_PTRACE");
72
- expect(cmd).toContain("--network host");
73
- expect(cmd).toContain("hackerai/sandbox:latest");
74
- expect(cmd).toContain("tail -f /dev/null");
75
- });
76
- it("should include container name when provided", () => {
77
- const cmd = (0, utils_1.buildDockerRunCommand)({
78
- image: "hackerai/sandbox:latest",
79
- containerName: "my-container",
80
- });
81
- expect(cmd).toContain("--name my-container");
82
- });
83
- it("should not include container name when not provided", () => {
84
- const cmd = (0, utils_1.buildDockerRunCommand)({ image: "hackerai/sandbox:latest" });
85
- expect(cmd).not.toContain("--name");
86
- });
87
- it("should exclude capabilities when disabled", () => {
88
- const cmd = (0, utils_1.buildDockerRunCommand)({
89
- image: "alpine",
90
- capabilities: false,
91
- });
92
- expect(cmd).not.toContain("--cap-add");
93
- });
94
- });
95
- describe("Sandbox Mode Detection", () => {
96
- it("should return 'dangerous' when dangerous flag is set", () => {
97
- const mode = (0, utils_1.getSandboxMode)({
98
- dangerous: true,
99
- });
100
- expect(mode).toBe("dangerous");
101
- });
102
- it("should return 'docker' when dangerous flag is not set", () => {
103
- const mode = (0, utils_1.getSandboxMode)({
104
- dangerous: false,
105
- });
106
- expect(mode).toBe("docker");
107
- });
108
- it("should return 'docker' when dangerous flag is undefined", () => {
109
- const mode = (0, utils_1.getSandboxMode)({});
110
- expect(mode).toBe("docker");
111
- });
112
- });
113
- describe("Shell Detection Parsing", () => {
114
- it("should return bash when found", () => {
115
- const shell = (0, utils_1.parseShellDetectionOutput)("/bin/bash");
116
- expect(shell).toBe("/bin/bash");
117
- });
118
- it("should return sh when bash not found", () => {
119
- const shell = (0, utils_1.parseShellDetectionOutput)("/bin/sh");
120
- expect(shell).toBe("/bin/sh");
121
- });
122
- it("should take first line when multiple results", () => {
123
- const shell = (0, utils_1.parseShellDetectionOutput)("/bin/bash\n/bin/sh");
124
- expect(shell).toBe("/bin/bash");
125
- });
126
- it("should return /bin/sh for empty output", () => {
127
- const shell = (0, utils_1.parseShellDetectionOutput)("");
128
- expect(shell).toBe("/bin/sh");
129
- });
130
- it("should return /bin/sh for whitespace-only output", () => {
131
- const shell = (0, utils_1.parseShellDetectionOutput)(" \n ");
132
- expect(shell).toBe("/bin/sh");
133
- });
134
- it("should handle Alpine busybox ash path", () => {
135
- const shell = (0, utils_1.parseShellDetectionOutput)("/bin/ash");
136
- expect(shell).toBe("/bin/ash");
137
- });
138
- });
139
47
  describe("Platform Shell Detection", () => {
140
48
  it("should return cmd.exe for Windows", () => {
141
49
  const result = (0, utils_1.getDefaultShell)("win32");
@@ -1 +1 @@
1
- {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../src/__tests__/utils.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../src/__tests__/utils.test.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,12 +2,13 @@
2
2
  /**
3
3
  * HackerAI Local Sandbox Client
4
4
  *
5
- * Connects to HackerAI backend via Convex and executes commands
6
- * on the local machine (either in Docker or directly on the host OS).
5
+ * Connects to HackerAI backend via Convex for connection lifecycle
6
+ * and uses Centrifugo for real-time command relay and streaming output.
7
+ *
8
+ * Runs commands directly on the host OS (no Docker isolation).
7
9
  *
8
10
  * Usage:
9
- * npx @hackerai/local --token TOKEN --name "My Laptop"
10
- * npx @hackerai/local --token TOKEN --name "Work PC" --dangerous
11
+ * npx @hackerai/local --token TOKEN --name "My Machine"
11
12
  */
12
13
  export {};
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;GASG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG"}
package/dist/index.js CHANGED
@@ -3,24 +3,28 @@
3
3
  /**
4
4
  * HackerAI Local Sandbox Client
5
5
  *
6
- * Connects to HackerAI backend via Convex and executes commands
7
- * on the local machine (either in Docker or directly on the host OS).
6
+ * Connects to HackerAI backend via Convex for connection lifecycle
7
+ * and uses Centrifugo for real-time command relay and streaming output.
8
+ *
9
+ * Runs commands directly on the host OS (no Docker isolation).
8
10
  *
9
11
  * Usage:
10
- * npx @hackerai/local --token TOKEN --name "My Laptop"
11
- * npx @hackerai/local --token TOKEN --name "Work PC" --dangerous
12
+ * npx @hackerai/local --token TOKEN --name "My Machine"
12
13
  */
13
14
  var __importDefault = (this && this.__importDefault) || function (mod) {
14
15
  return (mod && mod.__esModule) ? mod : { "default": mod };
15
16
  };
16
17
  Object.defineProperty(exports, "__esModule", { value: true });
17
18
  const browser_1 = require("convex/browser");
19
+ const centrifuge_1 = require("centrifuge");
18
20
  const child_process_1 = require("child_process");
19
21
  const os_1 = __importDefault(require("os"));
20
22
  const utils_1 = require("./utils");
21
23
  const DEFAULT_SHELL = (0, utils_1.getDefaultShell)(os_1.default.platform());
22
24
  // Idle timeout: auto-terminate after 1 hour without commands
23
25
  const IDLE_TIMEOUT_MS = 60 * 60 * 1000; // 1 hour
26
+ // Idle check interval: check every 5 minutes
27
+ const IDLE_CHECK_INTERVAL_MS = 5 * 60 * 1000;
24
28
  /**
25
29
  * Runs a shell command using spawn for better output control.
26
30
  * Collects stdout/stderr and handles timeouts gracefully.
@@ -64,7 +68,7 @@ function runShellCommand(command, options = {}) {
64
68
  proc.on("close", (code) => {
65
69
  if (timeoutId)
66
70
  clearTimeout(timeoutId);
67
- // Final truncation to fit Convex limits
71
+ // Final truncation
68
72
  const truncatedStdout = (0, utils_1.truncateOutput)(stdout, maxOutputSize);
69
73
  const truncatedStderr = (0, utils_1.truncateOutput)(stderr, maxOutputSize);
70
74
  if (killed) {
@@ -93,31 +97,14 @@ function runShellCommand(command, options = {}) {
93
97
  });
94
98
  });
95
99
  }
96
- function runWithOutput(command, args) {
97
- return new Promise((resolve, reject) => {
98
- const proc = (0, child_process_1.spawn)(command, args, { stdio: "inherit" });
99
- proc.on("close", (code) => {
100
- if (code === 0)
101
- resolve();
102
- else
103
- reject(new Error(`Process exited with code ${code}`));
104
- });
105
- proc.on("error", reject);
106
- });
107
- }
108
100
  // Production Convex URL - hardcoded for the published package
109
101
  const PRODUCTION_CONVEX_URL = "https://convex.haiusercontent.com";
110
- // Default pre-built image with all pentesting tools
111
- const DEFAULT_IMAGE = "hackerai/sandbox";
112
102
  // Convex function references (string paths work at runtime)
113
103
  const api = {
114
104
  localSandbox: {
115
105
  connect: "localSandbox:connect",
116
- heartbeat: "localSandbox:heartbeat",
117
106
  disconnect: "localSandbox:disconnect",
118
- getPendingCommands: "localSandbox:getPendingCommands",
119
- markCommandExecuting: "localSandbox:markCommandExecuting",
120
- submitResult: "localSandbox:submitResult",
107
+ refreshCentrifugoToken: "localSandbox:refreshCentrifugoToken",
121
108
  },
122
109
  };
123
110
  // ANSI color codes for terminal output
@@ -132,115 +119,24 @@ const chalk = {
132
119
  };
133
120
  class LocalSandboxClient {
134
121
  config;
135
- convex;
136
- containerId;
137
- containerShell = "/bin/bash"; // Detected shell, defaults to bash
122
+ convexHttp;
123
+ centrifuge;
124
+ subscription;
138
125
  userId;
139
126
  connectionId;
140
- session;
141
- heartbeatInterval;
142
- commandSubscription;
143
127
  isShuttingDown = false;
144
128
  lastActivityTime;
129
+ idleCheckInterval;
145
130
  constructor(config) {
146
131
  this.config = config;
147
- this.convex = new browser_1.ConvexClient(config.convexUrl);
132
+ this.convexHttp = new browser_1.ConvexHttpClient(config.convexUrl);
148
133
  this.lastActivityTime = Date.now();
149
134
  }
150
135
  async start() {
151
136
  console.log(chalk.blue("🚀 Starting HackerAI local sandbox..."));
152
- if (!this.config.dangerous) {
153
- const dockerCheck = await runShellCommand("docker --version", {
154
- timeout: 5000,
155
- });
156
- if (dockerCheck.exitCode !== 0) {
157
- console.error(chalk.red("❌ Docker not found. Please install Docker or use --dangerous mode."));
158
- process.exit(1);
159
- }
160
- console.log(chalk.green("✓ Docker is available"));
161
- this.containerId = await this.createContainer();
162
- console.log(chalk.green(`✓ Container: ${this.containerId.slice(0, 12)}`));
163
- // Detect available shell (bash or sh fallback for Alpine/minimal images)
164
- await this.detectContainerShell();
165
- }
166
- else {
167
- console.log(chalk.yellow("⚠️ DANGEROUS MODE - Commands will run directly on your OS!"));
168
- }
137
+ console.log(chalk.yellow("⚠️ Commands run directly on your OS without any isolation."));
169
138
  await this.connect();
170
139
  }
171
- getContainerName() {
172
- // Generate a predictable container name for --persist mode
173
- // Sanitize the connection name to be docker-compatible
174
- const sanitized = this.config.name
175
- .toLowerCase()
176
- .replace(/[^a-z0-9-]/g, "-")
177
- .replace(/-+/g, "-")
178
- .replace(/^-|-$/g, "");
179
- return `hackerai-sandbox-${sanitized || "default"}`;
180
- }
181
- async findExistingContainer(containerName) {
182
- // Check if container with this name exists
183
- const result = await runShellCommand(`docker ps -a --filter "name=^${containerName}$" --format "{{.ID}}|{{.State}}"`, { timeout: 5000 });
184
- if (result.exitCode !== 0 || !result.stdout.trim()) {
185
- return null;
186
- }
187
- const [id, state] = result.stdout.trim().split("|");
188
- return { id, running: state === "running" };
189
- }
190
- async createContainer() {
191
- // In persist mode, try to reuse existing container
192
- if (this.config.persist) {
193
- const containerName = this.getContainerName();
194
- const existing = await this.findExistingContainer(containerName);
195
- if (existing) {
196
- if (existing.running) {
197
- console.log(chalk.green(`✓ Reusing existing container: ${containerName}`));
198
- return existing.id;
199
- }
200
- else {
201
- // Container exists but stopped - start it
202
- console.log(chalk.blue(`Starting existing container: ${containerName}`));
203
- const startResult = await runShellCommand(`docker start ${existing.id}`, { timeout: 30000 });
204
- if (startResult.exitCode === 0) {
205
- console.log(chalk.green(`✓ Container started: ${containerName}`));
206
- return existing.id;
207
- }
208
- // If start failed, remove and create fresh
209
- console.log(chalk.yellow(`⚠️ Failed to start, creating new container...`));
210
- await runShellCommand(`docker rm -f ${existing.id}`, {
211
- timeout: 5000,
212
- });
213
- }
214
- }
215
- }
216
- if (this.config.build) {
217
- console.log(chalk.red("❌ --build flag is not supported in the npx package."));
218
- process.exit(1);
219
- }
220
- console.log(chalk.blue(`Pulling pre-built image: ${DEFAULT_IMAGE}`));
221
- console.log(chalk.gray("(First run may take a few minutes to download the image)"));
222
- console.log("");
223
- try {
224
- await runWithOutput("docker", ["pull", DEFAULT_IMAGE]);
225
- console.log(chalk.green("✓ Image ready"));
226
- }
227
- catch (error) {
228
- const message = error instanceof Error ? error.message : String(error);
229
- console.error(chalk.red("❌ Failed to pull image:"), message);
230
- process.exit(1);
231
- }
232
- console.log(chalk.blue("Creating Docker container..."));
233
- // Build docker run command with capabilities for penetration testing tools
234
- const dockerCommand = (0, utils_1.buildDockerRunCommand)({
235
- image: DEFAULT_IMAGE,
236
- containerName: this.config.persist ? this.getContainerName() : undefined,
237
- });
238
- const result = await runShellCommand(dockerCommand, { timeout: 60000 });
239
- if (result.exitCode !== 0) {
240
- throw new Error(`Failed to create container: ${result.stderr}`);
241
- }
242
- return result.stdout.trim();
243
- }
244
140
  getOsInfo() {
245
141
  return {
246
142
  platform: os_1.default.platform(),
@@ -249,62 +145,27 @@ class LocalSandboxClient {
249
145
  hostname: os_1.default.hostname(),
250
146
  };
251
147
  }
252
- getMode() {
253
- return (0, utils_1.getSandboxMode)({
254
- dangerous: this.config.dangerous,
255
- });
256
- }
257
- getModeDisplay() {
258
- const mode = this.getMode();
259
- if (mode === "dangerous") {
260
- return "DANGEROUS";
261
- }
262
- return "Docker";
263
- }
264
- /**
265
- * Detects which shell is available in the container.
266
- * Tries bash first, falls back to sh if bash is not available.
267
- * This handles Alpine/BusyBox images that don't have bash installed.
268
- */
269
- async detectContainerShell() {
270
- if (!this.containerId)
271
- return;
272
- // Try to detect available shell using 'command -v' (POSIX compliant)
273
- // We use 'sh' to run the detection since it's guaranteed to exist
274
- const result = await runShellCommand(`docker exec ${this.containerId} sh -c 'command -v bash || command -v sh || echo /bin/sh'`, { timeout: 5000 });
275
- if (result.exitCode === 0) {
276
- this.containerShell = (0, utils_1.parseShellDetectionOutput)(result.stdout);
277
- console.log(chalk.green(`✓ Shell: ${this.containerShell}`));
278
- }
279
- else {
280
- // Fallback to /bin/sh if detection failed
281
- this.containerShell = "/bin/sh";
282
- console.log(chalk.yellow(`⚠️ Shell detection failed, using ${this.containerShell}`));
283
- }
284
- }
285
148
  async connect() {
286
149
  console.log(chalk.blue("Connecting to HackerAI..."));
287
150
  try {
288
- const result = (await this.convex.mutation(api.localSandbox.connect, {
151
+ const result = (await this.convexHttp.mutation(api.localSandbox.connect, {
289
152
  token: this.config.token,
290
153
  connectionName: this.config.name,
291
- containerId: this.containerId,
292
154
  clientVersion: "1.0.0",
293
- mode: this.getMode(),
294
- osInfo: this.config.dangerous ? this.getOsInfo() : undefined,
155
+ osInfo: this.getOsInfo(),
295
156
  }));
296
- if (!result.success || !result.session) {
157
+ if (!result.success ||
158
+ !result.centrifugoToken ||
159
+ !result.centrifugoWsUrl) {
297
160
  throw new Error(result.error || "Authentication failed");
298
161
  }
299
162
  this.userId = result.userId;
300
163
  this.connectionId = result.connectionId;
301
- this.session = result.session;
302
164
  console.log(chalk.green("✓ Authenticated"));
303
165
  console.log(chalk.bold(chalk.green("🎉 Local sandbox is ready!")));
304
166
  console.log(chalk.gray(`Connection: ${this.connectionId}`));
305
- console.log(chalk.gray(`Mode: ${this.getModeDisplay()}${this.config.persist ? " (persistent)" : ""}`));
306
- this.startHeartbeat();
307
- this.startCommandSubscription();
167
+ this.setupCentrifugo(result.centrifugoWsUrl, result.centrifugoToken);
168
+ this.startIdleCheck();
308
169
  }
309
170
  catch (error) {
310
171
  const err = error;
@@ -318,52 +179,89 @@ class LocalSandboxClient {
318
179
  process.exit(1);
319
180
  }
320
181
  }
321
- startCommandSubscription() {
322
- if (!this.connectionId || !this.userId || !this.session)
323
- return;
324
- // Use Convex subscription for real-time command updates
325
- this.commandSubscription = this.convex.onUpdate(api.localSandbox.getPendingCommands, {
326
- connectionId: this.connectionId,
327
- // Pass signed session for secure verification without DB lookups
328
- session: {
329
- userId: this.userId,
330
- expiresAt: this.session.expiresAt,
331
- signature: this.session.signature,
182
+ setupCentrifugo(wsUrl, initialToken) {
183
+ this.centrifuge = new centrifuge_1.Centrifuge(wsUrl, {
184
+ token: initialToken,
185
+ getToken: async () => {
186
+ if (!this.connectionId) {
187
+ throw new Error("Cannot refresh token: connectionId is null");
188
+ }
189
+ try {
190
+ const result = (await this.convexHttp.mutation(api.localSandbox.refreshCentrifugoToken, {
191
+ token: this.config.token,
192
+ connectionId: this.connectionId,
193
+ }));
194
+ return result.centrifugoToken;
195
+ }
196
+ catch (error) {
197
+ console.error(chalk.red("Failed to refresh Centrifugo token:"), error);
198
+ throw error;
199
+ }
332
200
  },
333
- }, async (data) => {
201
+ });
202
+ const channel = `sandbox:user#${this.userId}`;
203
+ this.subscription = this.centrifuge.newSubscription(channel);
204
+ this.subscription.on("publication", (ctx) => {
334
205
  if (this.isShuttingDown)
335
206
  return;
336
- // Handle session auth errors - client needs to re-authenticate
337
- if (data?.authError) {
338
- console.debug("Session expired or invalid, will refresh on next heartbeat");
339
- return;
207
+ const message = ctx.data;
208
+ if (message.type === "command") {
209
+ if (message.targetConnectionId &&
210
+ message.targetConnectionId !== this.connectionId) {
211
+ return;
212
+ }
213
+ this.lastActivityTime = Date.now();
214
+ this.handleCommand(message).catch((error) => {
215
+ const errorMsg = error instanceof Error ? error.message : JSON.stringify(error);
216
+ console.error(chalk.red(`Error handling command: ${errorMsg}`));
217
+ });
340
218
  }
341
- if (!data?.commands)
342
- return;
343
- for (const cmd of data.commands) {
344
- await this.executeCommand(cmd);
219
+ });
220
+ this.centrifuge.on("disconnected", (ctx) => {
221
+ if (!this.isShuttingDown) {
222
+ const isConnectionLimit = ctx.reason?.includes("connection limit") || ctx.code === 4503;
223
+ if (isConnectionLimit) {
224
+ console.error(chalk.red("❌ Connection limit reached. The server has too many active connections."));
225
+ console.error(chalk.yellow("Please try again later or contact support."));
226
+ this.cleanup().then(() => process.exit(1));
227
+ }
228
+ else {
229
+ console.log(chalk.yellow(`⚠️ Disconnected from Centrifugo: ${ctx.reason}`));
230
+ }
345
231
  }
346
232
  });
233
+ this.centrifuge.on("connected", () => {
234
+ console.log(chalk.green("✓ Connected to command relay"));
235
+ });
236
+ this.subscription.subscribe();
237
+ this.centrifuge.connect();
347
238
  }
348
- async executeCommand(cmd) {
349
- const { command_id, command, env, cwd, timeout, background, display_name } = cmd;
350
- const startTime = Date.now();
351
- // Update activity time to prevent idle timeout
352
- this.lastActivityTime = Date.now();
239
+ async publishToChannel(data) {
240
+ if (!this.subscription) {
241
+ console.error(chalk.red("Cannot publish: no active subscription"));
242
+ return;
243
+ }
244
+ try {
245
+ await this.subscription.publish(data);
246
+ }
247
+ catch (err) {
248
+ const msg = err instanceof Error ? err.message : JSON.stringify(err);
249
+ console.error(chalk.red(`Publish failed: ${msg}`));
250
+ throw err;
251
+ }
252
+ }
253
+ async handleCommand(msg) {
254
+ const { commandId, command, env, cwd, timeout, background, displayName } = msg;
353
255
  // Determine what to show in console:
354
- // - display_name === "" (empty string): hide command entirely
355
- // - display_name === "something": show that instead of command
356
- // - display_name === undefined: show actual command
357
- const shouldShow = display_name !== "";
358
- const displayText = display_name || command;
256
+ // - displayName === "" (empty string): hide command entirely
257
+ // - displayName === "something": show that instead of command
258
+ // - displayName === undefined: show actual command
259
+ const shouldShow = displayName !== "";
260
+ const displayText = displayName || command;
359
261
  if (shouldShow) {
360
262
  console.log(chalk.cyan(`▶ ${background ? "[BG] " : ""}${displayText}`));
361
263
  }
362
264
  try {
363
- await this.convex.mutation(api.localSandbox.markCommandExecuting, {
364
- token: this.config.token,
365
- commandId: command_id,
366
- });
367
265
  let fullCommand = command;
368
266
  if (cwd && cwd.trim() !== "") {
369
267
  fullCommand = `cd "${cwd}" 2>/dev/null && ${fullCommand}`;
@@ -371,7 +269,6 @@ class LocalSandboxClient {
371
269
  if (env) {
372
270
  const envString = Object.entries(env)
373
271
  .map(([k, v]) => {
374
- // Escape quotes, backticks, and $ to prevent shell injection
375
272
  const escaped = v
376
273
  .replace(/\\/g, "\\\\")
377
274
  .replace(/"/g, '\\"')
@@ -382,170 +279,169 @@ class LocalSandboxClient {
382
279
  .join("; ");
383
280
  fullCommand = `${envString}; ${fullCommand}`;
384
281
  }
385
- // Handle background mode - spawn and return immediately with PID
386
282
  if (background) {
387
283
  const pid = await this.spawnBackground(fullCommand);
388
- const duration = Date.now() - startTime;
389
- await this.convex.mutation(api.localSandbox.submitResult, {
390
- commandId: command_id,
391
- token: this.config.token,
392
- stdout: "",
393
- stderr: "",
284
+ await this.publishToChannel({
285
+ type: "exit",
286
+ commandId,
394
287
  exitCode: 0,
395
288
  pid,
396
- duration,
397
289
  });
398
290
  console.log(chalk.green(`✓ Background process started with PID: ${pid}`));
399
291
  return;
400
292
  }
401
- let result;
402
- if (this.config.dangerous) {
403
- result = await runShellCommand(fullCommand, {
404
- timeout: timeout ?? 30000,
405
- // Use platform-appropriate shell (powershell on Windows, bash on Unix)
406
- });
407
- }
408
- else {
409
- // Use single quotes to prevent host shell from interpreting $(), backticks, etc.
410
- // This ensures ALL command execution happens inside the Docker container
411
- const escapedCommand = fullCommand.replace(/'/g, "'\\''");
412
- // Extract shell name (e.g., "bash" from "/bin/bash" or "/usr/bin/bash")
413
- const shellName = this.containerShell.split("/").pop() || "sh";
414
- result = await runShellCommand(`docker exec ${this.containerId} ${shellName} -c '${escapedCommand}'`, { timeout: timeout ?? 30000 });
415
- }
416
- const duration = Date.now() - startTime;
417
- await this.convex.mutation(api.localSandbox.submitResult, {
418
- commandId: command_id,
419
- token: this.config.token,
420
- stdout: result.stdout,
421
- stderr: result.stderr,
422
- exitCode: result.exitCode,
423
- duration,
424
- });
425
- if (shouldShow) {
426
- if (result.exitCode === 0) {
427
- console.log(chalk.green(`✓ ${displayText} ${chalk.gray(`(${duration}ms)`)}`));
428
- }
429
- else {
430
- console.log(chalk.red(`✗ ${displayText} ${chalk.gray(`(exit ${result.exitCode}, ${duration}ms)`)}`));
431
- if (result.stderr.trim()) {
432
- // Indent each line of stderr for readability
433
- const indented = result.stderr
434
- .trim()
435
- .split("\n")
436
- .map((l) => ` ${l}`)
437
- .join("\n");
438
- console.log(chalk.red(indented));
439
- }
440
- }
441
- }
293
+ await this.streamCommand(commandId, fullCommand, timeout, shouldShow, displayText);
442
294
  }
443
295
  catch (error) {
444
- const duration = Date.now() - startTime;
445
296
  const message = error instanceof Error ? error.message : String(error);
446
- await this.convex.mutation(api.localSandbox.submitResult, {
447
- commandId: command_id,
448
- token: this.config.token,
449
- stdout: "",
450
- stderr: (0, utils_1.truncateOutput)(message),
451
- exitCode: 1,
452
- duration,
297
+ await this.publishToChannel({
298
+ type: "error",
299
+ commandId,
300
+ message: (0, utils_1.truncateOutput)(message),
453
301
  });
454
- console.log(chalk.red(`✗ ${displayText} ${chalk.gray(`(${duration}ms)`)}: ${message}`));
302
+ console.log(chalk.red(`✗ ${displayText}: ${message}`));
455
303
  }
456
304
  }
457
- async spawnBackground(fullCommand) {
458
- if (this.config.dangerous) {
459
- // Spawn directly on host in dangerous mode using platform-appropriate shell
460
- const child = (0, child_process_1.spawn)(DEFAULT_SHELL.shell, [DEFAULT_SHELL.shellFlag, fullCommand], {
461
- detached: os_1.default.platform() !== "win32", // detached doesn't work the same on Windows
462
- stdio: "ignore",
305
+ async streamCommand(commandId, fullCommand, timeout, shouldShow, displayText) {
306
+ const startTime = Date.now();
307
+ const commandTimeout = timeout ?? 30000;
308
+ return new Promise((resolve) => {
309
+ let killed = false;
310
+ let timeoutId;
311
+ const proc = (0, child_process_1.spawn)(DEFAULT_SHELL.shell, [DEFAULT_SHELL.shellFlag, fullCommand], {
312
+ stdio: ["ignore", "pipe", "pipe"],
463
313
  });
464
- child.unref();
465
- return child.pid ?? -1;
466
- }
467
- else {
468
- // For Docker, start the process in background inside container and get its PID
469
- // Using 'nohup command & echo $!' to get the container process PID
470
- const escapedCommand = fullCommand.replace(/'/g, "'\\''");
471
- // Extract shell name (e.g., "bash" from "/bin/bash" or "/usr/bin/bash")
472
- const shellName = this.containerShell.split("/").pop() || "sh";
473
- const result = await runShellCommand(`docker exec ${this.containerId} ${shellName} -c 'nohup ${escapedCommand} > /dev/null 2>&1 & echo $!'`, { timeout: 5000 });
474
- if (result.exitCode === 0 && result.stdout.trim()) {
475
- const pid = parseInt(result.stdout.trim(), 10);
476
- return isNaN(pid) ? -1 : pid;
314
+ if (commandTimeout > 0) {
315
+ timeoutId = setTimeout(() => {
316
+ killed = true;
317
+ proc.kill("SIGTERM");
318
+ setTimeout(() => {
319
+ if (!proc.killed) {
320
+ proc.kill("SIGKILL");
321
+ }
322
+ }, 2000);
323
+ }, commandTimeout);
477
324
  }
478
- return -1;
479
- }
480
- }
481
- scheduleNextHeartbeat() {
482
- // Add jitter (±10s) to prevent thundering herd when multiple clients connect
483
- const baseInterval = 60000; // 1 minute
484
- const jitter = Math.floor(Math.random() * 20000) - 10000; // -10000 to +10000
485
- const interval = baseInterval + jitter;
486
- this.heartbeatInterval = setTimeout(async () => {
487
- if (this.connectionId && !this.isShuttingDown) {
488
- // Check for idle timeout
489
- const idleTime = Date.now() - this.lastActivityTime;
490
- if (idleTime >= IDLE_TIMEOUT_MS) {
491
- const idleMinutes = Math.floor(idleTime / 60000);
492
- console.log(chalk.yellow(`\n⏰ Idle timeout: No commands received for ${idleMinutes} minutes`));
493
- console.log(chalk.yellow("Auto-terminating to save resources..."));
494
- await this.cleanup();
495
- process.exit(0);
325
+ let accumulatedStderr = "";
326
+ proc.stdout?.on("data", (data) => {
327
+ const chunk = data.toString();
328
+ this.publishToChannel({
329
+ type: "stdout",
330
+ commandId,
331
+ data: chunk,
332
+ }).catch((err) => {
333
+ console.error(chalk.red(`[ERROR] Failed to publish stdout: ${err instanceof Error ? err.message : String(err)}`));
334
+ });
335
+ });
336
+ proc.stderr?.on("data", (data) => {
337
+ const chunk = data.toString();
338
+ accumulatedStderr += chunk;
339
+ this.publishToChannel({
340
+ type: "stderr",
341
+ commandId,
342
+ data: chunk,
343
+ }).catch((err) => {
344
+ console.error(chalk.red(`[ERROR] Failed to publish stderr: ${err instanceof Error ? err.message : String(err)}`));
345
+ });
346
+ });
347
+ proc.on("close", (code) => {
348
+ if (timeoutId)
349
+ clearTimeout(timeoutId);
350
+ const duration = Date.now() - startTime;
351
+ const exitCode = killed ? 124 : (code ?? 1);
352
+ if (killed) {
353
+ this.publishToChannel({
354
+ type: "stderr",
355
+ commandId,
356
+ data: "\n[Command timed out and was terminated]",
357
+ }).catch((err) => {
358
+ console.error(chalk.red(`[ERROR] Failed to publish timeout stderr: ${err instanceof Error ? err.message : String(err)}`));
359
+ });
496
360
  }
497
- try {
498
- const result = (await this.convex.mutation(api.localSandbox.heartbeat, {
499
- token: this.config.token,
500
- connectionId: this.connectionId,
501
- }));
502
- if (!result.success) {
503
- console.log(chalk.red("\n❌ Connection invalidated (token may have been regenerated)"));
504
- console.log(chalk.yellow("Shutting down..."));
505
- await this.cleanup();
506
- process.exit(1);
361
+ this.publishToChannel({
362
+ type: "exit",
363
+ commandId,
364
+ exitCode,
365
+ }).catch((err) => {
366
+ console.error(chalk.red(`[CRITICAL] Failed to publish EXIT message: ${err instanceof Error ? err.message : String(err)}`));
367
+ });
368
+ if (shouldShow) {
369
+ if (exitCode === 0) {
370
+ console.log(chalk.green(`✓ ${displayText} ${chalk.gray(`(${duration}ms)`)}`));
507
371
  }
508
- // Refresh session and restart subscription with new session
509
- if (result.session) {
510
- this.session = result.session;
511
- this.restartCommandSubscription();
372
+ else {
373
+ console.log(chalk.red(`✗ ${displayText} ${chalk.gray(`(exit ${exitCode}, ${duration}ms)`)}`));
374
+ if (accumulatedStderr.trim()) {
375
+ const indented = accumulatedStderr
376
+ .trim()
377
+ .split("\n")
378
+ .map((l) => ` ${l}`)
379
+ .join("\n");
380
+ console.log(chalk.red(indented));
381
+ }
512
382
  }
513
383
  }
514
- catch (error) {
515
- const message = error instanceof Error ? error.message : String(error);
516
- console.debug(`Heartbeat error (will retry): ${message}`);
517
- }
518
- }
519
- // Schedule next heartbeat with fresh jitter
520
- if (!this.isShuttingDown) {
521
- this.scheduleNextHeartbeat();
522
- }
523
- }, interval);
384
+ resolve();
385
+ });
386
+ proc.on("error", (error) => {
387
+ if (timeoutId)
388
+ clearTimeout(timeoutId);
389
+ this.publishToChannel({
390
+ type: "error",
391
+ commandId,
392
+ message: error.message,
393
+ }).catch((err) => {
394
+ console.error(chalk.red(`[ERROR] Failed to publish error message: ${err instanceof Error ? err.message : String(err)}`));
395
+ });
396
+ this.publishToChannel({
397
+ type: "exit",
398
+ commandId,
399
+ exitCode: 1,
400
+ }).catch((err) => {
401
+ console.error(chalk.red(`[CRITICAL] Failed to publish EXIT after process error: ${err instanceof Error ? err.message : String(err)}`));
402
+ });
403
+ resolve();
404
+ });
405
+ });
524
406
  }
525
- startHeartbeat() {
526
- this.scheduleNextHeartbeat();
407
+ async spawnBackground(fullCommand) {
408
+ const child = (0, child_process_1.spawn)(DEFAULT_SHELL.shell, [DEFAULT_SHELL.shellFlag, fullCommand], {
409
+ detached: os_1.default.platform() !== "win32",
410
+ stdio: "ignore",
411
+ });
412
+ child.unref();
413
+ return child.pid ?? -1;
527
414
  }
528
- stopHeartbeat() {
529
- if (this.heartbeatInterval) {
530
- clearTimeout(this.heartbeatInterval);
531
- this.heartbeatInterval = undefined;
532
- }
415
+ startIdleCheck() {
416
+ this.idleCheckInterval = setInterval(() => {
417
+ const idleTime = Date.now() - this.lastActivityTime;
418
+ if (idleTime >= IDLE_TIMEOUT_MS) {
419
+ const idleMinutes = Math.floor(idleTime / 60000);
420
+ console.log(chalk.yellow(`\n⏰ Idle timeout: No commands received for ${idleMinutes} minutes`));
421
+ console.log(chalk.yellow("Auto-terminating to save resources..."));
422
+ this.cleanup().then(() => process.exit(0));
423
+ }
424
+ }, IDLE_CHECK_INTERVAL_MS);
533
425
  }
534
- stopCommandSubscription() {
535
- if (this.commandSubscription) {
536
- this.commandSubscription();
537
- this.commandSubscription = undefined;
426
+ stopIdleCheck() {
427
+ if (this.idleCheckInterval) {
428
+ clearInterval(this.idleCheckInterval);
429
+ this.idleCheckInterval = undefined;
538
430
  }
539
431
  }
540
- restartCommandSubscription() {
541
- this.stopCommandSubscription();
542
- this.startCommandSubscription();
543
- }
544
432
  async cleanup() {
545
433
  console.log(chalk.blue("\n🧹 Cleaning up..."));
546
434
  this.isShuttingDown = true;
547
- this.stopHeartbeat();
548
- this.stopCommandSubscription();
435
+ this.stopIdleCheck();
436
+ // Disconnect Centrifugo
437
+ if (this.subscription) {
438
+ this.subscription.unsubscribe();
439
+ this.subscription = undefined;
440
+ }
441
+ if (this.centrifuge) {
442
+ this.centrifuge.disconnect();
443
+ this.centrifuge = undefined;
444
+ }
549
445
  // Set up force-exit timeout (5 seconds)
550
446
  const forceExitTimeout = setTimeout(() => {
551
447
  console.log(chalk.yellow("⚠️ Force exiting after 5 second timeout..."));
@@ -554,7 +450,7 @@ class LocalSandboxClient {
554
450
  try {
555
451
  if (this.connectionId) {
556
452
  try {
557
- await this.convex.mutation(api.localSandbox.disconnect, {
453
+ await this.convexHttp.mutation(api.localSandbox.disconnect, {
558
454
  token: this.config.token,
559
455
  connectionId: this.connectionId,
560
456
  });
@@ -565,25 +461,6 @@ class LocalSandboxClient {
565
461
  console.warn(chalk.yellow(`⚠️ Failed to disconnect: ${message}`));
566
462
  }
567
463
  }
568
- if (this.containerId) {
569
- if (this.config.persist) {
570
- console.log(chalk.green(`✓ Container preserved: ${this.getContainerName()}`));
571
- console.log(chalk.gray(" (Use --persist again to reuse it, or docker rm to remove)"));
572
- }
573
- else {
574
- const result = await runShellCommand(`docker rm -f ${this.containerId}`, {
575
- timeout: 3000,
576
- });
577
- if (result.exitCode === 0) {
578
- console.log(chalk.green("✓ Container removed"));
579
- }
580
- else {
581
- console.error(chalk.red("Error removing container:"), result.stderr);
582
- }
583
- }
584
- }
585
- // Close the Convex client to clean up WebSocket connection
586
- await this.convex.close();
587
464
  }
588
465
  finally {
589
466
  clearTimeout(forceExitTimeout);
@@ -610,29 +487,16 @@ ${chalk.yellow("Usage:")}
610
487
  ${chalk.yellow("Options:")}
611
488
  --token TOKEN Authentication token from Settings (required)
612
489
  --name NAME Connection name (default: hostname)
613
- --dangerous Run commands directly on host OS (no Docker)
614
- --persist Keep container running on exit and reuse if exists
615
490
  --convex-url URL Override Convex backend URL (for development)
616
491
  --help, -h Show this help message
617
492
 
618
493
  ${chalk.yellow("Examples:")}
619
- # Basic usage - pulls pre-built image with 30+ pentesting tools
620
494
  npx @hackerai/local --token hsb_abc123 --name "My Laptop"
621
-
622
- # Persistent container (faster restarts, preserves installed packages)
623
- npx @hackerai/local --token hsb_abc123 --name "Dev" --persist
624
-
625
- # Dangerous mode (no Docker isolation) - use with caution!
626
- npx @hackerai/local --token hsb_abc123 --name "Work PC" --dangerous
627
-
628
- ${chalk.cyan("Pre-built Image:")}
629
- The default image includes: nmap, sqlmap, ffuf, gobuster, nuclei, hydra,
630
- nikto, wpscan, subfinder, httpx, and 20+ more pentesting tools.
495
+ npx @hackerai/local --token hsb_abc123 --name "Work PC"
631
496
 
632
497
  ${chalk.red("⚠️ Security Warning:")}
633
- Docker mode provides process isolation but uses --network host for direct
634
- network access (required for pentesting tools to scan network services).
635
- In DANGEROUS mode, commands run directly on your OS without any isolation.
498
+ Commands run directly on your OS without any isolation.
499
+ Only connect machines you trust and control.
636
500
 
637
501
  ${chalk.cyan("Auto-termination:")}
638
502
  The client automatically terminates after 1 hour of inactivity (no commands
@@ -644,9 +508,6 @@ const config = {
644
508
  convexUrl: getArg("--convex-url") || PRODUCTION_CONVEX_URL,
645
509
  token: getArg("--token") || "",
646
510
  name: getArg("--name") || os_1.default.hostname(),
647
- dangerous: hasFlag("--dangerous"),
648
- build: hasFlag("--build"),
649
- persist: hasFlag("--persist"),
650
511
  };
651
512
  if (!config.token) {
652
513
  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/dist/utils.d.ts CHANGED
@@ -4,41 +4,11 @@
4
4
  */
5
5
  export declare const MAX_OUTPUT_SIZE = 12288;
6
6
  export declare const TRUNCATION_MARKER = "\n\n[... OUTPUT TRUNCATED - middle content removed to fit context limits ...]\n\n";
7
- /**
8
- * Required Docker capabilities for penetration testing tools.
9
- * - NET_RAW: ping, nmap, masscan, hping3, arp-scan, tcpdump, raw sockets
10
- * - NET_ADMIN: network interface manipulation, arp-scan, netdiscover
11
- * - SYS_PTRACE: gdb, strace, ltrace (debugging tools)
12
- */
13
- export declare const DOCKER_CAPABILITIES: readonly ["NET_RAW", "NET_ADMIN", "SYS_PTRACE"];
14
7
  /**
15
8
  * Truncates output using 25% head + 75% tail strategy.
16
9
  * This preserves both the command start (context) and the end (final results/errors).
17
10
  */
18
11
  export declare function truncateOutput(content: string, maxSize?: number): string;
19
- /**
20
- * Build Docker capability flags for the docker run command.
21
- */
22
- export declare function buildDockerCapabilityFlags(): string;
23
- /**
24
- * Build the full docker run command for creating a container.
25
- */
26
- export declare function buildDockerRunCommand(options: {
27
- image: string;
28
- containerName?: string;
29
- capabilities?: boolean;
30
- }): string;
31
- /**
32
- * Determine the sandbox mode based on configuration.
33
- */
34
- export declare function getSandboxMode(config: {
35
- dangerous?: boolean;
36
- }): "docker" | "dangerous";
37
- /**
38
- * Parse shell detection output to find available shell.
39
- * Returns the first valid shell path found.
40
- */
41
- export declare function parseShellDetectionOutput(output: string): string;
42
12
  export interface ShellConfig {
43
13
  shell: string;
44
14
  shellFlag: string;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,eAAe,QAAQ,CAAC;AAGrC,eAAO,MAAM,iBAAiB,sFACuD,CAAC;AAEtF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,iDAItB,CAAC;AAEX;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAwB,GAChC,MAAM,CAcR;AAED;;GAEG;AACH,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,GAAG,MAAM,CAOT;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,QAAQ,GAAG,WAAW,CAKzB;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOhE;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAM7D"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,eAAO,MAAM,eAAe,QAAQ,CAAC;AAGrC,eAAO,MAAM,iBAAiB,sFACuD,CAAC;AAEtF;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,MAAwB,GAChC,MAAM,CAcR;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAM7D"}
package/dist/utils.js CHANGED
@@ -4,28 +4,13 @@
4
4
  * Extracted for testability.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.DOCKER_CAPABILITIES = exports.TRUNCATION_MARKER = exports.MAX_OUTPUT_SIZE = void 0;
7
+ exports.TRUNCATION_MARKER = exports.MAX_OUTPUT_SIZE = void 0;
8
8
  exports.truncateOutput = truncateOutput;
9
- exports.buildDockerCapabilityFlags = buildDockerCapabilityFlags;
10
- exports.buildDockerRunCommand = buildDockerRunCommand;
11
- exports.getSandboxMode = getSandboxMode;
12
- exports.parseShellDetectionOutput = parseShellDetectionOutput;
13
9
  exports.getDefaultShell = getDefaultShell;
14
10
  // Align with LLM context limits (~4096 tokens ≈ 12288 chars)
15
11
  exports.MAX_OUTPUT_SIZE = 12288;
16
12
  // Truncation marker for 25% head + 75% tail strategy
17
13
  exports.TRUNCATION_MARKER = "\n\n[... OUTPUT TRUNCATED - middle content removed to fit context limits ...]\n\n";
18
- /**
19
- * Required Docker capabilities for penetration testing tools.
20
- * - NET_RAW: ping, nmap, masscan, hping3, arp-scan, tcpdump, raw sockets
21
- * - NET_ADMIN: network interface manipulation, arp-scan, netdiscover
22
- * - SYS_PTRACE: gdb, strace, ltrace (debugging tools)
23
- */
24
- exports.DOCKER_CAPABILITIES = [
25
- "NET_RAW",
26
- "NET_ADMIN",
27
- "SYS_PTRACE",
28
- ];
29
14
  /**
30
15
  * Truncates output using 25% head + 75% tail strategy.
31
16
  * This preserves both the command start (context) and the end (final results/errors).
@@ -42,42 +27,6 @@ function truncateOutput(content, maxSize = exports.MAX_OUTPUT_SIZE) {
42
27
  const tail = content.slice(-tailBudget);
43
28
  return head + exports.TRUNCATION_MARKER + tail;
44
29
  }
45
- /**
46
- * Build Docker capability flags for the docker run command.
47
- */
48
- function buildDockerCapabilityFlags() {
49
- return exports.DOCKER_CAPABILITIES.map((cap) => `--cap-add=${cap}`).join(" ");
50
- }
51
- /**
52
- * Build the full docker run command for creating a container.
53
- */
54
- function buildDockerRunCommand(options) {
55
- const { image, containerName, capabilities = true } = options;
56
- const nameFlag = containerName ? `--name ${containerName} ` : "";
57
- const capFlags = capabilities ? `${buildDockerCapabilityFlags()} ` : "";
58
- return `docker run -d ${nameFlag}${capFlags}--network host ${image} tail -f /dev/null`;
59
- }
60
- /**
61
- * Determine the sandbox mode based on configuration.
62
- */
63
- function getSandboxMode(config) {
64
- if (config.dangerous) {
65
- return "dangerous";
66
- }
67
- return "docker";
68
- }
69
- /**
70
- * Parse shell detection output to find available shell.
71
- * Returns the first valid shell path found.
72
- */
73
- function parseShellDetectionOutput(output) {
74
- if (!output || !output.trim()) {
75
- return "/bin/sh";
76
- }
77
- // Take first line (first result from 'command -v bash || command -v sh')
78
- const shell = output.trim().split("\n")[0];
79
- return shell || "/bin/sh";
80
- }
81
30
  /**
82
31
  * Get the default shell for a given platform.
83
32
  * On Windows, uses cmd.exe (not PowerShell, which aliases curl to Invoke-WebRequest
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAyBH,wCAiBC;AAKD,gEAEC;AAKD,sDAWC;AAKD,wCAOC;AAMD,8DAOC;AAYD,0CAMC;AA1GD,6DAA6D;AAChD,QAAA,eAAe,GAAG,KAAK,CAAC;AAErC,qDAAqD;AACxC,QAAA,iBAAiB,GAC5B,mFAAmF,CAAC;AAEtF;;;;;GAKG;AACU,QAAA,mBAAmB,GAAG;IACjC,SAAS;IACT,WAAW;IACX,YAAY;CACJ,CAAC;AAEX;;;GAGG;AACH,SAAgB,cAAc,CAC5B,OAAe,EACf,UAAkB,uBAAe;IAEjC,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE9C,MAAM,YAAY,GAAG,yBAAiB,CAAC,MAAM,CAAC;IAC9C,MAAM,gBAAgB,GAAG,OAAO,GAAG,YAAY,CAAC;IAEhD,+BAA+B;IAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,gBAAgB,GAAG,UAAU,CAAC;IAEjD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;IAExC,OAAO,IAAI,GAAG,yBAAiB,GAAG,IAAI,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAgB,0BAA0B;IACxC,OAAO,2BAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,SAAgB,qBAAqB,CAAC,OAIrC;IACC,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAE9D,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,UAAU,aAAa,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,0BAA0B,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAExE,OAAO,iBAAiB,QAAQ,GAAG,QAAQ,kBAAkB,KAAK,oBAAoB,CAAC;AACzF,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,MAE9B;IACC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,SAAgB,yBAAyB,CAAC,MAAc;IACtD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,yEAAyE;IACzE,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,KAAK,IAAI,SAAS,CAAC;AAC5B,CAAC;AAOD;;;;GAIG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC9C,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;IACD,yCAAyC;IACzC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACjD,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAaH,wCAiBC;AAYD,0CAMC;AA9CD,6DAA6D;AAChD,QAAA,eAAe,GAAG,KAAK,CAAC;AAErC,qDAAqD;AACxC,QAAA,iBAAiB,GAC5B,mFAAmF,CAAC;AAEtF;;;GAGG;AACH,SAAgB,cAAc,CAC5B,OAAe,EACf,UAAkB,uBAAe;IAEjC,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE9C,MAAM,YAAY,GAAG,yBAAiB,CAAC,MAAM,CAAC;IAC9C,MAAM,gBAAgB,GAAG,OAAO,GAAG,YAAY,CAAC;IAEhD,+BAA+B;IAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,gBAAgB,GAAG,UAAU,CAAC;IAEjD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC;IAExC,OAAO,IAAI,GAAG,yBAAiB,GAAG,IAAI,CAAC;AACzC,CAAC;AAOD;;;;GAIG;AACH,SAAgB,eAAe,CAAC,QAAgB;IAC9C,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;IACD,yCAAyC;IACzC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;AACjD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hackerai/local",
3
- "version": "0.5.2",
3
+ "version": "0.7.0",
4
4
  "description": "HackerAI Local Sandbox Client - Execute commands on your local machine",
5
5
  "bin": {
6
6
  "hackerai-local": "./dist/index.js"
@@ -33,6 +33,7 @@
33
33
  "node": ">=18"
34
34
  },
35
35
  "dependencies": {
36
+ "centrifuge": "^5.0.0",
36
37
  "convex": "^1.29.2"
37
38
  },
38
39
  "devDependencies": {