microsandbox-mcp 0.5.7 → 0.6.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.
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,27 +1,41 @@
1
1
  import { z } from "zod";
2
2
  import { Sandbox } from "microsandbox";
3
3
  import { formatError } from "../utils/errors.js";
4
+ import { limitText } from "../utils/output.js";
5
+ import { assertHostPathAllowed } from "../utils/policy.js";
6
+ import { ok } from "../utils/response.js";
7
+ import { fsEntryData, fsMetadataData } from "../utils/serialization.js";
8
+ const encodingSchema = z.enum(["utf8", "base64"]);
4
9
  export function registerFilesystemTools(server) {
5
10
  server.registerTool("sandbox_fs_read", {
6
11
  title: "Read File from Sandbox",
7
- description: "Read a file from the sandbox filesystem and return its contents as text.",
12
+ description: "Read a file from the sandbox filesystem as UTF-8 text or base64 bytes.",
8
13
  inputSchema: z.object({
9
14
  name: z.string().describe("Sandbox name"),
10
15
  path: z.string().describe("Absolute path inside the sandbox"),
16
+ encoding: encodingSchema.optional().describe("Output encoding. Defaults to utf8."),
17
+ maxBytes: z.number().int().positive().optional().describe("Maximum bytes to return"),
11
18
  }),
12
19
  annotations: {
13
20
  readOnlyHint: true,
14
21
  destructiveHint: false,
15
22
  idempotentHint: true,
16
23
  },
17
- }, async ({ name, path }) => {
24
+ }, async ({ name, path, encoding, maxBytes }) => {
18
25
  try {
19
- const handle = await Sandbox.get(name);
20
- const sandbox = await handle.connect();
21
- const content = await sandbox.fs().readToString(path);
22
- return {
23
- content: [{ type: "text", text: content }],
24
- };
26
+ const fs = await sandboxFs(name);
27
+ if ((encoding ?? "utf8") === "base64") {
28
+ const data = await fs.read(path);
29
+ const result = encodeBytes(data, "content", maxBytes);
30
+ return ok({ path, encoding: "base64", content: result.content }, {
31
+ truncated: result.truncated ? [result.truncated] : undefined,
32
+ });
33
+ }
34
+ const content = await fs.readToString(path);
35
+ const limited = limitText(content, "content", maxBytes);
36
+ return ok({ path, encoding: "utf8", content: limited.text }, {
37
+ truncated: limited.truncated ? [limited.truncated] : undefined,
38
+ });
25
39
  }
26
40
  catch (error) {
27
41
  return formatError(error);
@@ -29,25 +43,24 @@ export function registerFilesystemTools(server) {
29
43
  });
30
44
  server.registerTool("sandbox_fs_write", {
31
45
  title: "Write File to Sandbox",
32
- description: "Write content to a file inside the sandbox. Creates parent directories as needed.",
46
+ description: "Write UTF-8 text or base64 bytes to a file inside the sandbox.",
33
47
  inputSchema: z.object({
34
48
  name: z.string().describe("Sandbox name"),
35
49
  path: z.string().describe("Absolute path inside the sandbox"),
36
50
  content: z.string().describe("File content to write"),
51
+ encoding: encodingSchema.optional().describe("Input encoding. Defaults to utf8."),
37
52
  }),
38
53
  annotations: {
39
54
  readOnlyHint: false,
40
55
  destructiveHint: false,
41
56
  idempotentHint: true,
42
57
  },
43
- }, async ({ name, path, content }) => {
58
+ }, async ({ name, path, content, encoding }) => {
44
59
  try {
45
- const handle = await Sandbox.get(name);
46
- const sandbox = await handle.connect();
47
- await sandbox.fs().write(path, content);
48
- return {
49
- content: [{ type: "text", text: JSON.stringify({ path, written: true }, null, 2) }],
50
- };
60
+ const data = (encoding ?? "utf8") === "base64" ? Buffer.from(content, "base64") : content;
61
+ const fs = await sandboxFs(name);
62
+ await fs.write(path, data);
63
+ return ok({ path, encoding: encoding ?? "utf8", written: Buffer.byteLength(data) });
51
64
  }
52
65
  catch (error) {
53
66
  return formatError(error);
@@ -67,17 +80,9 @@ export function registerFilesystemTools(server) {
67
80
  },
68
81
  }, async ({ name, path }) => {
69
82
  try {
70
- const handle = await Sandbox.get(name);
71
- const sandbox = await handle.connect();
72
- const entries = await sandbox.fs().list(path);
73
- const results = entries.map((e) => ({
74
- path: e.path,
75
- kind: e.kind,
76
- size: e.size,
77
- }));
78
- return {
79
- content: [{ type: "text", text: JSON.stringify(results, null, 2) }],
80
- };
83
+ const fs = await sandboxFs(name);
84
+ const entries = await fs.list(path);
85
+ return ok(entries.map(fsEntryData));
81
86
  }
82
87
  catch (error) {
83
88
  return formatError(error);
@@ -85,7 +90,7 @@ export function registerFilesystemTools(server) {
85
90
  });
86
91
  server.registerTool("sandbox_fs_mkdir", {
87
92
  title: "Create Directory in Sandbox",
88
- description: "Create a directory with parent directories inside the sandbox.",
93
+ description: "Create a directory inside the sandbox.",
89
94
  inputSchema: z.object({
90
95
  name: z.string().describe("Sandbox name"),
91
96
  path: z.string().describe("Directory path to create"),
@@ -97,12 +102,9 @@ export function registerFilesystemTools(server) {
97
102
  },
98
103
  }, async ({ name, path }) => {
99
104
  try {
100
- const handle = await Sandbox.get(name);
101
- const sandbox = await handle.connect();
102
- await sandbox.fs().mkdir(path);
103
- return {
104
- content: [{ type: "text", text: JSON.stringify({ path, created: true }, null, 2) }],
105
- };
105
+ const fs = await sandboxFs(name);
106
+ await fs.mkdir(path);
107
+ return ok({ path, created: true });
106
108
  }
107
109
  catch (error) {
108
110
  return formatError(error);
@@ -114,25 +116,87 @@ export function registerFilesystemTools(server) {
114
116
  inputSchema: z.object({
115
117
  name: z.string().describe("Sandbox name"),
116
118
  path: z.string().describe("Path to remove"),
119
+ kind: z.enum(["auto", "file", "dir"]).optional().describe("Removal kind. Defaults to auto."),
117
120
  }),
118
121
  annotations: {
119
122
  readOnlyHint: false,
120
123
  destructiveHint: true,
121
124
  idempotentHint: true,
122
125
  },
123
- }, async ({ name, path }) => {
126
+ }, async ({ name, path, kind }) => {
124
127
  try {
125
- const handle = await Sandbox.get(name);
126
- const sandbox = await handle.connect();
127
- try {
128
- await sandbox.fs().remove(path);
128
+ const fs = await sandboxFs(name);
129
+ if (kind === "dir")
130
+ await fs.removeDir(path);
131
+ else if (kind === "file")
132
+ await fs.remove(path);
133
+ else {
134
+ try {
135
+ await fs.remove(path);
136
+ }
137
+ catch {
138
+ await fs.removeDir(path);
139
+ }
129
140
  }
130
- catch {
131
- await sandbox.fs().removeDir(path);
141
+ return ok({ path, removed: true });
142
+ }
143
+ catch (error) {
144
+ return formatError(error);
145
+ }
146
+ });
147
+ server.registerTool("sandbox_fs_copy", {
148
+ title: "Copy Sandbox Path",
149
+ description: "Copy a file within one sandbox or between two running sandboxes.",
150
+ inputSchema: z.object({
151
+ name: z.string().describe("Source sandbox name"),
152
+ from: z.string().describe("Source path in the source sandbox"),
153
+ to: z.string().describe("Destination path"),
154
+ toSandbox: z.string().optional().describe("Destination sandbox. Defaults to the source sandbox."),
155
+ }),
156
+ annotations: {
157
+ readOnlyHint: false,
158
+ destructiveHint: false,
159
+ idempotentHint: false,
160
+ },
161
+ }, async ({ name, from, to, toSandbox }) => {
162
+ try {
163
+ const sourceFs = await sandboxFs(name);
164
+ if (!toSandbox || toSandbox === name) {
165
+ await sourceFs.copy(from, to);
166
+ return ok({ from: { sandbox: name, path: from }, to: { sandbox: name, path: to }, copied: true });
132
167
  }
133
- return {
134
- content: [{ type: "text", text: JSON.stringify({ path, removed: true }, null, 2) }],
135
- };
168
+ const targetFs = await sandboxFs(toSandbox);
169
+ const data = await sourceFs.read(from);
170
+ await targetFs.write(to, data);
171
+ return ok({
172
+ from: { sandbox: name, path: from },
173
+ to: { sandbox: toSandbox, path: to },
174
+ copied: true,
175
+ bytes: data.byteLength,
176
+ });
177
+ }
178
+ catch (error) {
179
+ return formatError(error);
180
+ }
181
+ });
182
+ server.registerTool("sandbox_fs_rename", {
183
+ title: "Rename Sandbox Path",
184
+ description: "Rename a file or directory inside one sandbox.",
185
+ inputSchema: z.object({
186
+ name: z.string().describe("Sandbox name"),
187
+ from: z.string().describe("Old path"),
188
+ to: z.string().describe("New path"),
189
+ }),
190
+ annotations: {
191
+ readOnlyHint: false,
192
+ destructiveHint: false,
193
+ idempotentHint: false,
194
+ },
195
+ }, async ({ name, from, to }) => {
196
+ try {
197
+ const fs = await sandboxFs(name);
198
+ await fs.rename(from, to);
199
+ return ok({ from, to, renamed: true });
136
200
  }
137
201
  catch (error) {
138
202
  return formatError(error);
@@ -140,7 +204,7 @@ export function registerFilesystemTools(server) {
140
204
  });
141
205
  server.registerTool("sandbox_fs_stat", {
142
206
  title: "Get File Metadata in Sandbox",
143
- description: "Get file or directory metadata (kind, size, mode, modified time) inside the sandbox.",
207
+ description: "Get file or directory metadata inside the sandbox.",
144
208
  inputSchema: z.object({
145
209
  name: z.string().describe("Sandbox name"),
146
210
  path: z.string().describe("Path to stat"),
@@ -152,24 +216,96 @@ export function registerFilesystemTools(server) {
152
216
  },
153
217
  }, async ({ name, path }) => {
154
218
  try {
155
- const handle = await Sandbox.get(name);
156
- const sandbox = await handle.connect();
157
- const meta = await sandbox.fs().stat(path);
158
- return {
159
- content: [{
160
- type: "text",
161
- text: JSON.stringify({
162
- kind: meta.kind,
163
- size: meta.size,
164
- mode: meta.mode,
165
- modified: meta.modified,
166
- }, null, 2),
167
- }],
168
- };
219
+ const fs = await sandboxFs(name);
220
+ const meta = await fs.stat(path);
221
+ return ok(fsMetadataData(meta));
169
222
  }
170
223
  catch (error) {
171
224
  return formatError(error);
172
225
  }
173
226
  });
227
+ server.registerTool("sandbox_fs_exists", {
228
+ title: "Check Sandbox Path Exists",
229
+ description: "Check whether a path exists inside the sandbox.",
230
+ inputSchema: z.object({
231
+ name: z.string().describe("Sandbox name"),
232
+ path: z.string().describe("Path to check"),
233
+ }),
234
+ annotations: {
235
+ readOnlyHint: true,
236
+ destructiveHint: false,
237
+ idempotentHint: true,
238
+ },
239
+ }, async ({ name, path }) => {
240
+ try {
241
+ const fs = await sandboxFs(name);
242
+ return ok({ path, exists: await fs.exists(path) });
243
+ }
244
+ catch (error) {
245
+ return formatError(error);
246
+ }
247
+ });
248
+ server.registerTool("sandbox_fs_copy_from_host", {
249
+ title: "Copy Host Path Into Sandbox",
250
+ description: "Copy an allowlisted host path into a sandbox.",
251
+ inputSchema: z.object({
252
+ name: z.string().describe("Sandbox name"),
253
+ hostPath: z.string().describe("Host path to copy from"),
254
+ guestPath: z.string().describe("Guest destination path"),
255
+ }),
256
+ annotations: {
257
+ readOnlyHint: false,
258
+ destructiveHint: false,
259
+ idempotentHint: false,
260
+ },
261
+ }, async ({ name, hostPath, guestPath }) => {
262
+ try {
263
+ const fs = await sandboxFs(name);
264
+ const allowedHostPath = assertHostPathAllowed(hostPath);
265
+ await fs.copyFromHost(allowedHostPath, guestPath);
266
+ return ok({ hostPath: allowedHostPath, guestPath, copied: true });
267
+ }
268
+ catch (error) {
269
+ return formatError(error);
270
+ }
271
+ });
272
+ server.registerTool("sandbox_fs_copy_to_host", {
273
+ title: "Copy Sandbox Path To Host",
274
+ description: "Copy a sandbox file to an allowlisted host path.",
275
+ inputSchema: z.object({
276
+ name: z.string().describe("Sandbox name"),
277
+ guestPath: z.string().describe("Guest source path"),
278
+ hostPath: z.string().describe("Host destination path"),
279
+ }),
280
+ annotations: {
281
+ readOnlyHint: false,
282
+ destructiveHint: false,
283
+ idempotentHint: false,
284
+ },
285
+ }, async ({ name, guestPath, hostPath }) => {
286
+ try {
287
+ const fs = await sandboxFs(name);
288
+ const allowedHostPath = assertHostPathAllowed(hostPath);
289
+ await fs.copyToHost(guestPath, allowedHostPath);
290
+ return ok({ guestPath, hostPath: allowedHostPath, copied: true });
291
+ }
292
+ catch (error) {
293
+ return formatError(error);
294
+ }
295
+ });
296
+ }
297
+ async function sandboxFs(name) {
298
+ const handle = await Sandbox.get(name);
299
+ const sandbox = await handle.connect();
300
+ return sandbox.fs();
301
+ }
302
+ function encodeBytes(data, field, maxBytes) {
303
+ const totalBytes = data.byteLength;
304
+ const returnedBytes = maxBytes && totalBytes > maxBytes ? maxBytes : totalBytes;
305
+ const content = Buffer.from(data.subarray(0, returnedBytes)).toString("base64");
306
+ return {
307
+ content,
308
+ truncated: returnedBytes < totalBytes ? { field, returnedBytes, totalBytes } : undefined,
309
+ };
174
310
  }
175
311
  //# sourceMappingURL=filesystem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/tools/filesystem.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../src/tools/filesystem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerImageTools(server: McpServer): void;
@@ -0,0 +1,99 @@
1
+ import { z } from "zod";
2
+ import { Image } from "microsandbox";
3
+ import { formatError } from "../utils/errors.js";
4
+ import { fail, ok } from "../utils/response.js";
5
+ import { imageDetailData, imageHandleData } from "../utils/serialization.js";
6
+ export function registerImageTools(server) {
7
+ server.registerTool("image_list", {
8
+ title: "List Cached Images",
9
+ description: "List cached microsandbox images.",
10
+ inputSchema: z.object({}),
11
+ annotations: {
12
+ readOnlyHint: true,
13
+ destructiveHint: false,
14
+ idempotentHint: true,
15
+ },
16
+ }, async () => {
17
+ try {
18
+ return ok((await Image.list()).map(imageHandleData));
19
+ }
20
+ catch (error) {
21
+ return formatError(error);
22
+ }
23
+ });
24
+ server.registerTool("image_inspect", {
25
+ title: "Inspect Cached Image",
26
+ description: "Inspect cached image config and layers.",
27
+ inputSchema: z.object({
28
+ reference: z.string().describe("Image reference"),
29
+ }),
30
+ annotations: {
31
+ readOnlyHint: true,
32
+ destructiveHint: false,
33
+ idempotentHint: true,
34
+ },
35
+ }, async ({ reference }) => {
36
+ try {
37
+ return ok(imageDetailData(await Image.inspect(reference)));
38
+ }
39
+ catch (error) {
40
+ return formatError(error);
41
+ }
42
+ });
43
+ server.registerTool("image_remove", {
44
+ title: "Remove Cached Images",
45
+ description: "Remove one or more cached images.",
46
+ inputSchema: z.object({
47
+ reference: z.string().optional().describe("Image reference"),
48
+ references: z.array(z.string()).optional().describe("Image references"),
49
+ force: z.boolean().optional().describe("Remove even when a sandbox references the image"),
50
+ confirm: z.boolean().optional().describe("Required when force is true"),
51
+ }),
52
+ annotations: {
53
+ readOnlyHint: false,
54
+ destructiveHint: true,
55
+ idempotentHint: true,
56
+ },
57
+ }, async ({ reference, references, force, confirm }) => {
58
+ try {
59
+ if (force && !confirm) {
60
+ return fail("dangerous_operation_disabled", "image_remove with force requires confirm: true");
61
+ }
62
+ const targets = [...(reference ? [reference] : []), ...(references ?? [])];
63
+ if (targets.length === 0)
64
+ throw new Error("image_remove requires reference or references");
65
+ const results = [];
66
+ for (const target of targets) {
67
+ await Image.remove(target, { force });
68
+ results.push({ reference: target, removed: true });
69
+ }
70
+ return ok(results);
71
+ }
72
+ catch (error) {
73
+ return formatError(error);
74
+ }
75
+ });
76
+ server.registerTool("image_prune", {
77
+ title: "Prune Cached Images",
78
+ description: "Remove cached image artifacts unused by sandboxes.",
79
+ inputSchema: z.object({
80
+ confirm: z.boolean().describe("Must be true to prune image cache data"),
81
+ }),
82
+ annotations: {
83
+ readOnlyHint: false,
84
+ destructiveHint: true,
85
+ idempotentHint: false,
86
+ },
87
+ }, async ({ confirm }) => {
88
+ try {
89
+ if (!confirm) {
90
+ return fail("dangerous_operation_disabled", "image_prune requires confirm: true");
91
+ }
92
+ return ok(await Image.prune());
93
+ }
94
+ catch (error) {
95
+ return formatError(error);
96
+ }
97
+ });
98
+ }
99
+ //# sourceMappingURL=image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image.js","sourceRoot":"","sources":["../../src/tools/image.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerLogTools(server: McpServer): void;
@@ -0,0 +1,128 @@
1
+ import { z } from "zod";
2
+ import { Sandbox } from "microsandbox";
3
+ import { formatError } from "../utils/errors.js";
4
+ import { compactTruncations, limitText } from "../utils/output.js";
5
+ import { ok } from "../utils/response.js";
6
+ import { parseDate, toIso } from "../utils/serialization.js";
7
+ const logSourceSchema = z.enum(["stdout", "stderr", "output", "system", "all"]);
8
+ const logFilterSchema = z.object({
9
+ name: z.string().describe("Sandbox name"),
10
+ tail: z.number().int().positive().optional().describe("Return only the last N matching entries"),
11
+ since: z.string().optional().describe("Inclusive ISO timestamp lower bound"),
12
+ until: z.string().optional().describe("Exclusive ISO timestamp upper bound"),
13
+ sources: z.array(logSourceSchema).optional().describe("Log sources to include"),
14
+ grep: z.string().optional().describe("Substring filter applied to decoded text"),
15
+ sessionIds: z.array(z.number().int().nonnegative()).optional().describe("Exec session ids to include"),
16
+ maxBytes: z.number().int().positive().optional().describe("Maximum bytes to return per log entry"),
17
+ });
18
+ export function registerLogTools(server) {
19
+ server.registerTool("sandbox_logs_read", {
20
+ title: "Read Sandbox Logs",
21
+ description: "Read captured sandbox exec logs with source, time, grep, and session filters.",
22
+ inputSchema: logFilterSchema,
23
+ annotations: {
24
+ readOnlyHint: true,
25
+ destructiveHint: false,
26
+ idempotentHint: true,
27
+ },
28
+ }, async (args) => {
29
+ try {
30
+ const handle = await Sandbox.get(args.name);
31
+ const entries = await handle.logs({
32
+ tail: args.tail,
33
+ since: parseDate(args.since),
34
+ until: parseDate(args.until),
35
+ sources: args.sources,
36
+ });
37
+ const { entries: filtered, truncated } = filterAndSerialize(entries, args);
38
+ return ok({ entries: filtered, nextCursor: nextCursor(entries) }, { truncated });
39
+ }
40
+ catch (error) {
41
+ return formatError(error);
42
+ }
43
+ });
44
+ server.registerTool("sandbox_logs_stream", {
45
+ title: "Poll Sandbox Log Stream",
46
+ description: "Poll captured sandbox logs with a cursor and bounded follow timeout.",
47
+ inputSchema: logFilterSchema.omit({ tail: true }).extend({
48
+ fromCursor: z.string().optional().describe("Opaque cursor from a previous log entry"),
49
+ follow: z.boolean().optional().describe("Wait for new entries after current EOF"),
50
+ followTimeoutMs: z.number().int().nonnegative().optional().describe("Maximum time to wait for followed entries"),
51
+ limit: z.number().int().positive().max(1000).optional().describe("Maximum entries to return"),
52
+ }),
53
+ annotations: {
54
+ readOnlyHint: true,
55
+ destructiveHint: false,
56
+ idempotentHint: false,
57
+ },
58
+ }, async (args) => {
59
+ let stream;
60
+ try {
61
+ const handle = await Sandbox.get(args.name);
62
+ stream = await handle.logStream({
63
+ since: parseDate(args.since),
64
+ until: parseDate(args.until),
65
+ fromCursor: args.fromCursor,
66
+ follow: args.follow,
67
+ sources: args.sources,
68
+ });
69
+ const entries = [];
70
+ const deadline = Date.now() + (args.followTimeoutMs ?? 0);
71
+ for (let i = 0; i < (args.limit ?? 100); i += 1) {
72
+ const entry = args.follow
73
+ ? await recvWithTimeout(stream, Math.max(0, deadline - Date.now()))
74
+ : await stream.recv();
75
+ if (!entry)
76
+ break;
77
+ entries.push(entry);
78
+ }
79
+ const { entries: filtered, truncated } = filterAndSerialize(entries, args);
80
+ return ok({
81
+ entries: filtered,
82
+ nextCursor: nextCursor(entries),
83
+ }, { truncated });
84
+ }
85
+ catch (error) {
86
+ return formatError(error);
87
+ }
88
+ finally {
89
+ if (stream)
90
+ await stream[Symbol.asyncDispose]();
91
+ }
92
+ });
93
+ }
94
+ function filterAndSerialize(entries, args) {
95
+ const truncations = [];
96
+ const filtered = entries
97
+ .filter((entry) => args.sessionIds ? entry.sessionId !== null && args.sessionIds.includes(entry.sessionId) : true)
98
+ .filter((entry) => args.grep ? entry.text().includes(args.grep) : true)
99
+ .map((entry, index) => serializeLogEntry(entry, index, args.maxBytes, truncations));
100
+ return {
101
+ entries: filtered,
102
+ truncated: compactTruncations(truncations),
103
+ };
104
+ }
105
+ function serializeLogEntry(entry, index, maxBytes, truncated) {
106
+ const text = limitText(entry.text(), `entries.${index}.text`, maxBytes);
107
+ if (text.truncated)
108
+ truncated.push(text.truncated);
109
+ return {
110
+ timestamp: toIso(entry.timestamp),
111
+ source: entry.source,
112
+ sessionId: entry.sessionId,
113
+ text: text.text,
114
+ cursor: entry.cursor,
115
+ };
116
+ }
117
+ async function recvWithTimeout(stream, timeoutMs) {
118
+ if (timeoutMs <= 0)
119
+ return null;
120
+ return await Promise.race([
121
+ stream.recv(),
122
+ new Promise((resolve) => setTimeout(() => resolve(null), timeoutMs)),
123
+ ]);
124
+ }
125
+ function nextCursor(entries) {
126
+ return entries.length > 0 ? entries[entries.length - 1].cursor : null;
127
+ }
128
+ //# sourceMappingURL=logs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../../src/tools/logs.ts"],"names":[],"mappings":"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"}