microsandbox-mcp 0.5.6 → 0.5.10

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.
Files changed (63) hide show
  1. package/README.md +142 -27
  2. package/dist/config.d.ts +10 -0
  3. package/dist/config.js +42 -0
  4. package/dist/config.js.map +1 -0
  5. package/dist/index.js +13 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/resources.d.ts +2 -0
  8. package/dist/resources.js +71 -0
  9. package/dist/resources.js.map +1 -0
  10. package/dist/schemas/common.d.ts +7 -0
  11. package/dist/schemas/common.js +8 -0
  12. package/dist/schemas/common.js.map +1 -0
  13. package/dist/state/exec-sessions.d.ts +19 -0
  14. package/dist/state/exec-sessions.js +151 -0
  15. package/dist/state/exec-sessions.js.map +1 -0
  16. package/dist/tools/exec.js +283 -56
  17. package/dist/tools/exec.js.map +1 -1
  18. package/dist/tools/filesystem.js +195 -59
  19. package/dist/tools/filesystem.js.map +1 -1
  20. package/dist/tools/image.d.ts +2 -0
  21. package/dist/tools/image.js +99 -0
  22. package/dist/tools/image.js.map +1 -0
  23. package/dist/tools/logs.d.ts +2 -0
  24. package/dist/tools/logs.js +128 -0
  25. package/dist/tools/logs.js.map +1 -0
  26. package/dist/tools/metrics.js +48 -65
  27. package/dist/tools/metrics.js.map +1 -1
  28. package/dist/tools/runtime.d.ts +2 -0
  29. package/dist/tools/runtime.js +61 -0
  30. package/dist/tools/runtime.js.map +1 -0
  31. package/dist/tools/sandbox.d.ts +216 -0
  32. package/dist/tools/sandbox.js +619 -202
  33. package/dist/tools/sandbox.js.map +1 -1
  34. package/dist/tools/snapshot.d.ts +2 -0
  35. package/dist/tools/snapshot.js +234 -0
  36. package/dist/tools/snapshot.js.map +1 -0
  37. package/dist/tools/ssh.d.ts +2 -0
  38. package/dist/tools/ssh.js +323 -0
  39. package/dist/tools/ssh.js.map +1 -0
  40. package/dist/tools/volume.js +287 -23
  41. package/dist/tools/volume.js.map +1 -1
  42. package/dist/utils/errors.d.ts +2 -7
  43. package/dist/utils/errors.js +6 -5
  44. package/dist/utils/errors.js.map +1 -1
  45. package/dist/utils/exec-output.d.ts +20 -0
  46. package/dist/utils/exec-output.js +15 -0
  47. package/dist/utils/exec-output.js.map +1 -0
  48. package/dist/utils/output.d.ts +11 -0
  49. package/dist/utils/output.js +21 -0
  50. package/dist/utils/output.js.map +1 -0
  51. package/dist/utils/policy.d.ts +8 -0
  52. package/dist/utils/policy.js +47 -0
  53. package/dist/utils/policy.js.map +1 -0
  54. package/dist/utils/redaction.d.ts +1 -0
  55. package/dist/utils/redaction.js +15 -0
  56. package/dist/utils/redaction.js.map +1 -0
  57. package/dist/utils/response.d.ts +34 -0
  58. package/dist/utils/response.js +38 -0
  59. package/dist/utils/response.js.map +1 -0
  60. package/dist/utils/serialization.d.ts +15 -0
  61. package/dist/utils/serialization.js +164 -0
  62. package/dist/utils/serialization.js.map +1 -0
  63. package/package.json +5 -3
@@ -1,95 +1,322 @@
1
1
  import { z } from "zod";
2
2
  import { Sandbox } from "microsandbox";
3
+ import { closeExecSession, createExecSession, killExecSession, pollExecSession, signalExecSession, writeExecSessionStdin, } from "../state/exec-sessions.js";
3
4
  import { formatError } from "../utils/errors.js";
5
+ import { formatExecOutput } from "../utils/exec-output.js";
6
+ import { compactTruncations, limitText } from "../utils/output.js";
7
+ import { fail, ok } from "../utils/response.js";
8
+ const rlimitSchema = z.object({
9
+ resource: z.string(),
10
+ soft: z.number().int().nonnegative(),
11
+ hard: z.number().int().nonnegative().optional(),
12
+ });
13
+ const execOptionsSchema = z.object({
14
+ name: z.string().describe("Sandbox name"),
15
+ command: z.string().describe("Command to execute"),
16
+ args: z.array(z.string()).optional().describe("Command arguments"),
17
+ cwd: z.string().optional().describe("Working directory override"),
18
+ workdir: z.string().optional().describe("Working directory override"),
19
+ env: z.record(z.string(), z.string()).optional().describe("Additional environment variables"),
20
+ user: z.string().optional().describe("Guest user override"),
21
+ tty: z.boolean().optional().describe("Allocate a TTY"),
22
+ timeout: z.number().optional().describe("Timeout in seconds"),
23
+ timeoutMs: z.number().int().positive().optional().describe("Timeout in milliseconds"),
24
+ rlimits: z.array(rlimitSchema).optional().describe("Process rlimits"),
25
+ stdin: z.string().optional().describe("UTF-8 stdin to write before waiting"),
26
+ stdinBase64: z.string().optional().describe("Base64 stdin bytes to write before waiting"),
27
+ maxBytes: z.number().int().positive().optional().describe("Maximum stdout/stderr bytes to return"),
28
+ startIfStopped: z.boolean().optional().describe("Start a stopped sandbox for this command"),
29
+ keepRunning: z.boolean().optional().describe("Keep a sandbox running when startIfStopped starts it"),
30
+ treatNonZeroAsError: z.boolean().optional().describe("Return a tool error when exit code is non-zero"),
31
+ });
4
32
  export function registerExecTools(server) {
5
33
  server.registerTool("sandbox_exec", {
6
34
  title: "Execute Command in Sandbox",
7
35
  description: "Execute a command inside a running sandbox and return stdout/stderr/exit code.",
8
- inputSchema: z.object({
9
- name: z.string().describe("Sandbox name"),
10
- command: z.string().describe("Command to execute"),
11
- args: z.array(z.string()).optional().describe("Command arguments"),
12
- cwd: z.string().optional().describe("Working directory override"),
13
- env: z.record(z.string(), z.string()).optional().describe("Additional environment variables"),
14
- timeout: z.number().optional().describe("Timeout in seconds"),
15
- }),
36
+ inputSchema: execOptionsSchema,
16
37
  annotations: {
17
38
  readOnlyHint: false,
18
39
  destructiveHint: false,
19
40
  idempotentHint: false,
20
41
  },
21
- }, async ({ name, command, args, cwd, env, timeout }) => {
42
+ }, async (args) => {
43
+ const context = await openSandboxForExec(args.name, args.startIfStopped, args.keepRunning);
22
44
  try {
23
- const handle = await Sandbox.get(name);
24
- const sandbox = await handle.connect();
25
- const output = await sandbox.execWith(command, (b) => {
26
- let acc = b;
27
- if (args)
28
- acc = acc.args(args);
29
- if (cwd)
30
- acc = acc.cwd(cwd);
31
- if (env)
32
- acc = acc.envs(env);
33
- if (timeout)
34
- acc = acc.timeout(timeout * 1000);
35
- return acc;
45
+ const output = await context.sandbox.execWith(args.command, (b) => applyExecOptions(b, args));
46
+ const result = formatExecOutput(output, args.maxBytes);
47
+ if (args.treatNonZeroAsError && !result.data.success) {
48
+ return fail("exec_failed", `command exited with status ${result.data.exitCode}`, {
49
+ details: result.data,
50
+ });
51
+ }
52
+ return ok(result.data, {
53
+ truncated: result.truncated,
54
+ warnings: context.warning ? [context.warning] : undefined,
36
55
  });
37
- return {
38
- content: [{
39
- type: "text",
40
- text: JSON.stringify({
41
- stdout: output.stdout(),
42
- stderr: output.stderr(),
43
- exitCode: output.code,
44
- success: output.success,
45
- }, null, 2),
46
- }],
47
- };
48
56
  }
49
57
  catch (error) {
50
58
  return formatError(error);
51
59
  }
60
+ finally {
61
+ await stopIfNeeded(context);
62
+ }
52
63
  });
53
64
  server.registerTool("sandbox_shell", {
54
65
  title: "Run Shell Command in Sandbox",
55
- description: "Execute a shell command or script string inside a running sandbox. " +
56
- "Interprets pipes, redirects, and shell syntax.",
66
+ description: "Execute a shell command or script string inside a running sandbox.",
67
+ inputSchema: execOptionsSchema.omit({ args: true }).extend({
68
+ shell: z.string().optional().describe("Shell binary to execute. Defaults to sh."),
69
+ }),
70
+ annotations: {
71
+ readOnlyHint: false,
72
+ destructiveHint: false,
73
+ idempotentHint: false,
74
+ },
75
+ }, async (args) => {
76
+ const context = await openSandboxForExec(args.name, args.startIfStopped, args.keepRunning);
77
+ try {
78
+ const shell = args.shell ?? "sh";
79
+ const output = await context.sandbox.execWith(shell, (b) => applyExecOptions(b.args(["-c", args.command]), args));
80
+ const result = formatExecOutput(output, args.maxBytes);
81
+ if (args.treatNonZeroAsError && !result.data.success) {
82
+ return fail("exec_failed", `shell command exited with status ${result.data.exitCode}`, {
83
+ details: result.data,
84
+ });
85
+ }
86
+ return ok(result.data, {
87
+ truncated: result.truncated,
88
+ warnings: context.warning ? [context.warning] : undefined,
89
+ });
90
+ }
91
+ catch (error) {
92
+ return formatError(error);
93
+ }
94
+ finally {
95
+ await stopIfNeeded(context);
96
+ }
97
+ });
98
+ server.registerTool("sandbox_exec_start", {
99
+ title: "Start Exec Session",
100
+ description: "Start a long-running command and return an exec session id for polling and stdin.",
101
+ inputSchema: execOptionsSchema.extend({
102
+ shell: z.boolean().optional().describe("Interpret command as a shell script with sh -c"),
103
+ closeStdin: z.boolean().optional().describe("Close stdin after writing the initial stdin payload"),
104
+ }),
105
+ annotations: {
106
+ readOnlyHint: false,
107
+ destructiveHint: false,
108
+ idempotentHint: false,
109
+ },
110
+ }, async (args) => {
111
+ try {
112
+ const context = await openSandboxForExec(args.name, args.startIfStopped, args.keepRunning);
113
+ const stopSandboxOnExit = context.stopAfter ? args.name : null;
114
+ const handle = args.shell
115
+ ? await context.sandbox.execStreamWith("sh", (b) => applyExecOptions(b.args(["-c", args.command]), args, true))
116
+ : await context.sandbox.execStreamWith(args.command, (b) => applyExecOptions(b, args, true));
117
+ const execSessionId = await createExecSession(handle, { stopSandboxOnExit });
118
+ const initialStdin = stdinPayload(args);
119
+ if (initialStdin !== undefined) {
120
+ await writeExecSessionStdin(execSessionId, initialStdin, args.closeStdin);
121
+ }
122
+ return ok({
123
+ execSessionId,
124
+ sandbox: args.name,
125
+ stopSandboxOnExit,
126
+ }, {
127
+ warnings: context.warning ? [context.warning] : undefined,
128
+ });
129
+ }
130
+ catch (error) {
131
+ return formatError(error);
132
+ }
133
+ });
134
+ server.registerTool("sandbox_exec_poll", {
135
+ title: "Poll Exec Session",
136
+ description: "Read output events and status from a long-running exec session.",
57
137
  inputSchema: z.object({
58
- name: z.string().describe("Sandbox name"),
59
- command: z.string().describe("Shell command or script to execute"),
60
- timeout: z.number().optional().describe("Timeout in seconds"),
138
+ execSessionId: z.string(),
139
+ cursor: z.number().int().nonnegative().optional(),
140
+ limit: z.number().int().positive().max(1000).optional(),
141
+ maxBytes: z.number().int().positive().optional(),
142
+ }),
143
+ annotations: {
144
+ readOnlyHint: true,
145
+ destructiveHint: false,
146
+ idempotentHint: true,
147
+ },
148
+ }, async ({ execSessionId, cursor, limit, maxBytes }) => {
149
+ try {
150
+ const polled = pollExecSession(execSessionId, cursor, limit);
151
+ const truncated = [];
152
+ const events = polled.events.map((entry) => ({
153
+ ...entry,
154
+ event: limitExecEvent(entry.event, maxBytes, truncated),
155
+ }));
156
+ return ok({
157
+ events,
158
+ nextCursor: polled.nextCursor,
159
+ done: polled.done,
160
+ exitStatus: polled.exitStatus,
161
+ error: polled.error,
162
+ }, {
163
+ truncated: compactTruncations(truncated),
164
+ });
165
+ }
166
+ catch (error) {
167
+ return formatError(error);
168
+ }
169
+ });
170
+ server.registerTool("sandbox_exec_write_stdin", {
171
+ title: "Write Exec Stdin",
172
+ description: "Write UTF-8 or base64 data to an exec session's stdin.",
173
+ inputSchema: z.object({
174
+ execSessionId: z.string(),
175
+ data: z.string().optional(),
176
+ dataBase64: z.string().optional(),
177
+ close: z.boolean().optional(),
61
178
  }),
62
179
  annotations: {
63
180
  readOnlyHint: false,
64
181
  destructiveHint: false,
65
182
  idempotentHint: false,
66
183
  },
67
- }, async ({ name, command, timeout }) => {
184
+ }, async ({ execSessionId, data, dataBase64, close }) => {
185
+ try {
186
+ const payload = dataBase64 ? Buffer.from(dataBase64, "base64") : (data ?? "");
187
+ await writeExecSessionStdin(execSessionId, payload, close);
188
+ return ok({ execSessionId, written: Buffer.byteLength(payload), stdinClosed: close === true });
189
+ }
190
+ catch (error) {
191
+ return formatError(error);
192
+ }
193
+ });
194
+ server.registerTool("sandbox_exec_signal", {
195
+ title: "Signal Exec Session",
196
+ description: "Send a POSIX signal to an exec session process.",
197
+ inputSchema: z.object({
198
+ execSessionId: z.string(),
199
+ signal: z.union([
200
+ z.number().int().positive(),
201
+ z.enum(["hup", "int", "term", "kill"]),
202
+ ]),
203
+ }),
204
+ annotations: {
205
+ readOnlyHint: false,
206
+ destructiveHint: true,
207
+ idempotentHint: false,
208
+ },
209
+ }, async ({ execSessionId, signal }) => {
68
210
  try {
69
- const handle = await Sandbox.get(name);
70
- const sandbox = await handle.connect();
71
- let output;
72
- if (timeout) {
73
- output = await sandbox.execWith("sh", (b) => b.args(["-c", command]).timeout(timeout * 1000));
211
+ if (signal === "kill") {
212
+ await killExecSession(execSessionId);
74
213
  }
75
214
  else {
76
- output = await sandbox.shell(command);
215
+ await signalExecSession(execSessionId, signalNumber(signal));
77
216
  }
78
- return {
79
- content: [{
80
- type: "text",
81
- text: JSON.stringify({
82
- stdout: output.stdout(),
83
- stderr: output.stderr(),
84
- exitCode: output.code,
85
- success: output.success,
86
- }, null, 2),
87
- }],
88
- };
217
+ return ok({ execSessionId, signaled: signal });
89
218
  }
90
219
  catch (error) {
91
220
  return formatError(error);
92
221
  }
93
222
  });
223
+ server.registerTool("sandbox_exec_close", {
224
+ title: "Close Exec Session",
225
+ description: "Close and forget an in-memory exec session.",
226
+ inputSchema: z.object({
227
+ execSessionId: z.string(),
228
+ }),
229
+ annotations: {
230
+ readOnlyHint: false,
231
+ destructiveHint: false,
232
+ idempotentHint: true,
233
+ },
234
+ }, async ({ execSessionId }) => {
235
+ try {
236
+ await closeExecSession(execSessionId);
237
+ return ok({ execSessionId, closed: true });
238
+ }
239
+ catch (error) {
240
+ return formatError(error);
241
+ }
242
+ });
243
+ }
244
+ function applyExecOptions(builder, args, forceStdinPipe = false) {
245
+ let acc = builder;
246
+ if (args.args)
247
+ acc = acc.args(args.args);
248
+ if (args.cwd ?? args.workdir)
249
+ acc = acc.cwd(args.cwd ?? args.workdir);
250
+ if (args.env)
251
+ acc = acc.envs(args.env);
252
+ if (args.user)
253
+ acc = acc.user(args.user);
254
+ if (args.tty !== undefined)
255
+ acc = acc.tty(args.tty);
256
+ const timeoutMs = args.timeoutMs ?? (args.timeout ? args.timeout * 1000 : undefined);
257
+ if (timeoutMs)
258
+ acc = acc.timeout(timeoutMs);
259
+ for (const rlimit of args.rlimits ?? []) {
260
+ acc = acc.rlimitRange(rlimit.resource, rlimit.soft, rlimit.hard ?? rlimit.soft);
261
+ }
262
+ const stdin = stdinPayload(args);
263
+ if (forceStdinPipe)
264
+ acc = acc.stdinPipe();
265
+ else if (stdin !== undefined)
266
+ acc = acc.stdinBytes(Buffer.isBuffer(stdin) ? stdin : Buffer.from(stdin, "utf8"));
267
+ return acc;
268
+ }
269
+ async function openSandboxForExec(name, startIfStopped = false, keepRunning = false) {
270
+ const handle = await Sandbox.get(name);
271
+ if (handle.status === "running") {
272
+ return { sandbox: await handle.connect(), stopAfter: false };
273
+ }
274
+ if (!startIfStopped) {
275
+ return { sandbox: await handle.connect(), stopAfter: false };
276
+ }
277
+ const sandbox = await handle.startDetached();
278
+ return {
279
+ sandbox,
280
+ stopAfter: !keepRunning,
281
+ warning: keepRunning ? undefined : "sandbox was started for this command and will be stopped afterward",
282
+ };
283
+ }
284
+ async function stopIfNeeded(context) {
285
+ if (!context.stopAfter)
286
+ return;
287
+ try {
288
+ await context.sandbox.stop();
289
+ }
290
+ catch {
291
+ // Best-effort cleanup for startIfStopped one-shot commands.
292
+ }
293
+ }
294
+ function stdinPayload(args) {
295
+ if (args.stdinBase64 !== undefined)
296
+ return Buffer.from(args.stdinBase64, "base64");
297
+ return args.stdin;
298
+ }
299
+ function limitExecEvent(event, maxBytes, truncated) {
300
+ if ((event.kind === "stdout" || event.kind === "stderr") && typeof event.data === "string") {
301
+ const limited = limitText(event.data, String(event.kind), maxBytes);
302
+ if (limited.truncated)
303
+ truncated.push(limited.truncated);
304
+ return { ...event, data: limited.text };
305
+ }
306
+ return event;
307
+ }
308
+ function signalNumber(signal) {
309
+ if (typeof signal === "number")
310
+ return signal;
311
+ switch (signal) {
312
+ case "hup":
313
+ return 1;
314
+ case "int":
315
+ return 2;
316
+ case "term":
317
+ return 15;
318
+ case "kill":
319
+ return 9;
320
+ }
94
321
  }
95
322
  //# sourceMappingURL=exec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/tools/exec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/tools/exec.ts"],"names":[],"mappings":"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"}