@opencoredev/sandbox-sdk 0.1.1 → 1.0.0-beta.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/CHANGELOG.md +34 -7
- package/README.md +350 -23
- package/dist/ai.d.ts +5 -0
- package/dist/ai.js +1 -0
- package/dist/chunk-59t3rqja.js +2 -0
- package/dist/chunk-cwx6cc31.js +2 -0
- package/dist/chunk-exv1kf89.js +60 -0
- package/dist/chunk-gc8zdxyb.js +2 -0
- package/dist/chunk-hjzhc3qg.js +40 -0
- package/dist/chunk-md6fmprc.js +1 -0
- package/dist/chunk-t5vr9nd8.js +8 -0
- package/dist/chunk-v6y7eqxw.js +27 -0
- package/dist/chunk-yed8mvs7.js +2 -0
- package/dist/chunk-yrsb6hws.js +5 -0
- package/dist/chunk-z9rjzn28.js +2 -0
- package/dist/errors.d.ts +60 -0
- package/dist/files.d.ts +57 -0
- package/dist/git.d.ts +28 -0
- package/dist/handle.d.ts +4 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.js +1 -0
- package/dist/keys.d.ts +5 -0
- package/dist/logs.d.ts +8 -0
- package/dist/mastra.d.ts +43 -0
- package/dist/mastra.js +1 -0
- package/dist/memory.d.ts +34 -0
- package/dist/memory.js +11 -0
- package/dist/openai.d.ts +39 -0
- package/dist/openai.js +1 -0
- package/dist/peer.d.ts +5 -0
- package/dist/processes.d.ts +71 -0
- package/dist/provider.d.ts +138 -0
- package/dist/provider.js +0 -0
- package/dist/providers/agentos/errors.d.ts +4 -0
- package/dist/providers/agentos/index.d.ts +11 -0
- package/dist/providers/agentos/index.js +2 -0
- package/dist/providers/boat/index.d.ts +23 -0
- package/dist/providers/boat/index.js +1 -0
- package/dist/providers/boat-api/errors.d.ts +6 -0
- package/dist/providers/boat-api/exec.d.ts +11 -0
- package/dist/providers/boat-api/index.d.ts +22 -0
- package/dist/providers/boxd/errors.d.ts +3 -0
- package/dist/providers/boxd/execute.d.ts +3 -0
- package/dist/providers/boxd/guest.d.ts +14 -0
- package/dist/providers/boxd/index.d.ts +23 -0
- package/dist/providers/boxd/index.js +85 -0
- package/dist/providers/boxd/transfers.d.ts +19 -0
- package/dist/providers/daytona/buffered.d.ts +3 -0
- package/dist/providers/daytona/errors.d.ts +3 -0
- package/dist/providers/daytona/exec.d.ts +14 -0
- package/dist/providers/daytona/index.d.ts +24 -0
- package/dist/providers/daytona/index.js +88 -0
- package/dist/providers/e2b/errors.d.ts +3 -0
- package/dist/providers/e2b/index.d.ts +15 -0
- package/dist/providers/e2b/index.js +1 -0
- package/dist/providers/freestyle/deadline.d.ts +4 -0
- package/dist/providers/freestyle/errors.d.ts +16 -0
- package/dist/providers/freestyle/execute.d.ts +12 -0
- package/dist/providers/freestyle/index.d.ts +14 -0
- package/dist/providers/freestyle/index.js +133 -0
- package/dist/providers/freestyle/wire.d.ts +10 -0
- package/dist/providers/local/docker.d.ts +32 -0
- package/dist/providers/local/index.d.ts +17 -0
- package/dist/providers/local/index.js +2 -0
- package/dist/providers/railway/errors.d.ts +4 -0
- package/dist/providers/railway/index.d.ts +24 -0
- package/dist/providers/railway/index.js +1 -0
- package/dist/providers/sandboxer/index.d.ts +33 -0
- package/dist/providers/sandboxer/index.js +1 -0
- package/dist/providers/superserve/bootstrap.d.ts +11 -0
- package/dist/providers/superserve/errors.d.ts +3 -0
- package/dist/providers/superserve/execute.d.ts +13 -0
- package/dist/providers/superserve/index.d.ts +23 -0
- package/dist/providers/superserve/index.js +126 -0
- package/dist/providers/tenki/deadline.d.ts +2 -0
- package/dist/providers/tenki/errors.d.ts +10 -0
- package/dist/providers/tenki/exec.d.ts +4 -0
- package/dist/providers/tenki/files.d.ts +3 -0
- package/dist/providers/tenki/index.d.ts +28 -0
- package/dist/providers/tenki/index.js +172 -0
- package/dist/providers/tenki/ready.d.ts +7 -0
- package/dist/providers/tenki/stream.d.ts +3 -0
- package/dist/providers/upstash/buffered.d.ts +3 -0
- package/dist/providers/upstash/errors.d.ts +3 -0
- package/dist/providers/upstash/exec.d.ts +18 -0
- package/dist/providers/upstash/files.d.ts +15 -0
- package/dist/providers/upstash/index.d.ts +38 -0
- package/dist/providers/upstash/index.js +111 -0
- package/dist/providers/vercel/errors.d.ts +3 -0
- package/dist/providers/vercel/index.d.ts +14 -0
- package/dist/providers/vercel/index.js +1 -0
- package/dist/providers/vercel/provider.d.ts +10 -0
- package/dist/providers/vercel/transport.d.ts +40 -0
- package/dist/run.d.ts +41 -0
- package/dist/testing.d.ts +17 -0
- package/dist/testing.js +6 -0
- package/dist/tool-security.d.ts +9 -0
- package/dist/tools.d.ts +117 -0
- package/dist/tools.js +1 -0
- package/dist/types.d.ts +189 -0
- package/package.json +170 -92
- package/dist/agentos-DFJ4TFaY.mjs +0 -389
- package/dist/agentos-DFJ4TFaY.mjs.map +0 -1
- package/dist/ai/harness.d.mts +0 -16
- package/dist/ai/harness.mjs +0 -69
- package/dist/ai/harness.mjs.map +0 -1
- package/dist/ai/index.d.mts +0 -54
- package/dist/ai/index.mjs +0 -4
- package/dist/ai-DhfwIZdL.mjs +0 -243
- package/dist/ai-DhfwIZdL.mjs.map +0 -1
- package/dist/capabilities-CEowrzRM.mjs +0 -99
- package/dist/capabilities-CEowrzRM.mjs.map +0 -1
- package/dist/capabilities-COKpwoFH.mjs +0 -28
- package/dist/capabilities-COKpwoFH.mjs.map +0 -1
- package/dist/capabilities-DftdOpIu.d.mts +0 -13
- package/dist/errors-Ch9PHKTd.mjs +0 -61
- package/dist/errors-Ch9PHKTd.mjs.map +0 -1
- package/dist/eve/index.d.mts +0 -19
- package/dist/eve/index.mjs +0 -155
- package/dist/eve/index.mjs.map +0 -1
- package/dist/index-Bk6GmoEt.d.mts +0 -25
- package/dist/index-BufLdrbp.d.mts +0 -31
- package/dist/index.d.mts +0 -5
- package/dist/index.mjs +0 -38
- package/dist/index.mjs.map +0 -1
- package/dist/mastra/index.d.mts +0 -118
- package/dist/mastra/index.mjs +0 -662
- package/dist/mastra/index.mjs.map +0 -1
- package/dist/metadata.d.mts +0 -34
- package/dist/metadata.mjs +0 -103
- package/dist/metadata.mjs.map +0 -1
- package/dist/provider-BzzkIVmv.d.mts +0 -91
- package/dist/provider-utils-BjOSWNsh.mjs +0 -201
- package/dist/provider-utils-BjOSWNsh.mjs.map +0 -1
- package/dist/providers/agentos/index.d.mts +0 -7
- package/dist/providers/agentos/index.mjs +0 -8
- package/dist/providers/daytona/index.d.mts +0 -21
- package/dist/providers/daytona/index.mjs +0 -205
- package/dist/providers/daytona/index.mjs.map +0 -1
- package/dist/providers/e2b/index.d.mts +0 -17
- package/dist/providers/e2b/index.mjs +0 -168
- package/dist/providers/e2b/index.mjs.map +0 -1
- package/dist/providers/local/index.d.mts +0 -22
- package/dist/providers/local/index.mjs +0 -21
- package/dist/providers/local/index.mjs.map +0 -1
- package/dist/providers/upstash/index.d.mts +0 -17
- package/dist/providers/upstash/index.mjs +0 -210
- package/dist/providers/upstash/index.mjs.map +0 -1
- package/dist/providers/vercel/index.d.mts +0 -28
- package/dist/providers/vercel/index.mjs +0 -185
- package/dist/providers/vercel/index.mjs.map +0 -1
- package/dist/sandbox-Dco6z9aB.d.mts +0 -26
- package/dist/sandbox-rIOcbhtM.mjs +0 -112
- package/dist/sandbox-rIOcbhtM.mjs.map +0 -1
- package/dist/testing/index.d.mts +0 -27
- package/dist/testing/index.mjs +0 -173
- package/dist/testing/index.mjs.map +0 -1
- package/dist/types-DEi_dfRR.d.mts +0 -103
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":["extension","result: FileEntry[]","parts: string[]","quote: \"single\" | \"double\" | undefined"],"sources":["../../src/mastra/index.ts"],"sourcesContent":["import {\n DirectoryNotEmptyError,\n DirectoryNotFoundError,\n FileExistsError,\n FileNotFoundError,\n IsDirectoryError,\n MastraFilesystem,\n MastraSandbox,\n NotDirectoryError,\n PermissionError,\n ProcessHandle,\n SandboxNotReadyError,\n SandboxProcessManager,\n StaleFileError,\n Workspace,\n WorkspaceReadOnlyError,\n} from \"@mastra/core/workspace\";\nimport type {\n CommandResult,\n CopyOptions,\n FileContent,\n FileEntry,\n FilesystemInfo,\n InstructionsOption,\n ListOptions,\n MastraFilesystemOptions,\n MastraSandboxOptions,\n ProcessInfo,\n ProviderStatus,\n ReadOptions,\n RemoveOptions,\n SandboxInfo,\n SpawnProcessOptions,\n WorkspaceConfig,\n WriteOptions,\n} from \"@mastra/core/workspace\";\nimport type { RequestContext } from \"@mastra/core/di\";\nimport { isSandboxError, SandboxError } from \"../core/errors\";\nimport type {\n ManagedSandboxProvider,\n ManagedSandboxSession,\n SandboxProvider,\n} from \"../core/provider\";\nimport type { Sandbox, SandboxDirectoryEntry, SandboxProcess } from \"../core/types\";\n\ntype WorkspaceOptions = Omit<\n WorkspaceConfig<SandboxSDKMastraFilesystem, SandboxSDKMastraSandbox>,\n \"filesystem\" | \"sandbox\" | \"mounts\"\n>;\n\nexport interface CreateMastraSandboxOptions extends Omit<MastraSandboxOptions, \"processes\"> {\n provider: SandboxProvider<unknown>;\n id?: string;\n identity?: string;\n cwd?: string;\n env?: Readonly<Record<string, string>>;\n ports?: ReadonlyArray<number>;\n instructions?: InstructionsOption;\n onFirstCreate?: (sandbox: Sandbox) => void | Promise<void>;\n}\n\nexport interface CreateMastraWorkspaceOptions extends CreateMastraSandboxOptions {\n filesystem?: Omit<CreateMastraFilesystemOptions, \"sandbox\">;\n workspace?: WorkspaceOptions;\n}\n\nexport interface CreateMastraFilesystemOptions extends MastraFilesystemOptions {\n sandbox: SandboxSDKMastraSandbox;\n readOnly?: boolean;\n instructions?: InstructionsOption;\n}\n\n/** Create a Mastra sandbox backed by any managed Sandbox SDK provider. */\nexport function createMastraSandbox(options: CreateMastraSandboxOptions): SandboxSDKMastraSandbox {\n return new SandboxSDKMastraSandbox(options);\n}\n\n/**\n * Create a Mastra workspace whose filesystem and commands share one Sandbox SDK\n * session. The workspace owns and destroys the session.\n */\nexport function createMastraWorkspace(\n options: CreateMastraWorkspaceOptions,\n): Workspace<SandboxSDKMastraFilesystem, SandboxSDKMastraSandbox> {\n const sandbox = createMastraSandbox(options);\n const filesystem = new SandboxSDKMastraFilesystem({ ...options.filesystem, sandbox });\n return new Workspace({ ...options.workspace, filesystem, sandbox });\n}\n\n/** Mastra WorkspaceSandbox implementation for Sandbox SDK providers. */\nexport class SandboxSDKMastraSandbox extends MastraSandbox {\n readonly id: string;\n readonly name: string;\n readonly provider: string;\n readonly cwd: string;\n readonly processes: SandboxSDKProcessManager;\n status: ProviderStatus = \"pending\";\n\n private readonly managed: ManagedSandboxProvider;\n private readonly identity?: string;\n private readonly env: Readonly<Record<string, string>>;\n private readonly ports: ReadonlyArray<number>;\n private readonly instructions?: InstructionsOption;\n private readonly onFirstCreate?: (sandbox: Sandbox) => void | Promise<void>;\n private readonly createdAt = new Date();\n private session?: ManagedSandboxSession;\n\n constructor(options: CreateMastraSandboxOptions) {\n const processes = new SandboxSDKProcessManager({ env: options.env });\n super({ ...options, name: \"Sandbox SDK\", processes });\n this.managed = requireManaged(options.provider);\n this.id = options.id ?? `mastra-${options.provider.id}-${crypto.randomUUID()}`;\n this.name = `Sandbox SDK (${options.provider.id})`;\n this.provider = options.provider.id;\n this.cwd = normalizeCwd(options.cwd ?? \"/workspace\");\n this.env = options.env ?? {};\n this.ports = options.ports ?? [];\n this.identity = options.identity;\n this.instructions = options.instructions;\n this.onFirstCreate = options.onFirstCreate;\n this.processes = processes;\n }\n\n /** The live normalized Sandbox SDK session. */\n get sandboxSdk(): Sandbox {\n if (!this.session) throw new SandboxNotReadyError(this.id);\n return this.session.sandbox;\n }\n\n async start(): Promise<void> {\n if (this.session) {\n await this.session.resume();\n return;\n }\n this.session = await this.managed.create({\n sessionId: this.id,\n identity: this.identity,\n cwd: this.cwd,\n env: this.env,\n ports: this.ports,\n onFirstCreate: this.onFirstCreate,\n });\n }\n\n async stop(): Promise<void> {\n if (!this.session) return;\n await this.killTrackedProcesses();\n await this.session.stop();\n }\n\n async destroy(): Promise<void> {\n if (!this.session) return;\n await this.killTrackedProcesses();\n const session = this.session;\n this.session = undefined;\n await session.destroy();\n }\n\n async getPortUrl(port: number, protocol?: \"http\" | \"https\" | \"ws\"): Promise<string> {\n await this.ensureRunning();\n return this.session!.getPortUrl({ port, protocol });\n }\n\n getInfo(): SandboxInfo {\n return {\n id: this.id,\n name: this.name,\n provider: this.provider,\n status: this.status,\n createdAt: this.createdAt,\n metadata: {\n sandboxId: this.session?.sandbox.id,\n sandboxProvider: this.provider,\n cwd: this.cwd,\n capabilities: this.session?.sandbox.capabilities,\n },\n };\n }\n\n getInstructions(options?: { requestContext?: RequestContext }): string {\n const defaultInstructions =\n `Commands run in an isolated ${this.provider} sandbox. ` +\n `The default working directory is ${this.cwd}.`;\n if (this.instructions === undefined) return defaultInstructions;\n if (typeof this.instructions === \"string\") return this.instructions;\n return this.instructions({\n defaultInstructions,\n requestContext: options?.requestContext,\n });\n }\n\n /** @deprecated Use `status === \"running\"` instead. */\n isReady(): boolean {\n return this.status === \"running\" && this.session !== undefined;\n }\n\n private async killTrackedProcesses(): Promise<void> {\n const processes = await this.processes.list().catch(() => []);\n await Promise.all(\n processes\n .filter((process) => process.running)\n .map((process) => this.processes.kill(process.pid).catch(() => false)),\n );\n }\n}\n\n/** Mastra background-process bridge for normalized Sandbox SDK processes. */\nexport class SandboxSDKProcessManager extends SandboxProcessManager<SandboxSDKMastraSandbox> {\n async spawn(command: string, options: SpawnProcessOptions = {}): Promise<ProcessHandle> {\n const env = Object.fromEntries(\n Object.entries({ ...this.env, ...options.env }).filter(\n (entry): entry is [string, string] => entry[1] !== undefined,\n ),\n );\n const process = await this.sandbox.sandboxSdk.processes.start(\n parseSimpleCommand(command) ?? command,\n {\n cwd: options.cwd,\n env,\n timeout: options.timeout,\n signal: options.abortSignal,\n },\n );\n const handle = new SandboxSDKProcessHandle(process, options);\n this._tracked.set(handle.pid, handle);\n return handle;\n }\n\n async list(): Promise<ProcessInfo[]> {\n return Promise.all(\n [...this._tracked.values()].map(async (handle) => {\n const adapter = handle as SandboxSDKProcessHandle;\n return {\n pid: handle.pid,\n command: handle.command,\n running: await adapter.isRunning(),\n ...(handle.exitCode === undefined ? {} : { exitCode: handle.exitCode }),\n };\n }),\n );\n }\n}\n\nclass SandboxSDKProcessHandle extends ProcessHandle {\n readonly pid: string;\n private readonly process: SandboxProcess;\n private readonly startedAt = performance.now();\n private readonly completed: Promise<CommandResult>;\n private currentExitCode?: number;\n private killed = false;\n private timedOut = false;\n private timeoutId?: ReturnType<typeof setTimeout>;\n\n constructor(process: SandboxProcess, options: SpawnProcessOptions) {\n super(options);\n this.process = process;\n this.pid = process.id;\n if (options.timeout !== undefined && options.timeout > 0) {\n this.timeoutId = setTimeout(() => {\n this.timedOut = true;\n void this.kill();\n }, options.timeout);\n }\n this.completed = this.collect();\n }\n\n get exitCode(): number | undefined {\n return this.currentExitCode;\n }\n\n async wait(): Promise<CommandResult> {\n return this.completed;\n }\n\n async kill(): Promise<boolean> {\n if (this.currentExitCode !== undefined) return false;\n this.killed = true;\n await this.process.kill();\n return true;\n }\n\n async sendStdin(data: string): Promise<void> {\n if (this.currentExitCode !== undefined) {\n throw new Error(`Process ${this.pid} has already exited with code ${this.currentExitCode}`);\n }\n await this.process.write(data);\n }\n\n async isRunning(): Promise<boolean> {\n if (this.currentExitCode !== undefined) return false;\n const status = await this.process.status();\n return status === \"starting\" || status === \"running\";\n }\n\n private async collect(): Promise<CommandResult> {\n const output = this.pumpOutput();\n try {\n const result = await this.process.wait();\n this.currentExitCode = this.timedOut ? 124 : result.exitCode;\n await output;\n } catch (error) {\n await output.catch(() => undefined);\n if (isSandboxError(error) && error.code === \"timeout\") {\n this.timedOut = true;\n }\n this.currentExitCode = this.timedOut ? 124 : 1;\n this.emitStderr(error instanceof Error ? error.message : String(error));\n } finally {\n if (this.timeoutId) clearTimeout(this.timeoutId);\n }\n return {\n success: this.currentExitCode === 0,\n exitCode: this.currentExitCode,\n stdout: this.stdout,\n stderr: this.stderr,\n executionTimeMs: Math.round(performance.now() - this.startedAt),\n ...(this.killed ? { killed: true } : {}),\n ...(this.timedOut ? { timedOut: true } : {}),\n };\n }\n\n private async pumpOutput(): Promise<void> {\n const decoders = {\n stdout: new TextDecoder(),\n stderr: new TextDecoder(),\n };\n try {\n for await (const event of this.process.output()) {\n const data =\n typeof event.data === \"string\"\n ? event.data\n : decoders[event.stream].decode(event.data, { stream: true });\n if (data) {\n if (event.stream === \"stdout\") this.emitStdout(data);\n else this.emitStderr(data);\n }\n }\n } finally {\n const stdout = decoders.stdout.decode();\n const stderr = decoders.stderr.decode();\n if (stdout) this.emitStdout(stdout);\n if (stderr) this.emitStderr(stderr);\n }\n }\n}\n\n/** Mastra WorkspaceFilesystem implementation sharing a Mastra sandbox session. */\nexport class SandboxSDKMastraFilesystem extends MastraFilesystem {\n readonly id: string;\n readonly name = \"Sandbox SDK Filesystem\";\n readonly provider = \"sandbox-sdk\";\n readonly readOnly: boolean;\n readonly basePath: string;\n status: ProviderStatus = \"pending\";\n\n private readonly sandbox: SandboxSDKMastraSandbox;\n private readonly instructions?: InstructionsOption;\n\n constructor(options: CreateMastraFilesystemOptions) {\n super({ ...options, name: \"Sandbox SDK Filesystem\" });\n this.sandbox = options.sandbox;\n this.id = `${options.sandbox.id}-filesystem`;\n this.basePath = options.sandbox.cwd;\n this.readOnly = options.readOnly ?? false;\n this.instructions = options.instructions;\n }\n\n async init(): Promise<void> {}\n\n async destroy(): Promise<void> {}\n\n getInfo(): FilesystemInfo {\n return {\n id: this.id,\n name: this.name,\n provider: this.provider,\n status: this.status,\n readOnly: this.readOnly,\n metadata: {\n sandboxId: this.sandbox.id,\n sandboxProvider: this.sandbox.provider,\n basePath: this.basePath,\n },\n };\n }\n\n getInstructions(options?: { requestContext?: RequestContext }): string {\n const defaultInstructions =\n `Files are stored in the same ${this.sandbox.provider} sandbox used for commands. ` +\n `Filesystem path / maps to ${this.basePath} inside the sandbox.`;\n if (this.instructions === undefined) return defaultInstructions;\n if (typeof this.instructions === \"string\") return this.instructions;\n return this.instructions({\n defaultInstructions,\n requestContext: options?.requestContext,\n });\n }\n\n async realpath(path: string): Promise<string> {\n await this.ready();\n const virtual = toVirtualPath(this.basePath, path);\n const result = await this.sandbox.sandboxSdk.run({\n command: \"realpath\",\n args: [\"-m\", toSandboxPath(this.basePath, virtual)],\n });\n if (!result.success) return virtual;\n const resolved = result.stdout.trim();\n if (!isWithin(this.basePath, resolved)) {\n throw new PermissionError(path, \"realpath\");\n }\n return fromSandboxPath(this.basePath, resolved);\n }\n\n async readFile(path: string, options?: ReadOptions): Promise<string | Buffer> {\n await this.ready();\n const stat = await this.stat(path);\n if (stat.type === \"directory\") throw new IsDirectoryError(path);\n try {\n const content = Buffer.from(\n await this.sandbox.sandboxSdk.files.read(toSandboxPath(this.basePath, path)),\n );\n return options?.encoding ? content.toString(options.encoding) : content;\n } catch (error) {\n throw mapFileError(path, \"read\", error);\n }\n }\n\n async writeFile(path: string, content: FileContent, options?: WriteOptions): Promise<void> {\n await this.ready();\n this.assertWritable(\"writeFile\");\n const target = toSandboxPath(this.basePath, path);\n const exists = await this.exists(path);\n if (exists && options?.overwrite === false) throw new FileExistsError(path);\n if (exists) {\n const current = await this.stat(path);\n if (current.type === \"directory\") throw new IsDirectoryError(path);\n if (\n options?.expectedMtime &&\n current.modifiedAt.getTime() !== options.expectedMtime.getTime()\n ) {\n throw new StaleFileError(path, options.expectedMtime, current.modifiedAt);\n }\n }\n await this.ensureParent(path, options?.recursive !== false);\n try {\n await this.sandbox.sandboxSdk.files.write(target, toBytes(content));\n } catch (error) {\n throw mapFileError(path, \"write\", error);\n }\n }\n\n async appendFile(path: string, content: FileContent): Promise<void> {\n await this.ready();\n this.assertWritable(\"appendFile\");\n const current = (await this.exists(path))\n ? Buffer.from(await this.readFile(path))\n : Buffer.alloc(0);\n const added = Buffer.from(toBytes(content));\n const combined = new Uint8Array(current.byteLength + added.byteLength);\n combined.set(current);\n combined.set(added, current.byteLength);\n await this.writeFile(path, combined);\n }\n\n async deleteFile(path: string, options?: RemoveOptions): Promise<void> {\n await this.ready();\n this.assertWritable(\"deleteFile\");\n if (!(await this.exists(path))) {\n if (options?.force) return;\n throw new FileNotFoundError(path);\n }\n if ((await this.stat(path)).type === \"directory\") {\n throw new IsDirectoryError(path);\n }\n try {\n await this.sandbox.sandboxSdk.files.remove(toSandboxPath(this.basePath, path));\n } catch (error) {\n throw mapFileError(path, \"delete\", error);\n }\n }\n\n async copyFile(src: string, dest: string, options?: CopyOptions): Promise<void> {\n await this.ready();\n this.assertWritable(\"copyFile\");\n if (!(await this.exists(src))) throw new FileNotFoundError(src);\n if ((await this.exists(dest)) && options?.overwrite === false) {\n throw new FileExistsError(dest);\n }\n const source = await this.stat(src);\n if (source.type === \"directory\") {\n if (!options?.recursive) throw new IsDirectoryError(src);\n await this.mkdir(dest, { recursive: true });\n for (const entry of await this.readdir(src)) {\n await this.copyFile(joinVirtual(src, entry.name), joinVirtual(dest, entry.name), options);\n }\n return;\n }\n await this.writeFile(dest, await this.readFile(src), {\n recursive: true,\n overwrite: options?.overwrite,\n });\n }\n\n async moveFile(src: string, dest: string, options?: CopyOptions): Promise<void> {\n this.assertWritable(\"moveFile\");\n const source = await this.stat(src);\n await this.copyFile(src, dest, {\n ...options,\n recursive: source.type === \"directory\" ? true : options?.recursive,\n });\n if (source.type === \"directory\") {\n await this.rmdir(src, { recursive: true });\n } else {\n await this.deleteFile(src);\n }\n }\n\n async mkdir(path: string, options?: { recursive?: boolean }): Promise<void> {\n await this.ready();\n this.assertWritable(\"mkdir\");\n if (await this.exists(path)) {\n if ((await this.stat(path)).type !== \"directory\") {\n throw new FileExistsError(path);\n }\n return;\n }\n if (options?.recursive === false) await this.requireParent(path);\n try {\n await this.sandbox.sandboxSdk.files.mkdir(toSandboxPath(this.basePath, path));\n } catch (error) {\n throw mapFileError(path, \"mkdir\", error);\n }\n }\n\n async rmdir(path: string, options?: RemoveOptions): Promise<void> {\n await this.ready();\n this.assertWritable(\"rmdir\");\n if (!(await this.exists(path))) {\n if (options?.force) return;\n throw new DirectoryNotFoundError(path);\n }\n if ((await this.stat(path)).type !== \"directory\") {\n throw new NotDirectoryError(path);\n }\n if (!options?.recursive && (await this.readdir(path)).length > 0) {\n throw new DirectoryNotEmptyError(path);\n }\n try {\n await this.sandbox.sandboxSdk.files.remove(toSandboxPath(this.basePath, path));\n } catch (error) {\n throw mapFileError(path, \"rmdir\", error);\n }\n }\n\n async readdir(path: string, options?: ListOptions): Promise<FileEntry[]> {\n await this.ready();\n if (!(await this.exists(path))) throw new DirectoryNotFoundError(path);\n if ((await this.stat(path)).type !== \"directory\") {\n throw new NotDirectoryError(path);\n }\n const extensions = options?.extension\n ? new Set(\n (Array.isArray(options.extension) ? options.extension : [options.extension]).map(\n (extension) => (extension.startsWith(\".\") ? extension : `.${extension}`),\n ),\n )\n : undefined;\n return this.listDirectory(path, options?.recursive ? (options.maxDepth ?? 100) : 0, extensions);\n }\n\n async exists(path: string): Promise<boolean> {\n await this.ready();\n return this.sandbox.sandboxSdk.files.exists(toSandboxPath(this.basePath, path));\n }\n\n async stat(path: string) {\n await this.ready();\n const virtual = toVirtualPath(this.basePath, path);\n const target = toSandboxPath(this.basePath, virtual);\n if (virtual === \"/\") {\n return directoryStat(\"\", \"/\");\n }\n if (!(await this.sandbox.sandboxSdk.files.exists(target))) {\n throw new FileNotFoundError(path);\n }\n const native = await this.nativeStat(target);\n if (native) {\n return {\n name: basename(virtual),\n path: virtual,\n type: native.type,\n size: native.size,\n createdAt: native.createdAt,\n modifiedAt: native.modifiedAt,\n };\n }\n const entry = await this.findEntry(target);\n if (!entry) throw new FileNotFoundError(path);\n const timestamp = new Date(0);\n return {\n name: entry.name,\n path: virtual,\n type: entry.type === \"directory\" ? (\"directory\" as const) : (\"file\" as const),\n size: entry.size ?? 0,\n createdAt: timestamp,\n modifiedAt: timestamp,\n };\n }\n\n private async ready(): Promise<void> {\n await this.ensureReady();\n await this.sandbox.ensureRunning();\n }\n\n private assertWritable(operation: string): void {\n if (this.readOnly) throw new WorkspaceReadOnlyError(operation);\n }\n\n private async ensureParent(path: string, recursive: boolean): Promise<void> {\n const parent = dirname(toVirtualPath(this.basePath, path));\n if (parent === \"/\") return;\n if (recursive) await this.mkdir(parent, { recursive: true });\n else await this.requireParent(path);\n }\n\n private async requireParent(path: string): Promise<void> {\n const parent = dirname(toVirtualPath(this.basePath, path));\n if (!(await this.exists(parent))) throw new DirectoryNotFoundError(parent);\n if ((await this.stat(parent)).type !== \"directory\") {\n throw new NotDirectoryError(parent);\n }\n }\n\n private async listDirectory(\n path: string,\n depth: number,\n extensions?: ReadonlySet<string>,\n ): Promise<FileEntry[]> {\n const entries = await this.sandbox.sandboxSdk.files.list(toSandboxPath(this.basePath, path));\n const result: FileEntry[] = [];\n for (const entry of entries) {\n const type = entry.type === \"directory\" ? \"directory\" : \"file\";\n if (type === \"file\" && extensions && !extensions.has(extension(entry.name))) {\n continue;\n }\n result.push({\n name: entry.name,\n type,\n ...(entry.size === undefined ? {} : { size: entry.size }),\n ...(entry.type === \"symlink\" ? { isSymlink: true } : {}),\n });\n if (depth > 0 && type === \"directory\") {\n const childPath = joinVirtual(path, entry.name);\n const children = await this.listDirectory(childPath, depth - 1, extensions);\n result.push(\n ...children.map((child) => ({\n ...child,\n name: `${entry.name}/${child.name}`,\n })),\n );\n }\n }\n return result;\n }\n\n private async findEntry(target: string): Promise<SandboxDirectoryEntry | undefined> {\n const parent = dirname(target);\n const entries = await this.sandbox.sandboxSdk.files.list(parent);\n return entries.find((entry) => entry.path === target);\n }\n\n private async nativeStat(target: string): Promise<\n | {\n type: \"file\" | \"directory\";\n size: number;\n createdAt: Date;\n modifiedAt: Date;\n }\n | undefined\n > {\n try {\n const result = await this.sandbox.sandboxSdk.run({\n command: \"stat\",\n args: [\"-c\", \"%F|%s|%W|%Y\", target],\n });\n if (!result.success) return undefined;\n const [kind, sizeValue, createdValue, modifiedValue] = result.stdout.trim().split(\"|\");\n if (!kind || !sizeValue || !createdValue || !modifiedValue) {\n return undefined;\n }\n const modified = Number(modifiedValue) * 1_000;\n const createdSeconds = Number(createdValue);\n return {\n type: kind.includes(\"directory\") ? \"directory\" : \"file\",\n size: Number(sizeValue),\n createdAt: new Date((createdSeconds > 0 ? createdSeconds : Number(modifiedValue)) * 1_000),\n modifiedAt: new Date(modified),\n };\n } catch {\n return undefined;\n }\n }\n}\n\nfunction requireManaged(provider: SandboxProvider<unknown>): ManagedSandboxProvider {\n if (!provider.managed) {\n throw new SandboxError({\n code: \"unsupported\",\n provider: provider.id,\n operation: \"mastra.createSandbox\",\n message: `Provider ${provider.id} does not implement managed sandbox sessions`,\n });\n }\n return provider.managed;\n}\n\nfunction normalizeCwd(value: string): string {\n if (!value.startsWith(\"/\") || value.includes(\"\\0\")) {\n throw new SandboxError({\n code: \"invalid_input\",\n provider: \"mastra\",\n operation: \"cwd\",\n message: \"cwd must be an absolute path\",\n });\n }\n return value.replace(/\\/$/, \"\") || \"/\";\n}\n\nfunction toVirtualPath(cwd: string, value: string): string {\n assertPath(value);\n if (value === cwd) return \"/\";\n if (value.startsWith(`${cwd}/`)) return `/${value.slice(cwd.length + 1)}`;\n const absolute = value.startsWith(\"/\") ? value : `/${value}`;\n return absolute.replace(/\\/{2,}/g, \"/\").replace(/\\/$/, \"\") || \"/\";\n}\n\nfunction toSandboxPath(cwd: string, value: string): string {\n const virtual = toVirtualPath(cwd, value);\n return virtual === \"/\" ? cwd : `${cwd}${virtual}`;\n}\n\nfunction fromSandboxPath(cwd: string, value: string): string {\n if (value === cwd) return \"/\";\n if (!value.startsWith(`${cwd}/`)) throw new PermissionError(value, \"access\");\n return `/${value.slice(cwd.length + 1)}`;\n}\n\nfunction assertPath(value: string): void {\n if (!value || value.includes(\"\\0\") || value.split(\"/\").includes(\"..\")) {\n throw new PermissionError(value, \"access\");\n }\n}\n\nfunction isWithin(root: string, path: string): boolean {\n return path === root || path.startsWith(`${root}/`);\n}\n\nfunction toBytes(content: FileContent): Uint8Array {\n return typeof content === \"string\" ? new TextEncoder().encode(content) : new Uint8Array(content);\n}\n\nfunction basename(path: string): string {\n return path.split(\"/\").filter(Boolean).at(-1) ?? \"\";\n}\n\nfunction dirname(path: string): string {\n const parts = path.split(\"/\").filter(Boolean);\n parts.pop();\n return `/${parts.join(\"/\")}`.replace(/\\/$/, \"\") || \"/\";\n}\n\nfunction joinVirtual(parent: string, child: string): string {\n return `${parent.replace(/\\/$/, \"\")}/${child}`.replace(/\\/{2,}/g, \"/\");\n}\n\nfunction extension(path: string): string {\n const name = basename(path);\n const index = name.lastIndexOf(\".\");\n return index <= 0 ? \"\" : name.slice(index);\n}\n\n/**\n * Preserve argument boundaries for ordinary commands. Commands that use shell\n * syntax deliberately fall back to the provider's shell-string execution path.\n */\nfunction parseSimpleCommand(value: string): { command: string; args: string[] } | undefined {\n const parts: string[] = [];\n let current = \"\";\n let tokenStarted = false;\n let quote: \"single\" | \"double\" | undefined;\n\n const finish = () => {\n if (!tokenStarted) return;\n parts.push(current);\n current = \"\";\n tokenStarted = false;\n };\n\n for (let index = 0; index < value.length; index++) {\n const character = value[index]!;\n if (quote === \"single\") {\n if (character === \"'\") quote = undefined;\n else current += character;\n tokenStarted = true;\n continue;\n }\n if (quote === \"double\") {\n if (character === '\"') {\n quote = undefined;\n } else if (character === \"\\\\\") {\n const next = value[++index];\n if (next === undefined) return undefined;\n current += next;\n } else if (character === \"$\" || character === \"`\") {\n return undefined;\n } else {\n current += character;\n }\n tokenStarted = true;\n continue;\n }\n if (/\\s/.test(character)) {\n finish();\n continue;\n }\n if (character === \"'\") {\n quote = \"single\";\n tokenStarted = true;\n continue;\n }\n if (character === '\"') {\n quote = \"double\";\n tokenStarted = true;\n continue;\n }\n if (character === \"\\\\\") {\n const next = value[++index];\n if (next === undefined) return undefined;\n current += next;\n tokenStarted = true;\n continue;\n }\n if (\"|&;<>()$`*?[]{}~#\\n\\r\".includes(character)) return undefined;\n current += character;\n tokenStarted = true;\n }\n if (quote) return undefined;\n finish();\n const [command, ...args] = parts;\n return command ? { command, args } : undefined;\n}\n\nfunction directoryStat(name: string, path: string) {\n const timestamp = new Date(0);\n return {\n name,\n path,\n type: \"directory\" as const,\n size: 0,\n createdAt: timestamp,\n modifiedAt: timestamp,\n };\n}\n\nfunction mapFileError(path: string, operation: string, error: unknown): Error {\n if (!isSandboxError(error)) return error instanceof Error ? error : new Error(String(error));\n if (error.code === \"not_found\") return new FileNotFoundError(path);\n if (error.code === \"permission\") return new PermissionError(path, operation);\n if (error.code === \"conflict\") return new FileExistsError(path);\n return error;\n}\n"],"mappings":"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"}
|
package/dist/metadata.d.mts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { n as CapabilityMap, u as ProviderName } from "./types-DEi_dfRR.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/metadata.d.ts
|
|
4
|
-
interface LiveTestResult {
|
|
5
|
-
provider: ProviderName;
|
|
6
|
-
testedAt: string;
|
|
7
|
-
adapterVersion: string;
|
|
8
|
-
providerSdkVersion: string;
|
|
9
|
-
passed: number;
|
|
10
|
-
failed: number;
|
|
11
|
-
skipped: number;
|
|
12
|
-
capabilities: Partial<CapabilityMap>;
|
|
13
|
-
}
|
|
14
|
-
interface ProviderMetadata {
|
|
15
|
-
id: ProviderName;
|
|
16
|
-
displayName: string;
|
|
17
|
-
officialUrl: string;
|
|
18
|
-
packageName: string | null;
|
|
19
|
-
packageVersion: string;
|
|
20
|
-
capabilities: CapabilityMap;
|
|
21
|
-
environmentVariables: readonly string[];
|
|
22
|
-
technicalStatus: "supported" | "experimental";
|
|
23
|
-
providerReviewed: boolean;
|
|
24
|
-
sponsor: boolean;
|
|
25
|
-
liveTest: LiveTestResult | null;
|
|
26
|
-
portBehavior: string;
|
|
27
|
-
snapshotBehavior: string;
|
|
28
|
-
runtimeLimitations: string;
|
|
29
|
-
}
|
|
30
|
-
declare const providers: readonly ProviderMetadata[];
|
|
31
|
-
declare function getProviderMetadata(id: ProviderName): ProviderMetadata;
|
|
32
|
-
//#endregion
|
|
33
|
-
export { LiveTestResult, ProviderMetadata, getProviderMetadata, providers };
|
|
34
|
-
//# sourceMappingURL=metadata.d.mts.map
|
package/dist/metadata.mjs
DELETED
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import "./errors-Ch9PHKTd.mjs";
|
|
2
|
-
import "./capabilities-COKpwoFH.mjs";
|
|
3
|
-
import { a as upstashCapabilities, i as localCapabilities, n as daytonaCapabilities, o as vercelCapabilities, r as e2bCapabilities } from "./capabilities-CEowrzRM.mjs";
|
|
4
|
-
|
|
5
|
-
//#region src/metadata.ts
|
|
6
|
-
const providers = [
|
|
7
|
-
{
|
|
8
|
-
id: "local",
|
|
9
|
-
displayName: "Local",
|
|
10
|
-
officialUrl: "https://rivet.dev/docs/agent-os/",
|
|
11
|
-
packageName: "@rivet-dev/agentos-core",
|
|
12
|
-
packageVersion: "0.2.7",
|
|
13
|
-
capabilities: localCapabilities,
|
|
14
|
-
environmentVariables: [],
|
|
15
|
-
technicalStatus: "supported",
|
|
16
|
-
providerReviewed: false,
|
|
17
|
-
sponsor: false,
|
|
18
|
-
liveTest: null,
|
|
19
|
-
portBehavior: "Returns a private in-process URL. HTTP traffic is bridged through ExposedPort.request().",
|
|
20
|
-
snapshotBehavior: "Exports the AgentOS virtual filesystem and recreates the VM when restoring it.",
|
|
21
|
-
runtimeLimitations: "Powered by the beta AgentOS runtime. Requires a supported Node.js host and cannot run arbitrary native Linux binaries."
|
|
22
|
-
},
|
|
23
|
-
{
|
|
24
|
-
id: "e2b",
|
|
25
|
-
displayName: "E2B",
|
|
26
|
-
officialUrl: "https://e2b.dev/docs",
|
|
27
|
-
packageName: "e2b",
|
|
28
|
-
packageVersion: "2.32.0",
|
|
29
|
-
capabilities: e2bCapabilities,
|
|
30
|
-
environmentVariables: ["E2B_API_KEY"],
|
|
31
|
-
technicalStatus: "supported",
|
|
32
|
-
providerReviewed: false,
|
|
33
|
-
sponsor: false,
|
|
34
|
-
liveTest: null,
|
|
35
|
-
portBehavior: "Returns an E2B host. Restricted traffic uses the native access token only inside request().",
|
|
36
|
-
snapshotBehavior: "Creates persistent E2B snapshot templates; restore creates a new native sandbox and remains on raw.",
|
|
37
|
-
runtimeLimitations: "Requires Node.js 20.18.1 or newer and an E2B account."
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
id: "daytona",
|
|
41
|
-
displayName: "Daytona",
|
|
42
|
-
officialUrl: "https://www.daytona.io/docs/en/sandboxes/",
|
|
43
|
-
packageName: "@daytona/sdk",
|
|
44
|
-
packageVersion: "0.196.0",
|
|
45
|
-
capabilities: daytonaCapabilities,
|
|
46
|
-
environmentVariables: [
|
|
47
|
-
"DAYTONA_API_KEY",
|
|
48
|
-
"DAYTONA_API_URL",
|
|
49
|
-
"DAYTONA_TARGET"
|
|
50
|
-
],
|
|
51
|
-
technicalStatus: "supported",
|
|
52
|
-
providerReviewed: false,
|
|
53
|
-
sponsor: false,
|
|
54
|
-
liveTest: null,
|
|
55
|
-
portBehavior: "Returns public or token-authenticated preview URLs according to the sandbox setting.",
|
|
56
|
-
snapshotBehavior: "Daytona snapshot and fork operations have provider-specific lifecycle semantics and remain on raw.",
|
|
57
|
-
runtimeLimitations: "Some binary and streaming methods require a Node.js-compatible runtime."
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
id: "vercel",
|
|
61
|
-
displayName: "Vercel Sandbox",
|
|
62
|
-
officialUrl: "https://vercel.com/docs/sandbox",
|
|
63
|
-
packageName: "@vercel/sandbox",
|
|
64
|
-
packageVersion: "2.5.0",
|
|
65
|
-
capabilities: vercelCapabilities,
|
|
66
|
-
environmentVariables: [
|
|
67
|
-
"VERCEL_OIDC_TOKEN",
|
|
68
|
-
"VERCEL_TOKEN",
|
|
69
|
-
"VERCEL_TEAM_ID",
|
|
70
|
-
"VERCEL_PROJECT_ID"
|
|
71
|
-
],
|
|
72
|
-
technicalStatus: "supported",
|
|
73
|
-
providerReviewed: false,
|
|
74
|
-
sponsor: false,
|
|
75
|
-
liveTest: null,
|
|
76
|
-
portBehavior: "Returns a public vercel.run route. Port registration is updated when expose() is called.",
|
|
77
|
-
snapshotBehavior: "Creating a filesystem snapshot stops the session. Starting from it creates a new sandbox through raw.",
|
|
78
|
-
runtimeLimitations: "Available runtimes are controlled by Vercel; node24 is the adapter default."
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
id: "upstash",
|
|
82
|
-
displayName: "Upstash Box",
|
|
83
|
-
officialUrl: "https://upstash.com/docs/box",
|
|
84
|
-
packageName: "@upstash/box",
|
|
85
|
-
packageVersion: "0.5.3",
|
|
86
|
-
capabilities: upstashCapabilities,
|
|
87
|
-
environmentVariables: ["UPSTASH_BOX_API_KEY"],
|
|
88
|
-
technicalStatus: "supported",
|
|
89
|
-
providerReviewed: false,
|
|
90
|
-
sponsor: false,
|
|
91
|
-
liveTest: null,
|
|
92
|
-
portBehavior: "Creates a public URL by default, or a bearer-token URL whose credential stays inside request().",
|
|
93
|
-
snapshotBehavior: "Captures persistent workspace state. Restoring creates a new Box and remains available through raw.",
|
|
94
|
-
runtimeLimitations: "Durable Debian or Alpine boxes with Node.js, Python, Go, Ruby, or Rust runtimes."
|
|
95
|
-
}
|
|
96
|
-
];
|
|
97
|
-
function getProviderMetadata(id) {
|
|
98
|
-
return providers.find((provider) => provider.id === id);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
//#endregion
|
|
102
|
-
export { getProviderMetadata, providers };
|
|
103
|
-
//# sourceMappingURL=metadata.mjs.map
|
package/dist/metadata.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.mjs","names":["providers: readonly ProviderMetadata[]"],"sources":["../src/metadata.ts"],"sourcesContent":["import {\n daytonaCapabilities,\n e2bCapabilities,\n localCapabilities,\n upstashCapabilities,\n vercelCapabilities,\n} from \"./providers/capabilities\";\nimport type { CapabilityMap, ProviderName } from \"./core/types\";\n\nexport interface LiveTestResult {\n provider: ProviderName;\n testedAt: string;\n adapterVersion: string;\n providerSdkVersion: string;\n passed: number;\n failed: number;\n skipped: number;\n capabilities: Partial<CapabilityMap>;\n}\n\nexport interface ProviderMetadata {\n id: ProviderName;\n displayName: string;\n officialUrl: string;\n packageName: string | null;\n packageVersion: string;\n capabilities: CapabilityMap;\n environmentVariables: readonly string[];\n technicalStatus: \"supported\" | \"experimental\";\n providerReviewed: boolean;\n sponsor: boolean;\n liveTest: LiveTestResult | null;\n portBehavior: string;\n snapshotBehavior: string;\n runtimeLimitations: string;\n}\n\nexport const providers: readonly ProviderMetadata[] = [\n {\n id: \"local\",\n displayName: \"Local\",\n officialUrl: \"https://rivet.dev/docs/agent-os/\",\n packageName: \"@rivet-dev/agentos-core\",\n packageVersion: \"0.2.7\",\n capabilities: localCapabilities,\n environmentVariables: [],\n technicalStatus: \"supported\",\n providerReviewed: false,\n sponsor: false,\n liveTest: null,\n portBehavior:\n \"Returns a private in-process URL. HTTP traffic is bridged through ExposedPort.request().\",\n snapshotBehavior:\n \"Exports the AgentOS virtual filesystem and recreates the VM when restoring it.\",\n runtimeLimitations:\n \"Powered by the beta AgentOS runtime. Requires a supported Node.js host and cannot run arbitrary native Linux binaries.\",\n },\n {\n id: \"e2b\",\n displayName: \"E2B\",\n officialUrl: \"https://e2b.dev/docs\",\n packageName: \"e2b\",\n packageVersion: \"2.32.0\",\n capabilities: e2bCapabilities,\n environmentVariables: [\"E2B_API_KEY\"],\n technicalStatus: \"supported\",\n providerReviewed: false,\n sponsor: false,\n liveTest: null,\n portBehavior:\n \"Returns an E2B host. Restricted traffic uses the native access token only inside request().\",\n snapshotBehavior:\n \"Creates persistent E2B snapshot templates; restore creates a new native sandbox and remains on raw.\",\n runtimeLimitations: \"Requires Node.js 20.18.1 or newer and an E2B account.\",\n },\n {\n id: \"daytona\",\n displayName: \"Daytona\",\n officialUrl: \"https://www.daytona.io/docs/en/sandboxes/\",\n packageName: \"@daytona/sdk\",\n packageVersion: \"0.196.0\",\n capabilities: daytonaCapabilities,\n environmentVariables: [\"DAYTONA_API_KEY\", \"DAYTONA_API_URL\", \"DAYTONA_TARGET\"],\n technicalStatus: \"supported\",\n providerReviewed: false,\n sponsor: false,\n liveTest: null,\n portBehavior:\n \"Returns public or token-authenticated preview URLs according to the sandbox setting.\",\n snapshotBehavior:\n \"Daytona snapshot and fork operations have provider-specific lifecycle semantics and remain on raw.\",\n runtimeLimitations: \"Some binary and streaming methods require a Node.js-compatible runtime.\",\n },\n {\n id: \"vercel\",\n displayName: \"Vercel Sandbox\",\n officialUrl: \"https://vercel.com/docs/sandbox\",\n packageName: \"@vercel/sandbox\",\n packageVersion: \"2.5.0\",\n capabilities: vercelCapabilities,\n environmentVariables: [\n \"VERCEL_OIDC_TOKEN\",\n \"VERCEL_TOKEN\",\n \"VERCEL_TEAM_ID\",\n \"VERCEL_PROJECT_ID\",\n ],\n technicalStatus: \"supported\",\n providerReviewed: false,\n sponsor: false,\n liveTest: null,\n portBehavior:\n \"Returns a public vercel.run route. Port registration is updated when expose() is called.\",\n snapshotBehavior:\n \"Creating a filesystem snapshot stops the session. Starting from it creates a new sandbox through raw.\",\n runtimeLimitations:\n \"Available runtimes are controlled by Vercel; node24 is the adapter default.\",\n },\n {\n id: \"upstash\",\n displayName: \"Upstash Box\",\n officialUrl: \"https://upstash.com/docs/box\",\n packageName: \"@upstash/box\",\n packageVersion: \"0.5.3\",\n capabilities: upstashCapabilities,\n environmentVariables: [\"UPSTASH_BOX_API_KEY\"],\n technicalStatus: \"supported\",\n providerReviewed: false,\n sponsor: false,\n liveTest: null,\n portBehavior:\n \"Creates a public URL by default, or a bearer-token URL whose credential stays inside request().\",\n snapshotBehavior:\n \"Captures persistent workspace state. Restoring creates a new Box and remains available through raw.\",\n runtimeLimitations:\n \"Durable Debian or Alpine boxes with Node.js, Python, Go, Ruby, or Rust runtimes.\",\n },\n];\n\nexport function getProviderMetadata(id: ProviderName): ProviderMetadata {\n return providers.find((provider) => provider.id === id)!;\n}\n"],"mappings":";;;;;AAqCA,MAAaA,YAAyC;CACpD;EACE,IAAI;EACJ,aAAa;EACb,aAAa;EACb,aAAa;EACb,gBAAgB;EAChB,cAAc;EACd,sBAAsB,EAAE;EACxB,iBAAiB;EACjB,kBAAkB;EAClB,SAAS;EACT,UAAU;EACV,cACE;EACF,kBACE;EACF,oBACE;EACH;CACD;EACE,IAAI;EACJ,aAAa;EACb,aAAa;EACb,aAAa;EACb,gBAAgB;EAChB,cAAc;EACd,sBAAsB,CAAC,cAAc;EACrC,iBAAiB;EACjB,kBAAkB;EAClB,SAAS;EACT,UAAU;EACV,cACE;EACF,kBACE;EACF,oBAAoB;EACrB;CACD;EACE,IAAI;EACJ,aAAa;EACb,aAAa;EACb,aAAa;EACb,gBAAgB;EAChB,cAAc;EACd,sBAAsB;GAAC;GAAmB;GAAmB;GAAiB;EAC9E,iBAAiB;EACjB,kBAAkB;EAClB,SAAS;EACT,UAAU;EACV,cACE;EACF,kBACE;EACF,oBAAoB;EACrB;CACD;EACE,IAAI;EACJ,aAAa;EACb,aAAa;EACb,aAAa;EACb,gBAAgB;EAChB,cAAc;EACd,sBAAsB;GACpB;GACA;GACA;GACA;GACD;EACD,iBAAiB;EACjB,kBAAkB;EAClB,SAAS;EACT,UAAU;EACV,cACE;EACF,kBACE;EACF,oBACE;EACH;CACD;EACE,IAAI;EACJ,aAAa;EACb,aAAa;EACb,aAAa;EACb,gBAAgB;EAChB,cAAc;EACd,sBAAsB,CAAC,sBAAsB;EAC7C,iBAAiB;EACjB,kBAAkB;EAClB,SAAS;EACT,UAAU;EACV,cACE;EACF,kBACE;EACF,oBACE;EACH;CACF;AAED,SAAgB,oBAAoB,IAAoC;AACtE,QAAO,UAAU,MAAM,aAAa,SAAS,OAAO,GAAG"}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
import { a as CommandResult, d as RunOptions, f as Sandbox, g as SandboxProcess, i as CommandInput, n as CapabilityMap, o as ExposedPort, p as SandboxDirectoryEntry, s as FileValue, u as ProviderName, v as SandboxSnapshot } from "./types-DEi_dfRR.mjs";
|
|
2
|
-
|
|
3
|
-
//#region src/core/provider.d.ts
|
|
4
|
-
interface ProviderCreateOptions {
|
|
5
|
-
cwd: string;
|
|
6
|
-
env: Readonly<Record<string, string>>;
|
|
7
|
-
timeout?: number;
|
|
8
|
-
signal?: AbortSignal;
|
|
9
|
-
}
|
|
10
|
-
interface SandboxRuntime<TRaw> {
|
|
11
|
-
readonly id: string;
|
|
12
|
-
readonly raw: TRaw;
|
|
13
|
-
readonly capabilities: CapabilityMap;
|
|
14
|
-
files: {
|
|
15
|
-
write(path: string, value: FileValue): Promise<void>;
|
|
16
|
-
read(path: string): Promise<Uint8Array>;
|
|
17
|
-
list(path: string): Promise<SandboxDirectoryEntry[]>;
|
|
18
|
-
mkdir(path: string): Promise<void>;
|
|
19
|
-
remove(path: string): Promise<void>;
|
|
20
|
-
exists(path: string): Promise<boolean>;
|
|
21
|
-
};
|
|
22
|
-
run(command: CommandInput, options: RunOptions): Promise<CommandResult>;
|
|
23
|
-
start(command: CommandInput, options: RunOptions): Promise<SandboxProcess>;
|
|
24
|
-
expose(port: number): Promise<ExposedPort>;
|
|
25
|
-
snapshots: {
|
|
26
|
-
create(options?: {
|
|
27
|
-
name?: string;
|
|
28
|
-
}): Promise<SandboxSnapshot>;
|
|
29
|
-
delete(snapshot: SandboxSnapshot | string): Promise<void>;
|
|
30
|
-
restore(snapshot: SandboxSnapshot | string): Promise<void>;
|
|
31
|
-
};
|
|
32
|
-
stop(): Promise<void>;
|
|
33
|
-
}
|
|
34
|
-
interface SandboxProvider<TRaw> {
|
|
35
|
-
readonly id: ProviderName;
|
|
36
|
-
readonly capabilities: CapabilityMap;
|
|
37
|
-
create(options: ProviderCreateOptions): Promise<SandboxRuntime<TRaw>>;
|
|
38
|
-
readonly managed?: ManagedSandboxProvider;
|
|
39
|
-
}
|
|
40
|
-
type SandboxNetworkPolicy = {
|
|
41
|
-
mode: "allow-all";
|
|
42
|
-
} | {
|
|
43
|
-
mode: "deny-all";
|
|
44
|
-
} | {
|
|
45
|
-
mode: "native";
|
|
46
|
-
value: unknown;
|
|
47
|
-
} | {
|
|
48
|
-
mode: "custom";
|
|
49
|
-
allowedHosts?: readonly string[];
|
|
50
|
-
allowedCIDRs?: readonly string[];
|
|
51
|
-
deniedCIDRs?: readonly string[];
|
|
52
|
-
};
|
|
53
|
-
interface ManagedSandboxCreateOptions {
|
|
54
|
-
readonly sessionId: string;
|
|
55
|
-
readonly identity?: string;
|
|
56
|
-
readonly cwd?: string;
|
|
57
|
-
readonly env?: Readonly<Record<string, string>>;
|
|
58
|
-
readonly ports?: ReadonlyArray<number>;
|
|
59
|
-
readonly signal?: AbortSignal;
|
|
60
|
-
readonly onFirstCreate?: (sandbox: Sandbox) => void | Promise<void>;
|
|
61
|
-
}
|
|
62
|
-
interface ManagedSandboxResumeOptions {
|
|
63
|
-
readonly sessionId: string;
|
|
64
|
-
readonly signal?: AbortSignal;
|
|
65
|
-
}
|
|
66
|
-
/** Optional lifecycle surface implemented by providers for durable agent sessions. */
|
|
67
|
-
interface ManagedSandboxSession {
|
|
68
|
-
readonly id: string;
|
|
69
|
-
readonly sandbox: Sandbox;
|
|
70
|
-
readonly defaultWorkingDirectory: string;
|
|
71
|
-
readonly ports: ReadonlyArray<number>;
|
|
72
|
-
getPortUrl(options: {
|
|
73
|
-
port: number;
|
|
74
|
-
protocol?: "http" | "https" | "ws";
|
|
75
|
-
}): Promise<string>;
|
|
76
|
-
stop(): Promise<void>;
|
|
77
|
-
/** Reattach or restart a session after managed stop. */
|
|
78
|
-
resume(): Promise<void>;
|
|
79
|
-
destroy(): Promise<void>;
|
|
80
|
-
setPorts?(ports: ReadonlyArray<number>, options?: {
|
|
81
|
-
signal?: AbortSignal;
|
|
82
|
-
}): Promise<void>;
|
|
83
|
-
setNetworkPolicy?(policy: SandboxNetworkPolicy): Promise<void>;
|
|
84
|
-
}
|
|
85
|
-
interface ManagedSandboxProvider {
|
|
86
|
-
create(options: ManagedSandboxCreateOptions): Promise<ManagedSandboxSession>;
|
|
87
|
-
resume(options: ManagedSandboxResumeOptions): Promise<ManagedSandboxSession>;
|
|
88
|
-
}
|
|
89
|
-
//#endregion
|
|
90
|
-
export { SandboxNetworkPolicy as a, ManagedSandboxSession as i, ManagedSandboxProvider as n, SandboxProvider as o, ManagedSandboxResumeOptions as r, ManagedSandboxCreateOptions as t };
|
|
91
|
-
//# sourceMappingURL=provider-BzzkIVmv.d.mts.map
|
|
@@ -1,201 +0,0 @@
|
|
|
1
|
-
import { t as SandboxError } from "./errors-Ch9PHKTd.mjs";
|
|
2
|
-
import { t as createSandbox } from "./sandbox-rIOcbhtM.mjs";
|
|
3
|
-
|
|
4
|
-
//#region src/internal/managed-provider.ts
|
|
5
|
-
/**
|
|
6
|
-
* Shared managed lifecycle for built-in providers. Provider-native implementations
|
|
7
|
-
* can replace this optional surface without changing `createSandbox()`.
|
|
8
|
-
*/
|
|
9
|
-
function withManagedSessions(provider, configuredPorts = [], lifecycle = {}) {
|
|
10
|
-
const sessions = /* @__PURE__ */ new Map();
|
|
11
|
-
const templates = /* @__PURE__ */ new Map();
|
|
12
|
-
const managed = {
|
|
13
|
-
async create(options) {
|
|
14
|
-
const existing = sessions.get(options.sessionId);
|
|
15
|
-
if (existing) return existing;
|
|
16
|
-
const sandbox = await createSandbox({
|
|
17
|
-
provider,
|
|
18
|
-
cwd: options.cwd,
|
|
19
|
-
env: options.env,
|
|
20
|
-
signal: options.signal
|
|
21
|
-
});
|
|
22
|
-
const ports = new Set([...configuredPorts, ...options.ports ?? []]);
|
|
23
|
-
let ownedTemplate;
|
|
24
|
-
try {
|
|
25
|
-
if (options.identity) {
|
|
26
|
-
let template = templates.get(options.identity);
|
|
27
|
-
if (!template) {
|
|
28
|
-
template = (async () => {
|
|
29
|
-
await options.onFirstCreate?.(sandbox);
|
|
30
|
-
return captureFiles(sandbox, sandbox.cwd);
|
|
31
|
-
})();
|
|
32
|
-
ownedTemplate = template;
|
|
33
|
-
templates.set(options.identity, template);
|
|
34
|
-
await template;
|
|
35
|
-
} else await restoreFiles(sandbox, await template);
|
|
36
|
-
} else await options.onFirstCreate?.(sandbox);
|
|
37
|
-
const session = createManagedSession(options.sessionId, sandbox, ports, sessions, lifecycle);
|
|
38
|
-
sessions.set(options.sessionId, session);
|
|
39
|
-
return session;
|
|
40
|
-
} catch (error) {
|
|
41
|
-
if (options.identity && ownedTemplate && templates.get(options.identity) === ownedTemplate) templates.delete(options.identity);
|
|
42
|
-
try {
|
|
43
|
-
if (lifecycle.destroy) await lifecycle.destroy(sandbox);
|
|
44
|
-
else await sandbox.stop();
|
|
45
|
-
} catch (cleanupError) {
|
|
46
|
-
if (error instanceof Error) Object.defineProperty(error, "cleanupError", {
|
|
47
|
-
value: cleanupError,
|
|
48
|
-
enumerable: false
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
throw error;
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
async resume(options) {
|
|
55
|
-
const session = sessions.get(options.sessionId);
|
|
56
|
-
if (!session) throw new SandboxError({
|
|
57
|
-
code: "not_found",
|
|
58
|
-
provider: provider.id,
|
|
59
|
-
operation: "managed.resume",
|
|
60
|
-
message: `Managed sandbox session not found: ${options.sessionId}`
|
|
61
|
-
});
|
|
62
|
-
await session.resume();
|
|
63
|
-
return session;
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
return {
|
|
67
|
-
...provider,
|
|
68
|
-
managed
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
function createManagedSession(id, sandbox, initialPorts, sessions, lifecycle) {
|
|
72
|
-
let destroyed = false;
|
|
73
|
-
let stopped = false;
|
|
74
|
-
const assertActive = () => {
|
|
75
|
-
if (destroyed) throw new SandboxError({
|
|
76
|
-
code: "terminated",
|
|
77
|
-
provider: sandbox.provider,
|
|
78
|
-
operation: "managed.session",
|
|
79
|
-
message: `Managed sandbox session has been destroyed: ${id}`
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
|
-
return {
|
|
83
|
-
id,
|
|
84
|
-
sandbox,
|
|
85
|
-
defaultWorkingDirectory: sandbox.cwd,
|
|
86
|
-
get ports() {
|
|
87
|
-
return [...initialPorts];
|
|
88
|
-
},
|
|
89
|
-
async getPortUrl({ port, protocol }) {
|
|
90
|
-
assertActive();
|
|
91
|
-
if (!initialPorts.has(port)) throw new SandboxError({
|
|
92
|
-
code: "invalid_input",
|
|
93
|
-
provider: sandbox.provider,
|
|
94
|
-
operation: "managed.getPortUrl",
|
|
95
|
-
message: `Port ${port} is not exposed by this session`
|
|
96
|
-
});
|
|
97
|
-
const exposed = await sandbox.ports.expose(port);
|
|
98
|
-
const url = new URL(exposed.url);
|
|
99
|
-
if (protocol) url.protocol = `${protocol}:`;
|
|
100
|
-
return url.toString().replace(/\/$/, "");
|
|
101
|
-
},
|
|
102
|
-
async stop() {
|
|
103
|
-
assertActive();
|
|
104
|
-
if (stopped) return;
|
|
105
|
-
await lifecycle.stop?.(sandbox);
|
|
106
|
-
stopped = true;
|
|
107
|
-
},
|
|
108
|
-
async resume() {
|
|
109
|
-
assertActive();
|
|
110
|
-
if (!stopped) return;
|
|
111
|
-
await lifecycle.resume?.(sandbox);
|
|
112
|
-
stopped = false;
|
|
113
|
-
},
|
|
114
|
-
async destroy() {
|
|
115
|
-
if (destroyed) return;
|
|
116
|
-
destroyed = true;
|
|
117
|
-
sessions.delete(id);
|
|
118
|
-
if (lifecycle.destroy) await lifecycle.destroy(sandbox);
|
|
119
|
-
else await sandbox.stop();
|
|
120
|
-
},
|
|
121
|
-
...lifecycle.setPorts ? { async setPorts(ports, options) {
|
|
122
|
-
assertActive();
|
|
123
|
-
await lifecycle.setPorts(sandbox, ports, options?.signal);
|
|
124
|
-
initialPorts.clear();
|
|
125
|
-
for (const port of ports) initialPorts.add(port);
|
|
126
|
-
} } : {},
|
|
127
|
-
...lifecycle.setNetworkPolicy ? { setNetworkPolicy: (policy) => {
|
|
128
|
-
assertActive();
|
|
129
|
-
return lifecycle.setNetworkPolicy(sandbox, policy);
|
|
130
|
-
} } : {}
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
async function captureFiles(sandbox, path) {
|
|
134
|
-
const result = [];
|
|
135
|
-
for (const entry of await sandbox.files.list(path)) if (entry.type === "directory") result.push(...await captureFiles(sandbox, entry.path));
|
|
136
|
-
else if (entry.type === "file") result.push({
|
|
137
|
-
path: entry.path,
|
|
138
|
-
content: await sandbox.files.read(entry.path)
|
|
139
|
-
});
|
|
140
|
-
return result;
|
|
141
|
-
}
|
|
142
|
-
async function restoreFiles(sandbox, files) {
|
|
143
|
-
await Promise.all(files.map((file) => sandbox.files.write(file.path, file.content)));
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
//#endregion
|
|
147
|
-
//#region src/internal/provider-utils.ts
|
|
148
|
-
async function toUint8Array(value) {
|
|
149
|
-
if (typeof value === "string") return new TextEncoder().encode(value);
|
|
150
|
-
if (value instanceof Uint8Array) return value;
|
|
151
|
-
if (value instanceof ArrayBuffer) return new Uint8Array(value);
|
|
152
|
-
if (value instanceof Blob) return new Uint8Array(await value.arrayBuffer());
|
|
153
|
-
const response = new Response(value);
|
|
154
|
-
return new Uint8Array(await response.arrayBuffer());
|
|
155
|
-
}
|
|
156
|
-
function commandString(input) {
|
|
157
|
-
if (typeof input === "string") return input;
|
|
158
|
-
return [input.command, ...input.args ?? []].map(shellQuote).join(" ");
|
|
159
|
-
}
|
|
160
|
-
function shellQuote(value) {
|
|
161
|
-
return `'${value.replaceAll("'", `'"'"'`)}'`;
|
|
162
|
-
}
|
|
163
|
-
function portResult(port, url, isPublic, authenticated, request) {
|
|
164
|
-
return {
|
|
165
|
-
port,
|
|
166
|
-
url,
|
|
167
|
-
public: isPublic,
|
|
168
|
-
authenticated,
|
|
169
|
-
request,
|
|
170
|
-
toJSON: () => ({
|
|
171
|
-
port,
|
|
172
|
-
url: authenticated ? redactUrl(url) : url,
|
|
173
|
-
public: isPublic,
|
|
174
|
-
authenticated
|
|
175
|
-
})
|
|
176
|
-
};
|
|
177
|
-
}
|
|
178
|
-
function redactUrl(url) {
|
|
179
|
-
const parsed = new URL(url);
|
|
180
|
-
for (const key of parsed.searchParams.keys()) parsed.searchParams.set(key, "[REDACTED]");
|
|
181
|
-
return parsed.toString();
|
|
182
|
-
}
|
|
183
|
-
function unsupported(provider, operation) {
|
|
184
|
-
throw new SandboxError({
|
|
185
|
-
code: "unsupported",
|
|
186
|
-
provider,
|
|
187
|
-
operation,
|
|
188
|
-
message: `${provider} does not support normalized ${operation}`
|
|
189
|
-
});
|
|
190
|
-
}
|
|
191
|
-
function unsupportedSnapshots(provider) {
|
|
192
|
-
return {
|
|
193
|
-
create: async () => unsupported(provider, "snapshot.create"),
|
|
194
|
-
delete: async () => unsupported(provider, "snapshot.delete"),
|
|
195
|
-
restore: async () => unsupported(provider, "snapshot.restore")
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
//#endregion
|
|
200
|
-
export { unsupportedSnapshots as a, unsupported as i, portResult as n, withManagedSessions as o, toUint8Array as r, commandString as t };
|
|
201
|
-
//# sourceMappingURL=provider-utils-BjOSWNsh.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider-utils-BjOSWNsh.mjs","names":["managed: ManagedSandboxProvider","ownedTemplate: Promise<TemplateFile[]> | undefined","result: TemplateFile[]"],"sources":["../src/internal/managed-provider.ts","../src/internal/provider-utils.ts"],"sourcesContent":["import { SandboxError } from \"../core/errors\";\nimport type {\n ManagedSandboxProvider,\n ManagedSandboxSession,\n SandboxProvider,\n} from \"../core/provider\";\nimport { createSandbox } from \"../core/sandbox\";\nimport type { Sandbox } from \"../core/types\";\nimport type { SandboxNetworkPolicy } from \"../core/provider\";\n\ntype TemplateFile = { path: string; content: Uint8Array };\n\n/**\n * Shared managed lifecycle for built-in providers. Provider-native implementations\n * can replace this optional surface without changing `createSandbox()`.\n */\nexport function withManagedSessions<TRaw>(\n provider: SandboxProvider<TRaw>,\n configuredPorts: ReadonlyArray<number> = [],\n lifecycle: {\n stop?: (sandbox: Sandbox<TRaw>) => Promise<void>;\n resume?: (sandbox: Sandbox<TRaw>) => Promise<void>;\n destroy?: (sandbox: Sandbox<TRaw>) => Promise<void>;\n setPorts?: (\n sandbox: Sandbox<TRaw>,\n ports: ReadonlyArray<number>,\n signal?: AbortSignal,\n ) => Promise<void>;\n setNetworkPolicy?: (sandbox: Sandbox<TRaw>, policy: SandboxNetworkPolicy) => Promise<void>;\n } = {},\n): SandboxProvider<TRaw> {\n const sessions = new Map<string, ManagedSandboxSession>();\n const templates = new Map<string, Promise<TemplateFile[]>>();\n\n const managed: ManagedSandboxProvider = {\n async create(options) {\n const existing = sessions.get(options.sessionId);\n if (existing) return existing;\n const sandbox = await createSandbox({\n provider,\n cwd: options.cwd,\n env: options.env,\n signal: options.signal,\n });\n const ports = new Set([...configuredPorts, ...(options.ports ?? [])]);\n let ownedTemplate: Promise<TemplateFile[]> | undefined;\n try {\n if (options.identity) {\n let template = templates.get(options.identity);\n if (!template) {\n template = (async () => {\n await options.onFirstCreate?.(sandbox);\n return captureFiles(sandbox, sandbox.cwd);\n })();\n ownedTemplate = template;\n templates.set(options.identity, template);\n await template;\n } else {\n await restoreFiles(sandbox, await template);\n }\n } else {\n await options.onFirstCreate?.(sandbox);\n }\n const session = createManagedSession(\n options.sessionId,\n sandbox,\n ports,\n sessions,\n lifecycle,\n );\n sessions.set(options.sessionId, session);\n return session;\n } catch (error) {\n if (\n options.identity &&\n ownedTemplate &&\n templates.get(options.identity) === ownedTemplate\n ) {\n templates.delete(options.identity);\n }\n try {\n if (lifecycle.destroy) await lifecycle.destroy(sandbox);\n else await sandbox.stop();\n } catch (cleanupError) {\n if (error instanceof Error) {\n Object.defineProperty(error, \"cleanupError\", {\n value: cleanupError,\n enumerable: false,\n });\n }\n }\n throw error;\n }\n },\n async resume(options) {\n const session = sessions.get(options.sessionId);\n if (!session) {\n throw new SandboxError({\n code: \"not_found\",\n provider: provider.id,\n operation: \"managed.resume\",\n message: `Managed sandbox session not found: ${options.sessionId}`,\n });\n }\n await session.resume();\n return session;\n },\n };\n return { ...provider, managed };\n}\n\nfunction createManagedSession<TRaw>(\n id: string,\n sandbox: Sandbox<TRaw>,\n initialPorts: Set<number>,\n sessions: Map<string, ManagedSandboxSession>,\n lifecycle: {\n stop?: (sandbox: Sandbox<TRaw>) => Promise<void>;\n resume?: (sandbox: Sandbox<TRaw>) => Promise<void>;\n destroy?: (sandbox: Sandbox<TRaw>) => Promise<void>;\n setPorts?: (\n sandbox: Sandbox<TRaw>,\n ports: ReadonlyArray<number>,\n signal?: AbortSignal,\n ) => Promise<void>;\n setNetworkPolicy?: (sandbox: Sandbox<TRaw>, policy: SandboxNetworkPolicy) => Promise<void>;\n },\n): ManagedSandboxSession {\n let destroyed = false;\n let stopped = false;\n const assertActive = () => {\n if (destroyed) {\n throw new SandboxError({\n code: \"terminated\",\n provider: sandbox.provider,\n operation: \"managed.session\",\n message: `Managed sandbox session has been destroyed: ${id}`,\n });\n }\n };\n const session: ManagedSandboxSession = {\n id,\n sandbox,\n defaultWorkingDirectory: sandbox.cwd,\n get ports() {\n return [...initialPorts];\n },\n async getPortUrl({ port, protocol }) {\n assertActive();\n if (!initialPorts.has(port)) {\n throw new SandboxError({\n code: \"invalid_input\",\n provider: sandbox.provider,\n operation: \"managed.getPortUrl\",\n message: `Port ${port} is not exposed by this session`,\n });\n }\n const exposed = await sandbox.ports.expose(port);\n const url = new URL(exposed.url);\n if (protocol) url.protocol = `${protocol}:`;\n return url.toString().replace(/\\/$/, \"\");\n },\n async stop() {\n assertActive();\n if (stopped) return;\n await lifecycle.stop?.(sandbox);\n stopped = true;\n },\n async resume() {\n assertActive();\n if (!stopped) return;\n await lifecycle.resume?.(sandbox);\n stopped = false;\n },\n async destroy() {\n if (destroyed) return;\n destroyed = true;\n sessions.delete(id);\n if (lifecycle.destroy) await lifecycle.destroy(sandbox);\n else await sandbox.stop();\n },\n ...(lifecycle.setPorts\n ? {\n async setPorts(ports: ReadonlyArray<number>, options?: { signal?: AbortSignal }) {\n assertActive();\n await lifecycle.setPorts!(sandbox, ports, options?.signal);\n initialPorts.clear();\n for (const port of ports) initialPorts.add(port);\n },\n }\n : {}),\n ...(lifecycle.setNetworkPolicy\n ? {\n setNetworkPolicy: (policy: SandboxNetworkPolicy) => {\n assertActive();\n return lifecycle.setNetworkPolicy!(sandbox, policy);\n },\n }\n : {}),\n };\n return session;\n}\n\nasync function captureFiles(sandbox: Sandbox, path: string): Promise<TemplateFile[]> {\n const result: TemplateFile[] = [];\n for (const entry of await sandbox.files.list(path)) {\n if (entry.type === \"directory\") result.push(...(await captureFiles(sandbox, entry.path)));\n else if (entry.type === \"file\")\n result.push({\n path: entry.path,\n content: await sandbox.files.read(entry.path),\n });\n }\n return result;\n}\n\nasync function restoreFiles(sandbox: Sandbox, files: ReadonlyArray<TemplateFile>): Promise<void> {\n await Promise.all(files.map((file) => sandbox.files.write(file.path, file.content)));\n}\n","import { SandboxError } from \"../core/errors\";\nimport type { CommandInput, ExposedPort, FileValue, SandboxSnapshot } from \"../core/types\";\n\nexport async function toUint8Array(value: FileValue): Promise<Uint8Array> {\n if (typeof value === \"string\") return new TextEncoder().encode(value);\n if (value instanceof Uint8Array) return value;\n if (value instanceof ArrayBuffer) return new Uint8Array(value);\n if (value instanceof Blob) return new Uint8Array(await value.arrayBuffer());\n const response = new Response(value);\n return new Uint8Array(await response.arrayBuffer());\n}\n\nexport function commandString(input: CommandInput): string {\n if (typeof input === \"string\") return input;\n return [input.command, ...(input.args ?? [])].map(shellQuote).join(\" \");\n}\n\nfunction shellQuote(value: string): string {\n return `'${value.replaceAll(\"'\", `'\"'\"'`)}'`;\n}\n\nexport function portResult(\n port: number,\n url: string,\n isPublic: boolean,\n authenticated: boolean,\n request?: (path?: string, init?: RequestInit) => Promise<Response>,\n): ExposedPort {\n return {\n port,\n url,\n public: isPublic,\n authenticated,\n request,\n toJSON: () => ({\n port,\n url: authenticated ? redactUrl(url) : url,\n public: isPublic,\n authenticated,\n }),\n };\n}\n\nfunction redactUrl(url: string): string {\n const parsed = new URL(url);\n for (const key of parsed.searchParams.keys()) parsed.searchParams.set(key, \"[REDACTED]\");\n return parsed.toString();\n}\n\nexport function unsupported(provider: string, operation: string): never {\n throw new SandboxError({\n code: \"unsupported\",\n provider,\n operation,\n message: `${provider} does not support normalized ${operation}`,\n });\n}\n\nexport function unsupportedSnapshots(provider: string) {\n return {\n create: async (): Promise<SandboxSnapshot> => unsupported(provider, \"snapshot.create\"),\n delete: async (): Promise<void> => unsupported(provider, \"snapshot.delete\"),\n restore: async (): Promise<void> => unsupported(provider, \"snapshot.restore\"),\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import "../../types-DEi_dfRR.mjs";
|
|
2
|
-
import "../../provider-BzzkIVmv.mjs";
|
|
3
|
-
import "../../index-BufLdrbp.mjs";
|
|
4
|
-
import "../../sandbox-Dco6z9aB.mjs";
|
|
5
|
-
import { t as agentosCapabilities } from "../../capabilities-DftdOpIu.mjs";
|
|
6
|
-
import { n as AgentOsSandbox, r as agentos, t as AgentOsProviderOptions } from "../../index-Bk6GmoEt.mjs";
|
|
7
|
-
export { AgentOsProviderOptions, AgentOsSandbox, agentos, agentosCapabilities };
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import "../../errors-Ch9PHKTd.mjs";
|
|
2
|
-
import "../../capabilities-COKpwoFH.mjs";
|
|
3
|
-
import "../../sandbox-rIOcbhtM.mjs";
|
|
4
|
-
import { t as agentosCapabilities } from "../../capabilities-CEowrzRM.mjs";
|
|
5
|
-
import "../../provider-utils-BjOSWNsh.mjs";
|
|
6
|
-
import { t as agentos } from "../../agentos-DFJ4TFaY.mjs";
|
|
7
|
-
|
|
8
|
-
export { agentos, agentosCapabilities };
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import "../../types-DEi_dfRR.mjs";
|
|
2
|
-
import { o as SandboxProvider } from "../../provider-BzzkIVmv.mjs";
|
|
3
|
-
import "../../index-BufLdrbp.mjs";
|
|
4
|
-
import "../../sandbox-Dco6z9aB.mjs";
|
|
5
|
-
import { n as daytonaCapabilities } from "../../capabilities-DftdOpIu.mjs";
|
|
6
|
-
import { Sandbox as DaytonaSandbox } from "@daytona/sdk";
|
|
7
|
-
|
|
8
|
-
//#region src/providers/daytona/index.d.ts
|
|
9
|
-
interface DaytonaOptions {
|
|
10
|
-
apiKey?: string;
|
|
11
|
-
apiUrl?: string;
|
|
12
|
-
target?: string;
|
|
13
|
-
image?: string;
|
|
14
|
-
language?: string;
|
|
15
|
-
name?: string;
|
|
16
|
-
public?: boolean;
|
|
17
|
-
}
|
|
18
|
-
declare function daytona(options?: DaytonaOptions): SandboxProvider<DaytonaSandbox>;
|
|
19
|
-
//#endregion
|
|
20
|
-
export { DaytonaOptions, type DaytonaSandbox, daytona, daytonaCapabilities };
|
|
21
|
-
//# sourceMappingURL=index.d.mts.map
|