@cloudflare/sandbox 0.13.0-next.681.1 → 0.13.0-next.709.1

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 (69) hide show
  1. package/Dockerfile +6 -6
  2. package/README.md +49 -3
  3. package/dist/bridge/index.d.ts.map +1 -1
  4. package/dist/bridge/index.js +1364 -1072
  5. package/dist/bridge/index.js.map +1 -1
  6. package/dist/{contexts-DY1LHU1v.d.ts → contexts-1EsLHByO.d.ts} +156 -20
  7. package/dist/contexts-1EsLHByO.d.ts.map +1 -0
  8. package/dist/{dist-BStBkGIC.js → dist-Duor5GbS.js} +7 -56
  9. package/dist/dist-Duor5GbS.js.map +1 -0
  10. package/dist/errors/index.d.ts +4 -4
  11. package/dist/errors/index.js +3 -3
  12. package/dist/{errors-k3B8orjH.js → errors-CXR0xBpw.js} +42 -10
  13. package/dist/errors-CXR0xBpw.js.map +1 -0
  14. package/dist/{errors-ewgSNicb.js → errors-QYlSkVGz.js} +402 -250
  15. package/dist/errors-QYlSkVGz.js.map +1 -0
  16. package/dist/extensions/index.d.ts +4 -2
  17. package/dist/extensions/index.js +5 -3
  18. package/dist/extensions-CFB2xHqY.js +1023 -0
  19. package/dist/extensions-CFB2xHqY.js.map +1 -0
  20. package/dist/filesystem-BWAZCZER.d.ts +732 -0
  21. package/dist/filesystem-BWAZCZER.d.ts.map +1 -0
  22. package/dist/git/index.d.ts +8 -19
  23. package/dist/git/index.d.ts.map +1 -1
  24. package/dist/git/index.js +16 -23
  25. package/dist/git/index.js.map +1 -1
  26. package/dist/index-Bs4bqXDR.d.ts +438 -0
  27. package/dist/index-Bs4bqXDR.d.ts.map +1 -0
  28. package/dist/{index-Dy6u9r60.d.ts → index-HNYBk-az.d.ts} +233 -179
  29. package/dist/index-HNYBk-az.d.ts.map +1 -0
  30. package/dist/index.d.ts +480 -11
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +6 -6
  33. package/dist/interpreter/index.d.ts +3 -1
  34. package/dist/interpreter/index.d.ts.map +1 -1
  35. package/dist/interpreter/index.js +46 -18
  36. package/dist/interpreter/index.js.map +1 -1
  37. package/dist/openai/index.d.ts +5 -5
  38. package/dist/openai/index.d.ts.map +1 -1
  39. package/dist/openai/index.js +11 -6
  40. package/dist/openai/index.js.map +1 -1
  41. package/dist/opencode/index.d.ts +7 -11
  42. package/dist/opencode/index.d.ts.map +1 -1
  43. package/dist/opencode/index.js +56 -85
  44. package/dist/opencode/index.js.map +1 -1
  45. package/dist/process-types-GStiZ8f8.d.ts +73 -0
  46. package/dist/process-types-GStiZ8f8.d.ts.map +1 -0
  47. package/dist/{sandbox-boKWPIcd.js → sandbox-Auuwfnur.js} +4152 -3359
  48. package/dist/sandbox-Auuwfnur.js.map +1 -0
  49. package/dist/sandbox-BbAabq93.d.ts +42 -0
  50. package/dist/sandbox-BbAabq93.d.ts.map +1 -0
  51. package/dist/xterm/index.d.ts +5 -1
  52. package/dist/xterm/index.d.ts.map +1 -1
  53. package/dist/xterm/index.js +55 -12
  54. package/dist/xterm/index.js.map +1 -1
  55. package/package.json +3 -2
  56. package/dist/codes-y-U76vnQ.d.ts +0 -79
  57. package/dist/codes-y-U76vnQ.d.ts.map +0 -1
  58. package/dist/contexts-DY1LHU1v.d.ts.map +0 -1
  59. package/dist/dist-BStBkGIC.js.map +0 -1
  60. package/dist/errors-ewgSNicb.js.map +0 -1
  61. package/dist/errors-k3B8orjH.js.map +0 -1
  62. package/dist/extensions-CepYdzro.js +0 -191
  63. package/dist/extensions-CepYdzro.js.map +0 -1
  64. package/dist/index-B7QgIs0N.d.ts +0 -1841
  65. package/dist/index-B7QgIs0N.d.ts.map +0 -1
  66. package/dist/index-Dy6u9r60.d.ts.map +0 -1
  67. package/dist/sandbox-DHNO89IF.d.ts +0 -828
  68. package/dist/sandbox-DHNO89IF.d.ts.map +0 -1
  69. package/dist/sandbox-boKWPIcd.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,8 +1,11 @@
1
- import { a as BucketUnmountError, c as S3FSMountError, i as BucketMountError, n as getSandbox, o as InvalidMountConfigError, r as ContainerProxy, s as MissingCredentialsError, t as Sandbox } from "./sandbox-DHNO89IF.js";
2
- import { A as ExecEvent, B as ISandbox, C as BaseExecOptions, D as CheckChangesResult, E as CheckChangesOptions, J as Process, K as MountBucketOptions, L as FileMetadata, M as ExecResult, N as ExecutionSession, P as FileChunk, R as FileStreamEvent, S as BackupOptions, T as BucketProvider, U as LocalMountBucketOptions, V as ListFilesOptions, W as LogEvent, Y as ProcessOptions, Z as ProcessStatus, _t as PtyOptions, at as SandboxOptions, b as TunnelInfo, bt as TerminalCreateOptions, c as QuickTunnelInfo, dt as WaitForPortOptions, et as RemoteMountBucketOptions, ft as WatchOptions, gt as isProcessStatus, ht as isProcess, it as SandboxExecOutput, j as ExecOptions, k as DirectoryBackup, lt as SessionOptions, mt as isExecResult, nt as RestoreBackupResult, ot as SandboxProcess, rt as SandboxExecOptions, s as NamedTunnelInfo, st as SandboxProcessPromise, ut as WaitForLogResult, vt as SandboxTerminal, w as BucketCredentials, x as TunnelOptions, xt as TerminalOptions, yt as TerminalConnectOptions, z as FileWatchSSEEvent } from "./index-B7QgIs0N.js";
3
- import "./codes-y-U76vnQ.js";
4
- import { M as RPCTransportContext, N as RPCTransportErrorKind } from "./contexts-DY1LHU1v.js";
5
- import { C as InvalidBackupConfigError, F as ProcessReadyTimeoutError, I as RPCTransportError, N as ProcessExitedBeforeReadyError, V as SessionTerminatedError, c as ContainerUnavailableError, i as BackupRestoreError, n as BackupExpiredError, r as BackupNotFoundError, t as BackupCreateError } from "./index-Dy6u9r60.js";
1
+ import { H as RPCTransportErrorKind, V as RPCTransportContext, Z as ErrorCode } from "./contexts-1EsLHByO.js";
2
+ import { c as WaitForLogResult, i as ProcessLogEvent, n as ProcessFailure, o as ProcessStatus, r as ProcessLogCursor, s as SandboxCommand, t as ProcessExit } from "./process-types-GStiZ8f8.js";
3
+ import { A as CreateTerminalOptions, C as BucketCredentials, D as MountBucketOptions, E as LocalMountBucketOptions, F as TerminalOutputOptions, G as ProcessTextOutputOptions, H as ProcessLogsOptions, I as TerminalOutputSubscriptionAPI, J as WaitForExitOptions, K as SandboxOptions, L as TerminalSnapshot, M as Terminal, N as TerminalOutputCursor, O as RemoteMountBucketOptions, P as TerminalOutputEvent, R as ExecOptions, S as BackupOptions, T as DirectoryBackup, U as ProcessOutput, W as ProcessOutputOptions, X as WaitForPortOptions, Y as WaitForLogOptions, _ as RenameFileResult, a as FileChunk, b as WriteFileResult, c as FileMetadata, d as ListFilesOptions, f as ListFilesResult, g as ReadFileStreamResult, h as ReadFileResult, i as DeleteFileResult, k as RestoreBackupResult, l as FileStreamEvent, m as MoveFileResult, o as FileEncoding, p as MkdirResult, q as SandboxProcess, r as CheckChangesResult, s as FileExistsResult, t as CheckChangesOptions, u as FileWatchSSEEvent, v as WatchOptions, w as BucketProvider } from "./filesystem-BWAZCZER.js";
4
+ import { t as ISandbox } from "./sandbox-BbAabq93.js";
5
+ import { _ as QuickTunnelInfo, d as sandboxRuntimeCall, f as ProcessPullSubscriptionRPC, g as NamedTunnelInfo, n as ExtensionRuntimeCall, p as ProcessRPCDescriptor, s as HTTPAuthInterceptorParams, v as TunnelInfo, y as TunnelOptions } from "./index-Bs4bqXDR.js";
6
+ import { $ as TerminalNotFoundError, G as ContainerUnavailableError, H as BackupExpiredError, J as InvalidTerminalCwdError, K as InvalidBackupConfigError, Q as TerminalControlError, U as BackupNotFoundError, V as BackupCreateError, W as BackupRestoreError, X as RPCTransportError, Y as OperationInterruptedError, Z as StaleTerminalHandleError, a as InvalidProcessCursorError, c as ProcessAbortedError, d as ProcessExitedBeforeReadyError, f as ProcessNotFoundError, g as StaleProcessHandleError, h as ProcessWaitTimeoutError, l as ProcessError, m as ProcessSpawnFailedError, n as RuntimeControlProtocolError, o as InvalidProcessCwdError, p as ProcessReadyTimeoutError, q as InvalidTerminalCursorError, s as InvalidProcessEnvironmentError, t as RuntimeIdentityInactiveError, u as ProcessExitedBeforeLogError } from "./index-HNYBk-az.js";
7
+ import { Container, ContainerProxy as ContainerProxy$1, ContainerStartConfigOptions } from "@cloudflare/containers";
8
+ import { RpcTarget, RpcTransport } from "capnweb";
6
9
 
7
10
  //#region src/file-stream.d.ts
8
11
 
@@ -60,14 +63,480 @@ declare function isDurableObjectCodeUpdateReset(error: unknown): boolean;
60
63
  */
61
64
  declare function isPlatformTransientError(error: unknown): boolean;
62
65
  //#endregion
66
+ //#region src/pty/rpc-types.d.ts
67
+ interface TerminalCapabilityRPC {
68
+ getSnapshot(): Promise<TerminalSnapshot | null>;
69
+ openOutput(options?: Omit<TerminalOutputOptions, 'signal'>): Promise<ProcessPullSubscriptionRPC<TerminalOutputEvent>>;
70
+ write(data: Uint8Array): Promise<void>;
71
+ resize(cols: number, rows: number): Promise<void>;
72
+ interrupt(): Promise<void>;
73
+ terminate(): Promise<void>;
74
+ authorizeConnection(): Promise<string>;
75
+ }
76
+ interface TerminalRPCDescriptor {
77
+ snapshot: TerminalSnapshot;
78
+ runtimeIncarnationID: string;
79
+ capability: TerminalCapabilityRPC;
80
+ }
81
+ //#endregion
63
82
  //#region src/pty/proxy.d.ts
64
- interface SandboxTerminalStub {
83
+ interface TerminalHandleStub {
84
+ get(id: string): Promise<TerminalSnapshot | null>;
85
+ output(id: string, options?: Omit<TerminalOutputOptions, 'signal'>): Promise<TerminalOutputSubscriptionAPI | ProcessPullSubscriptionRPC<TerminalOutputEvent>>;
86
+ write(id: string, data: Uint8Array): Promise<void>;
87
+ resize(id: string, cols: number, rows: number): Promise<void>;
88
+ interrupt(id: string): Promise<void>;
89
+ terminate(id: string): Promise<void>;
90
+ fetch(request: Request): Promise<Response>;
91
+ }
92
+ declare function proxyTerminal(stub: Pick<TerminalHandleStub, 'fetch'>, terminalId: string, request: Request, options: {
93
+ cursor?: TerminalOutputCursor;
94
+ cols?: number;
95
+ rows?: number;
96
+ runtimeIncarnationID: string;
97
+ }): Promise<Response>;
98
+ //#endregion
99
+ //#region src/backup/restore-fault-injection.d.ts
100
+ type BackupRestoreFaultPhase = 'after_archive_ready';
101
+ type BackupRestoreTestFault = {
102
+ phase: BackupRestoreFaultPhase;
103
+ mode: 'transport_disposed';
104
+ times: number;
105
+ };
106
+ //#endregion
107
+ //#region src/storage-mount/errors.d.ts
108
+ /**
109
+ * Base error for bucket mounting operations
110
+ */
111
+ declare class BucketMountError extends Error {
112
+ readonly code: ErrorCode;
113
+ constructor(message: string, code?: ErrorCode);
114
+ }
115
+ /**
116
+ * Thrown when S3FS mount command fails
117
+ */
118
+ declare class S3FSMountError extends BucketMountError {
119
+ constructor(message: string);
120
+ }
121
+ /**
122
+ * Thrown when fusermount -u fails to unmount a FUSE filesystem
123
+ */
124
+ declare class BucketUnmountError extends BucketMountError {
125
+ constructor(message: string);
126
+ }
127
+ /**
128
+ * Thrown when no credentials found in environment
129
+ */
130
+ declare class MissingCredentialsError extends BucketMountError {
131
+ constructor(message: string);
132
+ }
133
+ /**
134
+ * Thrown when bucket name, mount path, or options are invalid
135
+ */
136
+ declare class InvalidMountConfigError extends BucketMountError {
137
+ constructor(message: string);
138
+ }
139
+ //#endregion
140
+ //#region src/storage-mount/outbound/container-proxy.d.ts
141
+ declare class ContainerProxy extends ContainerProxy$1 {
142
+ fetch(request: Request): Promise<Response>;
143
+ }
144
+ //#endregion
145
+ //#region src/tunnels/tunnel-service.d.ts
146
+ interface TunnelsHandler {
147
+ get(port: number, options?: TunnelOptions): Promise<TunnelInfo>;
148
+ list(): Promise<TunnelInfo[]>;
149
+ destroy(portOrInfo: number | TunnelInfo): Promise<void>;
150
+ }
151
+ //#endregion
152
+ //#region src/sandbox.d.ts
153
+ type SandboxConfiguration = {
154
+ sandboxName?: {
155
+ name: string;
156
+ normalizeId?: boolean;
157
+ };
158
+ sleepAfter?: string | number;
159
+ keepAlive?: boolean;
160
+ containerTimeouts?: NonNullable<SandboxOptions['containerTimeouts']>;
161
+ };
162
+ type InternalSandboxRPCMethod = 'authorizePortRequest';
163
+ type SandboxClient<T> = Omit<T, keyof ISandbox | InternalSandboxRPCMethod> & ISandbox;
164
+ type CancellationOptions = {
165
+ abort?: AbortSignal;
166
+ instanceGetTimeoutMS?: number;
167
+ portReadyTimeoutMS?: number;
168
+ waitInterval?: number;
169
+ };
170
+ type StartAndWaitForPortsOptions = {
171
+ startOptions?: ContainerStartConfigOptions;
172
+ ports?: number | number[];
173
+ cancellationOptions?: CancellationOptions;
174
+ };
175
+ declare function getSandbox<T extends Sandbox<any>>(ns: DurableObjectNamespace<T>, id: string, options?: SandboxOptions): SandboxClient<T>;
176
+ declare class Sandbox<Env = unknown> extends Container<Env> {
177
+ #private;
178
+ defaultPort: number;
179
+ sleepAfter: string | number;
180
+ private runtimeSessions;
181
+ private runtimeLifecycle;
182
+ private runtimeRunner;
183
+ private sandboxName;
184
+ private tunnelServiceHandle;
185
+ private tunnelsHandler;
186
+ private tunnelExitHandler;
187
+ private readonly controlCallback;
188
+ private normalizeId;
189
+ envVars: Record<string, string>;
190
+ private readonly portRequestTokens;
191
+ private logger;
192
+ private keepAliveEnabled;
193
+ private bucketMounts;
194
+ private currentLifetime;
195
+ private backupService;
196
+ private previewService;
197
+ private resourceActivityGate;
198
+ private r2AccessKeyId;
199
+ private r2SecretAccessKey;
200
+ private namedTunnelConfigResolver;
201
+ /**
202
+ * Default container startup timeouts (conservative for production)
203
+ * Based on Cloudflare docs: "Containers take several minutes to provision"
204
+ */
205
+ private readonly DEFAULT_CONTAINER_TIMEOUTS;
206
+ /**
207
+ * Active container timeout configuration
208
+ * Can be set via options, env vars, or defaults
209
+ */
210
+ private containerTimeouts;
211
+ /**
212
+ * True once containerTimeouts has been written to storage at least once
213
+ * (either via setContainerTimeouts or restored on cold start). Gates the
214
+ * idempotency check in setContainerTimeouts so a first explicit call
215
+ * persists even when the requested values already equal the in-memory
216
+ * defaults, distinguishing "user intent recorded" from "running on
217
+ * env/SDK defaults".
218
+ */
219
+ private hasStoredContainerTimeouts;
220
+ /**
221
+ * Dispatch method for tunnel operations.
222
+ * Called by the client-side proxy created in getSandbox() to provide
223
+ * the `sandbox.tunnels` API without relying on RPC pipelining through
224
+ * property getters, which vite-plugin does not currently support. This
225
+ * local method dispatch uses standard function application, so new
226
+ * Workers RPC pipelining traits on `TunnelsRpcTarget` also need an
227
+ * explicit path here before the proxy can expose them.
228
+ */
229
+ callTunnels(method: string, args: unknown[]): Promise<unknown>;
230
+ callExtension(extensionName: string, method: string, args: unknown[]): Promise<unknown>;
231
+ private renewActivityTimeoutIfAvailable;
232
+ private getRuntimePortStub;
233
+ constructor(ctx: DurableObjectState<{}>, env: Env);
234
+ setSandboxName(name: string, normalizeId?: boolean): Promise<void>;
235
+ configure(configuration: SandboxConfiguration): Promise<void>;
236
+ setSleepAfter(sleepAfter: string | number): Promise<void>;
237
+ setKeepAlive(keepAlive: boolean): Promise<void>;
238
+ setEnvVars(envVars: Record<string, string | undefined>): Promise<void>;
239
+ setContainerTimeouts(timeouts: NonNullable<SandboxOptions['containerTimeouts']>): Promise<void>;
240
+ private validateTimeout;
241
+ private getDefaultTimeouts;
242
+ /**
243
+ * Mount an S3-compatible bucket as a local directory.
244
+ */
245
+ mountBucket(bucket: string, mountPath: string, options: MountBucketOptions): Promise<void>;
246
+ /**
247
+ * Manually unmount a bucket filesystem.
248
+ */
249
+ unmountBucket(mountPath: string): Promise<void>;
250
+ /**
251
+ * In-flight `destroy()` promise. While set, concurrent callers coalesce
252
+ * onto the same teardown instead of triggering a second one. Cleared when
253
+ * the underlying work settles, so a later call that genuinely needs to
254
+ * recreate a destroyed sandbox still runs.
255
+ *
256
+ * If the underlying teardown hangs (e.g. `super.destroy()` never resolves
257
+ * because the Containers control plane is unresponsive), every coalesced
258
+ * caller hangs on the same promise until the Durable Object is evicted.
259
+ * This is deliberate: a second concurrent teardown would not make a stuck
260
+ * control plane unstuck, and spawning one would defeat the point of
261
+ * coalescing. Callers that need bounded waits must apply their own
262
+ * timeout around `destroy()`.
263
+ */
264
+ private inflightDestroy;
265
+ /**
266
+ * Cleanup and destroy the sandbox container.
267
+ *
268
+ * Concurrent calls coalesce: if a previous `destroy()` is still in flight,
269
+ * subsequent calls await the same underlying work instead of starting a
270
+ * second teardown. A canonical `sandbox.destroy.coalesced` event is logged
271
+ * per coalesced call so repeated destroy traffic is observable.
272
+ */
273
+ destroy(): Promise<void>;
274
+ private doDestroy;
275
+ private performRuntimeStop;
276
+ private runBoundedDestroyRuntimeCleanup;
277
+ private cleanupRuntimeBeforeDestroy;
278
+ private createTeardownTunnelsHandle;
279
+ private createDurableDestroyTunnelsHandle;
280
+ private createDestroyTunnelsHandle;
281
+ onStart(): Promise<void>;
282
+ start(options?: Parameters<Container<Env>['start']>[0]): Promise<void>;
283
+ startAndWaitForPorts(args: StartAndWaitForPortsOptions): Promise<void>;
284
+ startAndWaitForPorts(portsOrArgs?: number | number[] | StartAndWaitForPortsOptions, cancellationOptions?: CancellationOptions, startOptions?: ContainerStartConfigOptions): Promise<void>;
285
+ stop(signal?: Parameters<Container<Env>['stop']>[0]): Promise<void>;
286
+ onStop(): Promise<void>;
287
+ onError(error: unknown): void;
288
+ /**
289
+ * Override Container.containerFetch to route direct forwarding through runtime admission.
290
+ */
291
+ containerFetch(requestOrUrl: Request | string | URL, portOrInit?: number | RequestInit, portParam?: number): Promise<Response>;
292
+ private containerStartupErrorResponse;
293
+ /**
294
+ * Helper: Check if error is "no container instance available"
295
+ * This indicates the container VM is still being provisioned.
296
+ */
297
+ private isNoInstanceError;
298
+ /**
299
+ * Helper: Check if error is a transient startup error that should trigger retry
300
+ *
301
+ * These errors occur during normal container startup and are recoverable:
302
+ * - Port not yet mapped (container starting, app not listening yet)
303
+ * - Connection refused (port mapped but app not ready)
304
+ * - Timeouts during startup (recoverable with retry)
305
+ * - Network transients (temporary connectivity issues)
306
+ *
307
+ * Errors NOT included (permanent failures):
308
+ * - "no such image" - missing Docker image
309
+ * - "container already exists" - name collision
310
+ * - Configuration errors
311
+ */
312
+ private isTransientStartupError;
313
+ /**
314
+ * Helper: Check if error is a permanent startup failure that will never recover
315
+ *
316
+ * These errors indicate resource exhaustion, misconfiguration, or missing images.
317
+ * Retrying will never succeed, so the SDK should fail fast with HTTP 500.
318
+ *
319
+ * Error sources (traced from platform internals):
320
+ * - Container runtime: OOM, PID limit
321
+ * - Scheduling/provisioning: no matching app, no namespace configured
322
+ * - workerd container-client.c++: no such image
323
+ * - @cloudflare/containers: did not call start
324
+ */
325
+ private isPermanentStartupError;
326
+ /**
327
+ * Helper: Parse containerFetch arguments (supports multiple signatures)
328
+ */
329
+ private parseContainerFetchArgs;
330
+ onActivityExpired(): Promise<void>;
331
+ private getPreviewForwardingContainer;
65
332
  fetch(request: Request): Promise<Response>;
66
- createTerminal(options: TerminalCreateOptions): Promise<unknown>;
67
- destroyTerminal(id: string): Promise<void>;
333
+ wsConnect(request: Request, port: number): Promise<Response>;
334
+ authorizePortRequest(port: number, path: string): Promise<string>;
335
+ private connectWebSocket;
336
+ createTerminal(options: CreateTerminalOptions): Promise<TerminalRPCDescriptor>;
337
+ getTerminal(id: string): Promise<TerminalRPCDescriptor | null>;
338
+ listTerminals(): Promise<TerminalRPCDescriptor[]>;
339
+ private terminalDescriptor;
340
+ private terminalStub;
341
+ private determinePort;
342
+ exec(command: SandboxCommand, options?: ExecOptions): Promise<ProcessRPCDescriptor>;
343
+ private processDescriptor;
344
+ private processCapabilityLifecycle;
345
+ /** Internal bridge liveness read that neither starts nor renews a runtime. */
346
+ isRuntimeActive(): Promise<boolean>;
347
+ getProcess(id: string): Promise<ProcessRPCDescriptor | null>;
348
+ listProcesses(): Promise<ProcessStatus[]>;
349
+ mkdir(path: string, options?: {
350
+ recursive?: boolean;
351
+ }): Promise<MkdirResult>;
352
+ writeFile(path: string, content: string | ReadableStream<Uint8Array>, options?: {
353
+ encoding?: string;
354
+ }): Promise<{
355
+ success: boolean;
356
+ path: string;
357
+ bytesWritten: number;
358
+ timestamp: string;
359
+ } | WriteFileResult>;
360
+ deleteFile(path: string): Promise<DeleteFileResult>;
361
+ renameFile(oldPath: string, newPath: string): Promise<RenameFileResult>;
362
+ moveFile(sourcePath: string, destinationPath: string): Promise<MoveFileResult>;
363
+ /**
364
+ * Read a file from the sandbox.
365
+ *
366
+ * @param encoding - How to encode the returned content:
367
+ * - `undefined` (default): auto-detect from MIME type (text → UTF-8 string, binary → base64 string)
368
+ * - `'utf-8'` / `'utf8'`: always return as UTF-8 string
369
+ * - `'base64'`: always return as base64-encoded string
370
+ * - `'none'`: return a result whose `content` is a raw binary `ReadableStream<Uint8Array>`
371
+ * with no encoding overhead.
372
+ */
373
+ readFile(path: string, options: {
374
+ encoding: 'none';
375
+ }): Promise<ReadFileStreamResult>;
376
+ readFile(path: string, options?: {
377
+ encoding?: Exclude<FileEncoding, 'none'>;
378
+ }): Promise<ReadFileResult>;
379
+ /**
380
+ * Stream a file from the sandbox using Server-Sent Events
381
+ * Returns a ReadableStream that can be consumed with streamFile() or collectFile() utilities
382
+ * @param path - Path to the file to stream
383
+ */
384
+ createWorkspaceArchive(options?: {
385
+ root: string;
386
+ excludes?: readonly string[];
387
+ }): Promise<string>;
388
+ extractWorkspaceArchive(options: {
389
+ root: string;
390
+ archivePath: string;
391
+ }): Promise<void>;
392
+ cleanupWorkspaceArchive(archivePath: string): Promise<void>;
393
+ cleanupMountDirectory(mountPath: string): Promise<void>;
394
+ readFileStream(path: string): Promise<ReadableStream<Uint8Array>>;
395
+ listFiles(path: string, options?: ListFilesOptions): Promise<ListFilesResult>;
396
+ exists(path: string): Promise<FileExistsResult>;
397
+ /**
398
+ * Watch a directory for file system changes using native inotify.
399
+ *
400
+ * The returned promise resolves only after the watcher is established on the
401
+ * filesystem, so callers can immediately perform actions that depend on the
402
+ * watch being active. The returned stream contains the full event sequence
403
+ * starting with the `watching` event.
404
+ *
405
+ * Consume the stream with `parseSSEStream<FileWatchSSEEvent>(stream)`.
406
+ *
407
+ * @param path - Path to watch (absolute or relative to /workspace)
408
+ * @param options - Watch options
409
+ */
410
+ watch(path: string, options?: WatchOptions): Promise<ReadableStream<Uint8Array>>;
411
+ /**
412
+ * Check whether a path changed while this caller was disconnected.
413
+ *
414
+ * Pass the `version` returned from a prior call in `options.since` to learn
415
+ * whether the path is unchanged, changed, or needs a full resync because the
416
+ * retained change state was reset.
417
+ *
418
+ * @param path - Path to check (absolute or relative to /workspace)
419
+ * @param options - Change-check options
420
+ */
421
+ checkChanges(path: string, options?: CheckChangesOptions): Promise<CheckChangesResult>;
422
+ /**
423
+ * Expose a port and get a preview URL for accessing services running in the sandbox
424
+ *
425
+ * Preview URL authorization survives transient container restarts, but
426
+ * forwarding is active only for the runtime where `exposePort()` was last
427
+ * called. Call `exposePort()` again after a restart to reactivate an
428
+ * existing URL for the current runtime.
429
+ *
430
+ * @param port - Port number to expose (1024-65535)
431
+ * @param options - Configuration options
432
+ * @param options.hostname - Your Worker's domain name (required for preview URL construction)
433
+ * @param options.name - Optional friendly name for the port
434
+ * @param options.token - Optional custom token for the preview URL (1-16 characters: lowercase letters, numbers, underscores)
435
+ * If not provided, a random 16-character token will be generated automatically
436
+ * @returns Preview URL information including the full URL, port number, and optional name
437
+ *
438
+ * @example
439
+ * // With auto-generated token
440
+ * const { url } = await sandbox.exposePort(8080, { hostname: 'example.com' });
441
+ * // url: https://8080-sandbox-id-abc123random4567.example.com
442
+ *
443
+ * @example
444
+ * // With custom token for stable URLs across deployments
445
+ * const { url } = await sandbox.exposePort(8080, {
446
+ * hostname: 'example.com',
447
+ * token: 'my_token_v1'
448
+ * });
449
+ * // url: https://8080-sandbox-id-my_token_v1.example.com
450
+ */
451
+ private runWakingComposite;
452
+ [sandboxRuntimeCall]: ExtensionRuntimeCall;
453
+ exposePort(port: number, options: {
454
+ name?: string;
455
+ hostname: string;
456
+ token?: string;
457
+ }): Promise<{
458
+ url: string;
459
+ port: number;
460
+ name?: string;
461
+ }>;
462
+ /**
463
+ * Revoke preview URL authorization and current-runtime activation for a port.
464
+ *
465
+ * Revocation is idempotent: calling this for a port with no preview state is
466
+ * still successful. The operation clears Durable Object-owned preview state
467
+ * only and does not contact, probe, wake, or clean up the container runtime.
468
+ */
469
+ unexposePort(port: number): Promise<void>;
470
+ /**
471
+ * Returns preview URLs that are currently forwardable in the active runtime.
472
+ * Durable authorization without current-runtime activation is omitted.
473
+ */
474
+ getExposedPorts(hostname: string): Promise<{
475
+ url: string;
476
+ port: number;
477
+ status: "active";
478
+ }[]>;
479
+ /**
480
+ * Returns whether a port is currently preview-forwardable.
481
+ * This checks Durable Object-owned auth and runtime activation without
482
+ * contacting or waking the container.
483
+ */
484
+ isPortExposed(port: number): Promise<boolean>;
485
+ /**
486
+ * Checks durable preview URL authorization for a port/token pair.
487
+ *
488
+ * This does not check whether the port is activated for the current runtime
489
+ * and is not sufficient to decide whether preview traffic may forward.
490
+ */
491
+ validatePortToken(port: number, token: string): Promise<boolean>;
492
+ /**
493
+ * Namespaced tunnel API. Quick tunnels are zero-config preview URLs
494
+ * backed by Cloudflare's trycloudflare service. Named tunnels bind a
495
+ * stable hostname under the configured Cloudflare zone.
496
+ *
497
+ * - `tunnels.get(port)` — idempotent. Returns the cached tunnel for
498
+ * `port` if one exists in DO storage, otherwise spawns a fresh
499
+ * cloudflared process and persists the record.
500
+ * - `tunnels.list()` — returns tunnels currently usable through this
501
+ * sandbox runtime.
502
+ * - `tunnels.destroy(portOrInfo)` — tear down by port number or by
503
+ * the record returned from `get()`.
504
+ *
505
+ * Container restarts drop quick-tunnel records because their
506
+ * `*.trycloudflare.com` URLs are tied to the dead cloudflared process.
507
+ * Named-tunnel records stay in storage and are marked for respawn so the
508
+ * next `get(port, { name })` call reuses the Cloudflare tunnel and DNS
509
+ * record while starting a fresh cloudflared process.
510
+ */
511
+ get tunnels(): TunnelsHandler;
512
+ /**
513
+ * Lazily construct the tunnel subsystem handle. Called from the
514
+ * `tunnels` getter on first access and from sandbox lifecycle hooks
515
+ * when tunnel reconciliation or cleanup is needed.
516
+ */
517
+ private ensureTunnelsBuilt;
518
+ /**
519
+ * Create a backup of a directory and upload it to R2.
520
+ *
521
+ * The returned DirectoryBackup handle is serializable. Store it anywhere
522
+ * (KV, D1, DO storage) and pass it to restoreBackup() later.
523
+ *
524
+ * Concurrent backup/restore calls on the same sandbox are serialized.
525
+ */
526
+ createBackup(options: BackupOptions): Promise<DirectoryBackup>;
527
+ /**
528
+ * Restore a backup from R2 into a directory.
529
+ *
530
+ * Production restores use a FUSE overlay mount. Local-bucket restores stream
531
+ * the archive through the R2 binding and extract it with unsquashfs.
532
+ *
533
+ * Concurrent backup/restore calls on the same sandbox are serialized.
534
+ */
535
+ restoreBackup(backup: DirectoryBackup): Promise<RestoreBackupResult>;
536
+ __setBackupRestoreFaultForTesting(fault: BackupRestoreTestFault | null): Promise<void>;
537
+ registerGitAuthInterceptor(params: HTTPAuthInterceptorParams): Promise<void>;
538
+ private getMountOutboundHost;
68
539
  }
69
- declare function createSandboxTerminal(stub: SandboxTerminalStub, options?: TerminalOptions): SandboxTerminal;
70
- declare function proxyTerminal(stub: SandboxTerminalStub, terminalId: string, request: Request, options?: TerminalOptions, connectOptions?: TerminalConnectOptions): Promise<Response>;
71
540
  //#endregion
72
541
  //#region src/request-handler.d.ts
73
542
  interface SandboxEnv<T extends Sandbox<any> = Sandbox<any>> {
@@ -103,5 +572,5 @@ declare function asyncIterableToSSEStream<T>(events: AsyncIterable<T>, options?:
103
572
  serialize?: (event: T) => string;
104
573
  }): ReadableStream<Uint8Array>;
105
574
  //#endregion
106
- export { BackupCreateError, BackupExpiredError, BackupNotFoundError, type BackupOptions, BackupRestoreError, type BaseExecOptions, type BucketCredentials, BucketMountError, type BucketProvider, BucketUnmountError, type CheckChangesOptions, type CheckChangesResult, ContainerProxy, ContainerUnavailableError, type DirectoryBackup, type ExecEvent, type ExecOptions, type ExecResult, type ExecutionSession, type FileChunk, type FileMetadata, type FileStreamEvent, type FileWatchSSEEvent, type ISandbox, InvalidBackupConfigError, InvalidMountConfigError, type ListFilesOptions, type LocalMountBucketOptions, type LogEvent, MissingCredentialsError, type MountBucketOptions, type NamedTunnelInfo, type Process, ProcessExitedBeforeReadyError, type ProcessOptions, ProcessReadyTimeoutError, type ProcessStatus, type PtyOptions, type QuickTunnelInfo, type RPCTransportContext, RPCTransportError, type RPCTransportErrorKind, type RemoteMountBucketOptions, type RestoreBackupResult, S3FSMountError, Sandbox, type SandboxEnv, type SandboxExecOptions, type SandboxExecOutput, type SandboxOptions, type SandboxProcess, type SandboxProcessPromise, type SessionOptions, SessionTerminatedError, type TerminalOptions, type TunnelInfo, type TunnelOptions, type WaitForLogResult, type WaitForPortOptions, type WatchOptions, asyncIterableToSSEStream, collectFile, createSandboxTerminal, getSandbox, isDurableObjectCodeUpdateReset, isExecResult, isPlatformTransientError, isProcess, isProcessStatus, parseSSEStream, proxyTerminal, proxyToSandbox, responseToAsyncIterable, streamFile };
575
+ export { BackupCreateError, BackupExpiredError, BackupNotFoundError, type BackupOptions, BackupRestoreError, type BucketCredentials, BucketMountError, type BucketProvider, BucketUnmountError, type CheckChangesOptions, type CheckChangesResult, ContainerProxy, ContainerUnavailableError, type CreateTerminalOptions, type DirectoryBackup, type ExecOptions, type FileChunk, type FileMetadata, type FileStreamEvent, type FileWatchSSEEvent, type ISandbox, InvalidBackupConfigError, InvalidMountConfigError, InvalidProcessCursorError, InvalidProcessCwdError, InvalidProcessEnvironmentError, InvalidTerminalCursorError, InvalidTerminalCwdError, type ListFilesOptions, type LocalMountBucketOptions, MissingCredentialsError, type MountBucketOptions, type NamedTunnelInfo, OperationInterruptedError, ProcessAbortedError, ProcessError, type ProcessExit, ProcessExitedBeforeLogError, ProcessExitedBeforeReadyError, type ProcessFailure, type ProcessLogCursor, type ProcessLogEvent, type ProcessLogsOptions, ProcessNotFoundError, type ProcessOutput, type ProcessOutputOptions, ProcessReadyTimeoutError, ProcessSpawnFailedError, type ProcessStatus, type ProcessTextOutputOptions, ProcessWaitTimeoutError, type QuickTunnelInfo, type RPCTransportContext, RPCTransportError, type RPCTransportErrorKind, type RemoteMountBucketOptions, type RestoreBackupResult, RuntimeControlProtocolError, RuntimeIdentityInactiveError, S3FSMountError, Sandbox, type SandboxCommand, type SandboxEnv, type SandboxOptions, type SandboxProcess, StaleProcessHandleError, StaleTerminalHandleError, type Terminal, TerminalControlError, TerminalNotFoundError, type TerminalOutputCursor, type TerminalOutputEvent, type TerminalOutputOptions, type TerminalSnapshot, type TunnelInfo, type TunnelOptions, type WaitForExitOptions, type WaitForLogOptions, type WaitForLogResult, type WaitForPortOptions, type WatchOptions, asyncIterableToSSEStream, collectFile, getSandbox, isDurableObjectCodeUpdateReset, isPlatformTransientError, parseSSEStream, proxyTerminal, proxyToSandbox, responseToAsyncIterable, streamFile };
107
576
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/file-stream.ts","../src/platform-errors.ts","../src/pty/proxy.ts","../src/request-handler.ts","../src/sse-parser.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;;AAmFA;;;;;;;AA+DA;;;;;;;iBA/DuB,UAAA,SACb,eAAe,cACtB,eAAe,WAAW;;;AC3C7B;AAaA;;;;ACjDsB;;;;;;;AAKgB,iBFuIhB,WAAA,CEvIgB,MAAA,EFuII,cEvIJ,CFuImB,UEvInB,CAAA,CAAA,EFuIiC,OEvIjC,CAAA;EAetB,OAAA,EAAA,MAAA,GFyHI,UEzHiB;EAC7B,QAAA,EFyHI,YEzHJ;CACI,CAAA;;;;;;;;;iBDcI,8BAAA;ADyChB;;;;AAE6B,iBC9Bb,wBAAA,CD8Ba,KAAA,EAAA,OAAA,CAAA,EAAA,OAAA;;;UE7EnB,mBAAA;iBACO,UAAU,QAAQ;0BACT,wBAAwB;+BACnB;;iBAef,qBAAA,OACR,+BACI,kBACT;AFsDoB,iBE3CD,aAAA,CF2CW,IAAA,EE1CzB,mBF0CyB,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,EExCtB,OFwCsB,EAAA,OAAA,CAAA,EEvCrB,eFuCqB,EAAA,cAAA,CAAA,EEtCd,sBFsCc,CAAA,EErC9B,OFqC8B,CErCtB,QFqCsB,CAAA;;;UG9EhB,qBAAqB,eAAe;WAC1C,uBAAuB;;iBAaZ,yBACV,wBACA,WAAW,aACZ,cAAc,IAAI,QAAQ;;;;;;;;;;AH6DrC;;AACU,iBIxEa,cJwEb,CAAA,CAAA,CAAA,CAAA,MAAA,EIvEA,cJuEA,CIvEe,UJuEf,CAAA,EAAA,MAAA,CAAA,EItEC,WJsED,CAAA,EIrEP,aJqEO,CIrEO,CJqEP,CAAA;;;;;AA8DV;AAAyD,iBI3ClC,uBJ2CkC,CAAA,CAAA,CAAA,CAAA,QAAA,EI1C7C,QJ0C6C,EAAA,MAAA,CAAA,EIzC9C,WJyC8C,CAAA,EIxCtD,aJwCsD,CIxCxC,CJwCwC,CAAA;;;;;;;iBIpBzC,oCACN,cAAc,WHxExB;WG0Ea;EHvFG,SAAA,CAAA,EAAA,CAAA,KAAA,EGwFQ,CHxFR,EAAA,GAAA,MAAA;AAahB,CAAA,CAAA,EG6EG,cH7Ea,CG6EE,UH7EF,CAAA"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/file-stream.ts","../src/platform-errors.ts","../src/pty/rpc-types.ts","../src/pty/proxy.ts","../src/backup/restore-fault-injection.ts","../src/storage-mount/errors.ts","../src/storage-mount/outbound/container-proxy.ts","../src/tunnels/tunnel-service.ts","../src/sandbox.ts","../src/request-handler.ts","../src/sse-parser.ts"],"sourcesContent":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
- import { l as TraceContext, n as isProcess, r as isProcessStatus, s as createLogger, t as isExecResult } from "./dist-BStBkGIC.js";
2
- import "./errors-k3B8orjH.js";
3
- import { H as SessionTerminatedError, I as ProcessReadyTimeoutError, L as RPCTransportError, P as ProcessExitedBeforeReadyError, a as BackupRestoreError, i as BackupNotFoundError, l as ContainerUnavailableError, n as BackupCreateError, r as BackupExpiredError, w as InvalidBackupConfigError } from "./errors-ewgSNicb.js";
4
- import { S as streamFile, _ as createSandboxTerminal, a as responseToAsyncIterable, b as isPlatformTransientError, c as BucketUnmountError, d as S3FSMountError, f as parsePreviewRoute, i as parseSSEStream, l as InvalidMountConfigError, n as getSandbox, o as ContainerProxy, p as withPreviewProxyMetadata, r as asyncIterableToSSEStream, s as BucketMountError, t as Sandbox, u as MissingCredentialsError, v as proxyTerminal, x as collectFile, y as isDurableObjectCodeUpdateReset } from "./sandbox-boKWPIcd.js";
5
- import "./extensions-CepYdzro.js";
1
+ import "./errors-CXR0xBpw.js";
2
+ import { $ as TerminalControlError, G as BackupRestoreError, H as BackupCreateError, J as InvalidTerminalCursorError, K as ContainerUnavailableError, Q as StaleTerminalHandleError, U as BackupExpiredError, W as BackupNotFoundError, X as OperationInterruptedError, Y as InvalidTerminalCwdError, Z as RPCTransportError, _ as StaleProcessHandleError, c as InvalidProcessEnvironmentError, d as ProcessExitedBeforeLogError, et as TerminalNotFoundError, f as ProcessExitedBeforeReadyError, g as ProcessWaitTimeoutError, h as ProcessSpawnFailedError, l as ProcessAbortedError, m as ProcessReadyTimeoutError, n as RuntimeIdentityInactiveError, o as InvalidProcessCursorError, p as ProcessNotFoundError, q as InvalidBackupConfigError, r as RuntimeControlProtocolError, s as InvalidProcessCwdError, u as ProcessError } from "./errors-QYlSkVGz.js";
3
+ import { a as TraceContext, r as createLogger } from "./dist-Duor5GbS.js";
4
+ import { _ as proxyTerminal, a as responseToAsyncIterable, b as collectFile, c as BucketUnmountError, d as S3FSMountError, f as parsePreviewRoute, i as parseSSEStream, l as InvalidMountConfigError, n as getSandbox, o as ContainerProxy, p as withPreviewProxyMetadata, r as asyncIterableToSSEStream, s as BucketMountError, t as Sandbox, u as MissingCredentialsError, v as isDurableObjectCodeUpdateReset, x as streamFile, y as isPlatformTransientError } from "./sandbox-Auuwfnur.js";
5
+ import "./extensions-CFB2xHqY.js";
6
6
 
7
7
  //#region src/request-handler.ts
8
8
  function createProxyLogger(request) {
@@ -29,5 +29,5 @@ async function proxyToSandbox(request, env) {
29
29
  }
30
30
 
31
31
  //#endregion
32
- export { BackupCreateError, BackupExpiredError, BackupNotFoundError, BackupRestoreError, BucketMountError, BucketUnmountError, ContainerProxy, ContainerUnavailableError, InvalidBackupConfigError, InvalidMountConfigError, MissingCredentialsError, ProcessExitedBeforeReadyError, ProcessReadyTimeoutError, RPCTransportError, S3FSMountError, Sandbox, SessionTerminatedError, asyncIterableToSSEStream, collectFile, createSandboxTerminal, getSandbox, isDurableObjectCodeUpdateReset, isExecResult, isPlatformTransientError, isProcess, isProcessStatus, parseSSEStream, proxyTerminal, proxyToSandbox, responseToAsyncIterable, streamFile };
32
+ export { BackupCreateError, BackupExpiredError, BackupNotFoundError, BackupRestoreError, BucketMountError, BucketUnmountError, ContainerProxy, ContainerUnavailableError, InvalidBackupConfigError, InvalidMountConfigError, InvalidProcessCursorError, InvalidProcessCwdError, InvalidProcessEnvironmentError, InvalidTerminalCursorError, InvalidTerminalCwdError, MissingCredentialsError, OperationInterruptedError, ProcessAbortedError, ProcessError, ProcessExitedBeforeLogError, ProcessExitedBeforeReadyError, ProcessNotFoundError, ProcessReadyTimeoutError, ProcessSpawnFailedError, ProcessWaitTimeoutError, RPCTransportError, RuntimeControlProtocolError, RuntimeIdentityInactiveError, S3FSMountError, Sandbox, StaleProcessHandleError, StaleTerminalHandleError, TerminalControlError, TerminalNotFoundError, asyncIterableToSSEStream, collectFile, getSandbox, isDurableObjectCodeUpdateReset, isPlatformTransientError, parseSSEStream, proxyTerminal, proxyToSandbox, responseToAsyncIterable, streamFile };
33
33
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,6 @@
1
- import { i as SandboxLike, r as SandboxExtension } from "../index-B7QgIs0N.js";
1
+ import "../process-types-GStiZ8f8.js";
2
+ import "../filesystem-BWAZCZER.js";
3
+ import { c as SandboxExtension, l as SandboxLike } from "../index-Bs4bqXDR.js";
2
4
 
3
5
  //#region ../../extensions/interpreter/src/types.d.ts
4
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../extensions/interpreter/src/types.ts","../../../../extensions/interpreter/src/index.ts"],"sourcesContent":[],"mappings":";;;;;;;AASA;AA0BA;AA4BA;;AAgBY,UAtEK,oBAAA,CAsEL;EAWD;;;;EAUoC,QAAA,CAAA,EAAA,QAAA,GAAA,YAAA,GAAA,YAAA;EAOzB;;;;EAK+B,GAAA,CAAA,EAAA,MAAA;EAIpC;AAajB;AA0DA;AAQA;EA6CiB,OAAA,CAAA,EAtNL,MAsNK,CAAc,MAAA,EAAA,MAAA,GAAA,SAAA,CAAA;EAuBd;AAYjB;;;EAiBiB,OAAA,CAAA,EAAA,MAAA;;AAeL,UAhRK,WAAA,CAgRL;EAAe;AA6B3B;AA+CA;;;;AC/RA;EAGuB,SAAA,QAAA,EAAA,MAAA;EAMV;;;EAgBA,SAAA,GAAA,EAAA,MAAA;EACA;;;EAmBe,SAAA,SAAA,EDvFN,ICuFM;EAAf;;;EAyBe,SAAA,QAAA,ED3GP,IC2GO;;AAtEK,UDjChB,cAAA,CCiCgB;EAAgB;AA+IjD;;YD5KY;;;;;;;;;;YAYA;;;;;;;;;WAWD;;;;sBAKW,yBAAyB;;;;sBAKzB,yBAAyB;;;;;;sBAOzB,sBAAsB;;;;oBAKxB,0BAA0B;;UAI7B,aAAA;;;;;;;;;;UAaA,UAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAiDP;;;;;;UASO,MAAA,SAAe;;;;;;UAQf,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA6CA,cAAA;;;;;;;;;;;;;;;;;;UAuBA,eAAA;;;;;;UAMP;;WAEC;;cAIE,SAAA;;oBA0BgB;;;;WAtBX;;;;;;;;;;;UAaD;;;;;qCASY;;;;YAMjB;;cA6BC,UAAA,YAAsB;;;;;;;;;;UAUzB;;;;;;;;;KAqCE,yBAAA;;;;;;;;YAKI;;;;;;;;;;;;;;;;;AApDH,cChPA,WAAA,SAAoB,gBAAA,CDgPQ;EA+C7B,CAAA,OAAA;uBC5RW;;8BAMV,uBACR,QAAQ;EAVA;EAGU,OAAA,CAAA,IAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAsBV,cAtBU,CAAA,EAuBlB,OAvBkB,CAuBV,eAvBU,CAAA;EAMV;EACA,aAAA,CAAA,IAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAkCA,cAlCA,CAAA,EAmCR,OAnCQ,CAmCA,cAnCA,CAmCe,UAnCf,CAAA,CAAA;EAAR;EAeQ,gBAAA,CAAA,CAAA,EA6Ce,OA7Cf,CA6CuB,WA7CvB,EAAA,CAAA;EACA;EAAR,iBAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAuDyC,OAvDzC,CAAA,IAAA,CAAA;;;AAmBQ,iBAkGG,eAAA,CAlGH,OAAA,EAkG4B,WAlG5B,CAAA,EAkG0C,WAlG1C"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../../../../extensions/interpreter/src/types.ts","../../../../extensions/interpreter/src/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;AASA;AA0BA;AA4BiB,UAtDA,oBAAA,CAsDc;EAInB;;;;EA4BmC,QAAA,CAAA,EAAA,QAAA,GAAA,YAAA,GAAA,YAAA;EAKzB;;;;EAYF,GAAA,CAAA,EAAA,MAAA;EAA0B;;AAI9C;AAaA;EA0DiB,OAAA,CAAA,EAjKL,MAiKY,CAAA,MAAQ,EAAA,MAAA,GAAU,SAAA,CAAA;EAQzB;AA6CjB;AAuBA;AAYA;EA0B6B,OAAA,CAAA,EAAA,MAAA;;AATZ,UAjQA,WAAA,CAiQA;EASY;;;EAmChB,SAAA,EAAA,EAAW,MAAA;EA+CZ;;;;EC/RC;;;EAUA,SAAA,GAAA,EAAA,MAAA;EAAR;;;EAoBA,SAAA,SAAA,EDxEiB,ICwEjB;EAqBQ;;;EACR,SAAA,QAAA,EDzFgB,ICyFhB;;AAmDuB,UDxIX,cAAA,CCwIW;EAakB;;;EAgE9B,OAAA,CAAA,EDjNJ,WCiNmB;;;;;;;;;;YDrMnB;;;;;;;;;WAWD;;;;sBAKW,yBAAyB;;;;sBAKzB,yBAAyB;;;;;;sBAOzB,sBAAsB;;;;oBAKxB,0BAA0B;;UAI7B,aAAA;;;;;;;;;;UAaA,UAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAiDP;;;;;;UASO,MAAA,SAAe;;;;;;UAQf,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA6CA,cAAA;;;;;;;;;;;;;;;;;;UAuBA,eAAA;;;;;;UAMP;;WAEC;;cAIE,SAAA;;oBA0BgB;;;;WAtBX;;;;;;;;;;;UAaD;;;;;qCASY;;;;YAMjB;;cA6BC,UAAA,YAAsB;;;;;;;;;;UAUzB;;;;;;;;;KAqCE,yBAAA;;;;;;;;YAKI;;;;;;;;;;;;;;;;;AAjFJ,cCnNC,WAAA,SAAoB,gBAAA,CDmNrB;EAAe,CAAA,OAAA;EA6Bd,WAAA,CAAA,OAAW,EC7OD,WDuPb;EAqCE;8BCtRC,uBACR,QAAQ;;kCAmBA,iBACR,QAAQ;EA9BA;EAGU,aAAA,CAAA,IAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAgDV,cAhDU,CAAA,EAiDlB,OAjDkB,CAiDV,cAjDU,CAiDK,UAjDL,CAAA,CAAA;EAMV;EACA,gBAAA,CAAA,CAAA,EA6Fe,OA7Ff,CA6FuB,WA7FvB,EAAA,CAAA;EAAR;EAmBQ,iBAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAuFiC,OAvFjC,CAAA,IAAA,CAAA;;;AAsBA,iBAiIG,eAAA,CAjIH,OAAA,EAiI4B,WAjI5B,CAAA,EAiI0C,WAjI1C"}