@langchain/deno 0.1.1 → 0.2.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.
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { Sandbox } from "@deno/sandbox";
2
- import { BackendFactory, BaseSandbox, EditResult, ExecuteResponse, FileDownloadResponse, FileUploadResponse, SandboxError, SandboxErrorCode, WriteResult } from "deepagents";
1
+ import { Memory, Region, Sandbox, SecretConfig, SnapshotId, SnapshotSlug, VolumeId, VolumeSlug } from "@deno/sandbox";
2
+ import { BackendFactory, BaseSandbox, ExecuteResponse, FileDownloadResponse, FileUploadResponse, SandboxError, SandboxErrorCode } from "deepagents";
3
3
 
4
4
  //#region src/types.d.ts
5
5
  /**
@@ -9,23 +9,35 @@ import { BackendFactory, BaseSandbox, EditResult, ExecuteResponse, FileDownloadR
9
9
  * - `ams`: Amsterdam
10
10
  * - `ord`: Chicago
11
11
  */
12
- type DenoSandboxRegion = "ams" | "ord";
12
+ type DenoSandboxRegion = Region;
13
13
  /**
14
14
  * Sandbox lifetime configuration.
15
15
  *
16
+ * @deprecated Use {@link SandboxTimeout} instead. This type will be removed in a future release.
17
+ *
16
18
  * - `"session"`: Sandbox shuts down when you close/dispose the client (default)
17
19
  * - Duration string: Keep sandbox alive for a specific time (e.g., "5m", "30s")
18
20
  */
19
21
  type SandboxLifetime = "session" | `${number}s` | `${number}m`;
22
+ /**
23
+ * Sandbox timeout configuration.
24
+ *
25
+ * - `"session"`: Sandbox shuts down when the primary client disconnects (default)
26
+ * - Duration string: Keep sandbox alive for a specific time (e.g., "600s", "20m")
27
+ *
28
+ * Note: when using a duration, the sandbox will be terminated after the specified
29
+ * time even if clients are still connected.
30
+ */
31
+ type SandboxTimeout = "session" | `${number}s` | `${number}m`;
20
32
  /**
21
33
  * Configuration options for creating a Deno Sandbox.
22
34
  *
23
35
  * @example
24
36
  * ```typescript
25
37
  * const options: DenoSandboxOptions = {
26
- * memoryMb: 1024, // 1GB memory
27
- * lifetime: "5m", // 5 minutes
28
- * region: "iad", // US East
38
+ * memory: "1GiB", // 1GB memory
39
+ * timeout: "5m", // 5 minutes
40
+ * region: "ord", // Chicago
29
41
  * };
30
42
  * ```
31
43
  */
@@ -33,6 +45,8 @@ interface DenoSandboxOptions {
33
45
  /**
34
46
  * Amount of memory allocated to the sandbox in megabytes.
35
47
  *
48
+ * @deprecated Use {@link DenoSandboxOptions.memory} instead. This option will be removed in a future release.
49
+ *
36
50
  * Memory limits:
37
51
  * - Minimum: 768MB
38
52
  * - Maximum: 4096MB
@@ -40,9 +54,24 @@ interface DenoSandboxOptions {
40
54
  * @default 768
41
55
  */
42
56
  memoryMb?: number;
57
+ /**
58
+ * The memory size of the sandbox. Supports plain numbers (interpreted as bytes)
59
+ * and human-readable strings with binary (GiB, MiB, KiB) or decimal (GB, MB, kB)
60
+ * units.
61
+ *
62
+ * Takes precedence over the deprecated `memoryMb` option.
63
+ *
64
+ * @example 1342177280
65
+ * @example "1GiB"
66
+ * @example "1280MiB"
67
+ * @default "1280MiB"
68
+ */
69
+ memory?: Memory;
43
70
  /**
44
71
  * Sandbox lifetime configuration.
45
72
  *
73
+ * @deprecated Use {@link DenoSandboxOptions.timeout} instead. This option will be removed in a future release.
74
+ *
46
75
  * - `"session"`: Sandbox shuts down when you close/dispose the client (default)
47
76
  * - Duration string: Keep sandbox alive for a specific time (e.g., "5m", "30s")
48
77
  *
@@ -51,6 +80,22 @@ interface DenoSandboxOptions {
51
80
  * @default "session"
52
81
  */
53
82
  lifetime?: SandboxLifetime;
83
+ /**
84
+ * The timeout of the sandbox. When not specified, it defaults to `"session"`.
85
+ *
86
+ * Takes precedence over the deprecated `lifetime` option.
87
+ *
88
+ * - `"session"`: Sandbox is destroyed when the primary client disconnects.
89
+ * - Duration string: Keep sandbox alive for a specific time (e.g., "600s", "20m").
90
+ * Note that when this duration has passed, the sandbox will be terminated even
91
+ * if there are still clients connected to it.
92
+ *
93
+ * @example "session"
94
+ * @example "600s"
95
+ * @example "20m"
96
+ * @default "session"
97
+ */
98
+ timeout?: SandboxTimeout;
54
99
  /**
55
100
  * Region where the sandbox will be created.
56
101
  *
@@ -69,7 +114,7 @@ interface DenoSandboxOptions {
69
114
  * @example
70
115
  * ```typescript
71
116
  * const options: DenoSandboxOptions = {
72
- * memoryMb: 1024,
117
+ * memory: "1GiB",
73
118
  * initialFiles: {
74
119
  * "/home/app/index.js": "console.log('Hello')",
75
120
  * "/home/app/package.json": '{"name": "test"}',
@@ -81,6 +126,9 @@ interface DenoSandboxOptions {
81
126
  /**
82
127
  * Authentication configuration for Deno Deploy API.
83
128
  *
129
+ * @deprecated Use the top-level {@link DenoSandboxOptions.token} and {@link DenoSandboxOptions.org} options instead.
130
+ * This option will be removed in a future release.
131
+ *
84
132
  * ### Environment Variable Setup
85
133
  *
86
134
  * ```bash
@@ -98,6 +146,148 @@ interface DenoSandboxOptions {
98
146
  */
99
147
  token?: string;
100
148
  };
149
+ /**
150
+ * The Deno Deploy access token that should be used to authenticate requests.
151
+ *
152
+ * - When passing an organization token (starts with `ddo_`), no further
153
+ * organization information is required.
154
+ * - When passing a personal token (starts with `ddp_`), the `org` option
155
+ * must also be provided.
156
+ *
157
+ * If not provided, the `DENO_DEPLOY_TOKEN` environment variable will be used.
158
+ *
159
+ * Takes precedence over the deprecated `auth.token` option.
160
+ */
161
+ token?: string;
162
+ /**
163
+ * The Deno Deploy organization slug to operate within.
164
+ *
165
+ * This is required when using a personal access token (starts with `ddp_`).
166
+ * If not provided, the `DENO_DEPLOY_ORG` environment variable will be used.
167
+ */
168
+ org?: string;
169
+ /**
170
+ * Environment variables to start the sandbox with, in addition to the default
171
+ * environment variables such as `DENO_DEPLOY_ORGANIZATION_ID`.
172
+ */
173
+ env?: Record<string, string>;
174
+ /**
175
+ * Whether to enable debug logging.
176
+ *
177
+ * @default false
178
+ */
179
+ debug?: boolean;
180
+ /**
181
+ * Labels to set on the sandbox. Up to 5 labels can be specified.
182
+ * Each label key must be at most 64 bytes, and each label value
183
+ * must be at most 128 bytes.
184
+ */
185
+ labels?: Record<string, string>;
186
+ /**
187
+ * A volume or snapshot to use as the root filesystem of the sandbox.
188
+ *
189
+ * If not specified, the default base image will be used. The volume or
190
+ * snapshot must be bootable.
191
+ *
192
+ * - Volumes will be mounted read-write (writes are persisted).
193
+ * - Snapshots will be mounted read-only (writes are not persisted).
194
+ *
195
+ * @example
196
+ * ```typescript
197
+ * const options: DenoSandboxOptions = {
198
+ * root: "my-volume-slug",
199
+ * };
200
+ * ```
201
+ */
202
+ root?: VolumeId | VolumeSlug | SnapshotId | SnapshotSlug;
203
+ /**
204
+ * Volumes to mount on the sandbox.
205
+ *
206
+ * The key is the mount path inside the sandbox, and the value is the
207
+ * volume ID or slug.
208
+ *
209
+ * @example
210
+ * ```typescript
211
+ * const options: DenoSandboxOptions = {
212
+ * volumes: {
213
+ * "/data/volume1": "volume-slug-or-id-1",
214
+ * },
215
+ * };
216
+ * ```
217
+ */
218
+ volumes?: Record<string, VolumeId | VolumeSlug>;
219
+ /**
220
+ * List of hostnames / IP addresses with optional port numbers that the
221
+ * sandbox can make outbound network requests to.
222
+ *
223
+ * If not specified, no network restrictions are applied.
224
+ *
225
+ * @example []
226
+ * @example ["example.com"]
227
+ * @example ["*.example.com"]
228
+ * @example ["example.com:443"]
229
+ */
230
+ allowNet?: string[];
231
+ /**
232
+ * Secret environment variables that are never exposed to sandbox code.
233
+ * The real secret values are injected on the wire when the sandbox makes
234
+ * HTTPS requests to the specified hosts.
235
+ *
236
+ * The key is the environment variable name.
237
+ *
238
+ * @example
239
+ * ```typescript
240
+ * const options: DenoSandboxOptions = {
241
+ * secrets: {
242
+ * OPENAI_API_KEY: {
243
+ * hosts: ["api.openai.com"],
244
+ * value: "sk-proj-your-real-key",
245
+ * },
246
+ * },
247
+ * };
248
+ * ```
249
+ */
250
+ secrets?: Record<string, SecretConfig>;
251
+ /**
252
+ * Whether to expose SSH access to the sandbox. If true, the sandbox's
253
+ * `ssh` property will be populated once the sandbox is ready.
254
+ *
255
+ * @example
256
+ * ```typescript
257
+ * const sandbox = await DenoSandbox.create({ ssh: true });
258
+ * console.log(sandbox.instance.ssh);
259
+ * // => { username: "...", hostname: "..." }
260
+ * ```
261
+ */
262
+ ssh?: boolean;
263
+ /**
264
+ * The port number to expose for HTTP access. If specified, the sandbox's
265
+ * `url` property will be populated once the sandbox is ready, and can
266
+ * be used to access the sandbox over HTTP.
267
+ *
268
+ * @example
269
+ * ```typescript
270
+ * const sandbox = await DenoSandbox.create({ port: 8080 });
271
+ * console.log(sandbox.instance.url);
272
+ * // => "http://..."
273
+ * ```
274
+ */
275
+ port?: number;
276
+ /**
277
+ * Override the Sandbox API endpoint URL to use to create and communicate
278
+ * with the sandboxes.
279
+ *
280
+ * The default can also be overridden by setting the `DENO_SANDBOX_ENDPOINT`
281
+ * or `DENO_SANDBOX_BASE_DOMAIN` environment variables.
282
+ */
283
+ sandboxEndpoint?: string | ((region: string) => string);
284
+ /**
285
+ * Override the API endpoint to use to connect to Deno Deploy.
286
+ *
287
+ * The default can also be overridden by setting the `DENO_DEPLOY_ENDPOINT`
288
+ * environment variable.
289
+ */
290
+ apiEndpoint?: string;
101
291
  }
102
292
  /**
103
293
  * Error codes for Deno Sandbox operations.
@@ -171,8 +361,8 @@ declare class DenoSandboxError extends SandboxError {
171
361
  *
172
362
  * // Create and initialize a sandbox
173
363
  * const sandbox = await DenoSandbox.create({
174
- * memoryMb: 1024,
175
- * lifetime: "5m",
364
+ * memory: "1GiB",
365
+ * timeout: "5m",
176
366
  * });
177
367
  *
178
368
  * try {
@@ -236,11 +426,11 @@ declare class DenoSandbox extends BaseSandbox {
236
426
  * @example
237
427
  * ```typescript
238
428
  * // Two-step initialization
239
- * const sandbox = new DenoSandbox({ memoryMb: 1024 });
429
+ * const sandbox = new DenoSandbox({ memory: "1GiB" });
240
430
  * await sandbox.initialize();
241
431
  *
242
432
  * // Or use the factory method
243
- * const sandbox = await DenoSandbox.create({ memoryMb: 1024 });
433
+ * const sandbox = await DenoSandbox.create({ memory: "1GiB" });
244
434
  * ```
245
435
  */
246
436
  constructor(options?: DenoSandboxOptions);
@@ -321,44 +511,6 @@ declare class DenoSandbox extends BaseSandbox {
321
511
  * ```
322
512
  */
323
513
  downloadFiles(paths: string[]): Promise<FileDownloadResponse[]>;
324
- /**
325
- * Read a file's content with line numbers.
326
- *
327
- * Override of BaseSandbox.read() to use awk instead of Python,
328
- * since Deno sandboxes don't have Python installed.
329
- *
330
- * @param filePath - Absolute path to the file
331
- * @param offset - Line offset (0-indexed, default 0)
332
- * @param limit - Maximum lines to return (default 500)
333
- * @returns Formatted file content with line numbers, or error message
334
- */
335
- read(filePath: string, offset?: number, limit?: number): Promise<string>;
336
- /**
337
- * Create a new file with content.
338
- *
339
- * Override of BaseSandbox.write() to use shell commands instead of Python,
340
- * since Deno sandboxes don't have Python installed.
341
- *
342
- * @param filePath - Absolute path for the new file
343
- * @param content - File content to write
344
- * @returns WriteResult with error populated on failure
345
- */
346
- write(filePath: string, content: string): Promise<WriteResult>;
347
- /**
348
- * Edit a file by replacing string occurrences.
349
- *
350
- * Override of BaseSandbox.edit() to use shell commands instead of Python,
351
- * since Deno sandboxes don't have Python installed.
352
- *
353
- * Uses sed for in-place replacement with proper escaping.
354
- *
355
- * @param filePath - Absolute path to the file
356
- * @param oldString - String to find and replace
357
- * @param newString - Replacement string
358
- * @param replaceAll - If true, replace all occurrences (default: false)
359
- * @returns EditResult with error, path, and occurrences
360
- */
361
- edit(filePath: string, oldString: string, newString: string, replaceAll?: boolean): Promise<EditResult>;
362
514
  /**
363
515
  * Close the sandbox and release all resources.
364
516
  *
@@ -403,9 +555,9 @@ declare class DenoSandbox extends BaseSandbox {
403
555
  * @example
404
556
  * ```typescript
405
557
  * const sandbox = await DenoSandbox.create({
406
- * memoryMb: 1024,
407
- * lifetime: "10m",
408
- * region: "iad",
558
+ * memory: "1GiB",
559
+ * timeout: "10m",
560
+ * region: "ord",
409
561
  * });
410
562
  * ```
411
563
  */
@@ -427,7 +579,7 @@ declare class DenoSandbox extends BaseSandbox {
427
579
  * const result = await sandbox.execute("ls -la");
428
580
  * ```
429
581
  */
430
- static fromId(id: string, options?: Pick<DenoSandboxOptions, "auth">): Promise<DenoSandbox>;
582
+ static fromId(id: string, options?: Pick<DenoSandboxOptions, "auth" | "token" | "org" | "apiEndpoint">): Promise<DenoSandbox>;
431
583
  }
432
584
  /**
433
585
  * Async factory function type for creating Deno Sandbox instances.
@@ -455,7 +607,7 @@ type AsyncDenoSandboxFactory = () => Promise<DenoSandbox>;
455
607
  * import { DenoSandbox, createDenoSandboxFactory } from "@langchain/deno";
456
608
  *
457
609
  * // Create a factory for new sandboxes
458
- * const factory = createDenoSandboxFactory({ memoryMb: 1024 });
610
+ * const factory = createDenoSandboxFactory({ memory: "1GiB" });
459
611
  *
460
612
  * // Each call creates a new sandbox
461
613
  * const sandbox1 = await factory();
@@ -488,7 +640,7 @@ declare function createDenoSandboxFactory(options?: DenoSandboxOptions): AsyncDe
488
640
  * import { DenoSandbox, createDenoSandboxFactoryFromSandbox } from "@langchain/deno";
489
641
  *
490
642
  * // Create and initialize a sandbox
491
- * const sandbox = await DenoSandbox.create({ memoryMb: 1024 });
643
+ * const sandbox = await DenoSandbox.create({ memory: "1GiB" });
492
644
  *
493
645
  * try {
494
646
  * const agent = createDeepAgent({
@@ -537,7 +689,7 @@ interface DenoCredentials {
537
689
  *
538
690
  * @param options - Optional authentication configuration from DenoSandboxOptions
539
691
  * @returns The authentication token string
540
- * @throws {Error} If no authentication token is available
692
+ * @throws {DenoSandboxError} If no authentication token is available
541
693
  *
542
694
  * @example
543
695
  * ```typescript
@@ -562,9 +714,9 @@ declare function getAuthToken(options?: DenoSandboxOptions["auth"]): string;
562
714
  *
563
715
  * @param options - Optional authentication configuration from DenoSandboxOptions
564
716
  * @returns Complete authentication credentials
565
- * @throws {Error} If no authentication token is available
717
+ * @throws {DenoSandboxError} If no authentication token is available
566
718
  */
567
719
  declare function getAuthCredentials(options?: DenoSandboxOptions["auth"]): DenoCredentials;
568
720
  //#endregion
569
- export { type AsyncDenoSandboxFactory, type DenoCredentials, DenoSandbox, DenoSandboxError, type DenoSandboxErrorCode, type DenoSandboxOptions, type DenoSandboxRegion, type SandboxLifetime, createDenoSandboxFactory, createDenoSandboxFactoryFromSandbox, getAuthCredentials, getAuthToken };
721
+ export { type AsyncDenoSandboxFactory, type DenoCredentials, DenoSandbox, DenoSandboxError, type DenoSandboxErrorCode, type DenoSandboxOptions, type DenoSandboxRegion, type SandboxLifetime, type SandboxTimeout, createDenoSandboxFactory, createDenoSandboxFactoryFromSandbox, getAuthCredentials, getAuthToken };
570
722
  //# sourceMappingURL=index.d.cts.map