@opencoredev/sandbox-sdk 0.2.0 → 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.
Files changed (166) hide show
  1. package/CHANGELOG.md +32 -11
  2. package/README.md +350 -25
  3. package/dist/ai.d.ts +5 -0
  4. package/dist/ai.js +1 -0
  5. package/dist/chunk-59t3rqja.js +2 -0
  6. package/dist/chunk-cwx6cc31.js +2 -0
  7. package/dist/chunk-exv1kf89.js +60 -0
  8. package/dist/chunk-gc8zdxyb.js +2 -0
  9. package/dist/chunk-hjzhc3qg.js +40 -0
  10. package/dist/chunk-md6fmprc.js +1 -0
  11. package/dist/chunk-t5vr9nd8.js +8 -0
  12. package/dist/chunk-v6y7eqxw.js +27 -0
  13. package/dist/chunk-yed8mvs7.js +2 -0
  14. package/dist/chunk-yrsb6hws.js +5 -0
  15. package/dist/chunk-z9rjzn28.js +2 -0
  16. package/dist/errors.d.ts +60 -0
  17. package/dist/files.d.ts +57 -0
  18. package/dist/git.d.ts +28 -0
  19. package/dist/handle.d.ts +4 -0
  20. package/dist/index.d.ts +17 -0
  21. package/dist/index.js +1 -0
  22. package/dist/keys.d.ts +5 -0
  23. package/dist/logs.d.ts +8 -0
  24. package/dist/mastra.d.ts +43 -0
  25. package/dist/mastra.js +1 -0
  26. package/dist/memory.d.ts +34 -0
  27. package/dist/memory.js +11 -0
  28. package/dist/openai.d.ts +39 -0
  29. package/dist/openai.js +1 -0
  30. package/dist/peer.d.ts +5 -0
  31. package/dist/processes.d.ts +71 -0
  32. package/dist/provider.d.ts +138 -0
  33. package/dist/provider.js +0 -0
  34. package/dist/providers/agentos/errors.d.ts +4 -0
  35. package/dist/providers/agentos/index.d.ts +11 -0
  36. package/dist/providers/agentos/index.js +2 -0
  37. package/dist/providers/boat/index.d.ts +23 -0
  38. package/dist/providers/boat/index.js +1 -0
  39. package/dist/providers/boat-api/errors.d.ts +6 -0
  40. package/dist/providers/boat-api/exec.d.ts +11 -0
  41. package/dist/providers/boat-api/index.d.ts +22 -0
  42. package/dist/providers/boxd/errors.d.ts +3 -0
  43. package/dist/providers/boxd/execute.d.ts +3 -0
  44. package/dist/providers/boxd/guest.d.ts +14 -0
  45. package/dist/providers/boxd/index.d.ts +23 -0
  46. package/dist/providers/boxd/index.js +85 -0
  47. package/dist/providers/boxd/transfers.d.ts +19 -0
  48. package/dist/providers/daytona/buffered.d.ts +3 -0
  49. package/dist/providers/daytona/errors.d.ts +3 -0
  50. package/dist/providers/daytona/exec.d.ts +14 -0
  51. package/dist/providers/daytona/index.d.ts +24 -0
  52. package/dist/providers/daytona/index.js +88 -0
  53. package/dist/providers/e2b/errors.d.ts +3 -0
  54. package/dist/providers/e2b/index.d.ts +15 -0
  55. package/dist/providers/e2b/index.js +1 -0
  56. package/dist/providers/freestyle/deadline.d.ts +4 -0
  57. package/dist/providers/freestyle/errors.d.ts +16 -0
  58. package/dist/providers/freestyle/execute.d.ts +12 -0
  59. package/dist/providers/freestyle/index.d.ts +14 -0
  60. package/dist/providers/freestyle/index.js +133 -0
  61. package/dist/providers/freestyle/wire.d.ts +10 -0
  62. package/dist/providers/local/docker.d.ts +32 -0
  63. package/dist/providers/local/index.d.ts +17 -0
  64. package/dist/providers/local/index.js +2 -0
  65. package/dist/providers/railway/errors.d.ts +4 -0
  66. package/dist/providers/railway/index.d.ts +24 -0
  67. package/dist/providers/railway/index.js +1 -0
  68. package/dist/providers/sandboxer/index.d.ts +33 -0
  69. package/dist/providers/sandboxer/index.js +1 -0
  70. package/dist/providers/superserve/bootstrap.d.ts +11 -0
  71. package/dist/providers/superserve/errors.d.ts +3 -0
  72. package/dist/providers/superserve/execute.d.ts +13 -0
  73. package/dist/providers/superserve/index.d.ts +23 -0
  74. package/dist/providers/superserve/index.js +126 -0
  75. package/dist/providers/tenki/deadline.d.ts +2 -0
  76. package/dist/providers/tenki/errors.d.ts +10 -0
  77. package/dist/providers/tenki/exec.d.ts +4 -0
  78. package/dist/providers/tenki/files.d.ts +3 -0
  79. package/dist/providers/tenki/index.d.ts +28 -0
  80. package/dist/providers/tenki/index.js +172 -0
  81. package/dist/providers/tenki/ready.d.ts +7 -0
  82. package/dist/providers/tenki/stream.d.ts +3 -0
  83. package/dist/providers/upstash/buffered.d.ts +3 -0
  84. package/dist/providers/upstash/errors.d.ts +3 -0
  85. package/dist/providers/upstash/exec.d.ts +18 -0
  86. package/dist/providers/upstash/files.d.ts +15 -0
  87. package/dist/providers/upstash/index.d.ts +38 -0
  88. package/dist/providers/upstash/index.js +111 -0
  89. package/dist/providers/vercel/errors.d.ts +3 -0
  90. package/dist/providers/vercel/index.d.ts +14 -0
  91. package/dist/providers/vercel/index.js +1 -0
  92. package/dist/providers/vercel/provider.d.ts +10 -0
  93. package/dist/providers/vercel/transport.d.ts +40 -0
  94. package/dist/run.d.ts +41 -0
  95. package/dist/testing.d.ts +17 -0
  96. package/dist/testing.js +6 -0
  97. package/dist/tool-security.d.ts +9 -0
  98. package/dist/tools.d.ts +117 -0
  99. package/dist/tools.js +1 -0
  100. package/dist/types.d.ts +189 -0
  101. package/package.json +164 -106
  102. package/dist/agentos-CbrZW7R0.mjs +0 -390
  103. package/dist/agentos-CbrZW7R0.mjs.map +0 -1
  104. package/dist/ai/harness.d.mts +0 -16
  105. package/dist/ai/harness.mjs +0 -69
  106. package/dist/ai/harness.mjs.map +0 -1
  107. package/dist/ai/index.d.mts +0 -54
  108. package/dist/ai/index.mjs +0 -4
  109. package/dist/ai-DeFa8yPk.mjs +0 -243
  110. package/dist/ai-DeFa8yPk.mjs.map +0 -1
  111. package/dist/capabilities-BWvOVFbH.d.mts +0 -15
  112. package/dist/capabilities-CaSNd6J1.mjs +0 -125
  113. package/dist/capabilities-CaSNd6J1.mjs.map +0 -1
  114. package/dist/capabilities-xs9kaHrK.mjs +0 -28
  115. package/dist/capabilities-xs9kaHrK.mjs.map +0 -1
  116. package/dist/errors-BuF9bYOQ.mjs +0 -68
  117. package/dist/errors-BuF9bYOQ.mjs.map +0 -1
  118. package/dist/eve/index.d.mts +0 -19
  119. package/dist/eve/index.mjs +0 -155
  120. package/dist/eve/index.mjs.map +0 -1
  121. package/dist/index-CkTwqD0X.d.mts +0 -25
  122. package/dist/index-Dh9xob2s.d.mts +0 -31
  123. package/dist/index.d.mts +0 -5
  124. package/dist/index.mjs +0 -40
  125. package/dist/index.mjs.map +0 -1
  126. package/dist/managed-provider-BsZGVQ4I.mjs +0 -148
  127. package/dist/managed-provider-BsZGVQ4I.mjs.map +0 -1
  128. package/dist/mastra/index.d.mts +0 -118
  129. package/dist/mastra/index.mjs +0 -662
  130. package/dist/mastra/index.mjs.map +0 -1
  131. package/dist/metadata.d.mts +0 -34
  132. package/dist/metadata.mjs +0 -135
  133. package/dist/metadata.mjs.map +0 -1
  134. package/dist/provider-DOBErkBO.d.mts +0 -91
  135. package/dist/provider-utils-CfB9nvJx.mjs +0 -57
  136. package/dist/provider-utils-CfB9nvJx.mjs.map +0 -1
  137. package/dist/providers/agentos/index.d.mts +0 -7
  138. package/dist/providers/agentos/index.mjs +0 -9
  139. package/dist/providers/box/index.d.mts +0 -34
  140. package/dist/providers/box/index.mjs +0 -348
  141. package/dist/providers/box/index.mjs.map +0 -1
  142. package/dist/providers/daytona/index.d.mts +0 -21
  143. package/dist/providers/daytona/index.mjs +0 -206
  144. package/dist/providers/daytona/index.mjs.map +0 -1
  145. package/dist/providers/e2b/index.d.mts +0 -17
  146. package/dist/providers/e2b/index.mjs +0 -169
  147. package/dist/providers/e2b/index.mjs.map +0 -1
  148. package/dist/providers/local/index.d.mts +0 -22
  149. package/dist/providers/local/index.mjs +0 -22
  150. package/dist/providers/local/index.mjs.map +0 -1
  151. package/dist/providers/railway/index.d.mts +0 -29
  152. package/dist/providers/railway/index.mjs +0 -211
  153. package/dist/providers/railway/index.mjs.map +0 -1
  154. package/dist/providers/upstash/index.d.mts +0 -17
  155. package/dist/providers/upstash/index.mjs +0 -211
  156. package/dist/providers/upstash/index.mjs.map +0 -1
  157. package/dist/providers/vercel/index.d.mts +0 -28
  158. package/dist/providers/vercel/index.mjs +0 -186
  159. package/dist/providers/vercel/index.mjs.map +0 -1
  160. package/dist/sandbox-DdEqoXJF.d.mts +0 -26
  161. package/dist/sandbox-DgtY5hvt.mjs +0 -112
  162. package/dist/sandbox-DgtY5hvt.mjs.map +0 -1
  163. package/dist/testing/index.d.mts +0 -27
  164. package/dist/testing/index.mjs +0 -173
  165. package/dist/testing/index.mjs.map +0 -1
  166. package/dist/types-Bv6I2U1c.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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"}
@@ -1,34 +0,0 @@
1
- import { n as CapabilityMap, u as ProviderName } from "./types-Bv6I2U1c.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,135 +0,0 @@
1
- import "./errors-BuF9bYOQ.mjs";
2
- import "./capabilities-xs9kaHrK.mjs";
3
- import { a as localCapabilities, c as vercelCapabilities, i as e2bCapabilities, n as boxCapabilities, o as railwayCapabilities, r as daytonaCapabilities, s as upstashCapabilities } from "./capabilities-CaSNd6J1.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
- id: "box",
98
- displayName: "Ascii Box",
99
- officialUrl: "https://docs.ascii.dev/box/quickstart",
100
- packageName: "@asciidev/box-sdk",
101
- packageVersion: "0.0.24",
102
- capabilities: boxCapabilities,
103
- environmentVariables: ["BOX_API_KEY", "BOX_BASE_URL"],
104
- technicalStatus: "supported",
105
- providerReviewed: false,
106
- sponsor: false,
107
- liveTest: null,
108
- portBehavior: "Runs Box's native host command and returns a public HTTPS URL by default; protected mode can be requested explicitly.",
109
- snapshotBehavior: "Stop and resume snapshots are available through the native Box client; on-demand normalized snapshots are not exposed.",
110
- runtimeLimitations: "Foreground commands use the Box HTTP command endpoint, which has a 60-second maximum and no streaming or background-process handle."
111
- },
112
- {
113
- id: "railway",
114
- displayName: "Railway Sandboxes",
115
- officialUrl: "https://docs.railway.com/sandboxes",
116
- packageName: "railway",
117
- packageVersion: "3.5.7",
118
- capabilities: railwayCapabilities,
119
- environmentVariables: ["RAILWAY_API_TOKEN", "RAILWAY_ENVIRONMENT_ID"],
120
- technicalStatus: "experimental",
121
- providerReviewed: false,
122
- sponsor: false,
123
- liveTest: null,
124
- portBehavior: "The TypeScript SDK has no public preview URL API; use Railway CLI port forwarding outside the normalized runtime.",
125
- snapshotBehavior: "Creates and deletes named Railway checkpoints. Booting from a checkpoint creates a new sandbox and remains on raw.",
126
- runtimeLimitations: "Railway Sandboxes are in Priority Boarding and the provider SDK may introduce breaking changes between releases."
127
- }
128
- ];
129
- function getProviderMetadata(id) {
130
- return providers.find((provider) => provider.id === id);
131
- }
132
-
133
- //#endregion
134
- export { getProviderMetadata, providers };
135
- //# sourceMappingURL=metadata.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metadata.mjs","names":["providers: readonly ProviderMetadata[]"],"sources":["../src/metadata.ts"],"sourcesContent":["import {\n boxCapabilities,\n daytonaCapabilities,\n e2bCapabilities,\n localCapabilities,\n railwayCapabilities,\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 id: \"box\",\n displayName: \"Ascii Box\",\n officialUrl: \"https://docs.ascii.dev/box/quickstart\",\n packageName: \"@asciidev/box-sdk\",\n packageVersion: \"0.0.24\",\n capabilities: boxCapabilities,\n environmentVariables: [\"BOX_API_KEY\", \"BOX_BASE_URL\"],\n technicalStatus: \"supported\",\n providerReviewed: false,\n sponsor: false,\n liveTest: null,\n portBehavior:\n \"Runs Box's native host command and returns a public HTTPS URL by default; protected mode can be requested explicitly.\",\n snapshotBehavior:\n \"Stop and resume snapshots are available through the native Box client; on-demand normalized snapshots are not exposed.\",\n runtimeLimitations:\n \"Foreground commands use the Box HTTP command endpoint, which has a 60-second maximum and no streaming or background-process handle.\",\n },\n {\n id: \"railway\",\n displayName: \"Railway Sandboxes\",\n officialUrl: \"https://docs.railway.com/sandboxes\",\n packageName: \"railway\",\n packageVersion: \"3.5.7\",\n capabilities: railwayCapabilities,\n environmentVariables: [\"RAILWAY_API_TOKEN\", \"RAILWAY_ENVIRONMENT_ID\"],\n technicalStatus: \"experimental\",\n providerReviewed: false,\n sponsor: false,\n liveTest: null,\n portBehavior:\n \"The TypeScript SDK has no public preview URL API; use Railway CLI port forwarding outside the normalized runtime.\",\n snapshotBehavior:\n \"Creates and deletes named Railway checkpoints. Booting from a checkpoint creates a new sandbox and remains on raw.\",\n runtimeLimitations:\n \"Railway Sandboxes are in Priority Boarding and the provider SDK may introduce breaking changes between releases.\",\n },\n];\n\nexport function getProviderMetadata(id: ProviderName): ProviderMetadata {\n return providers.find((provider) => provider.id === id)!;\n}\n"],"mappings":";;;;;AAuCA,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;CACD;EACE,IAAI;EACJ,aAAa;EACb,aAAa;EACb,aAAa;EACb,gBAAgB;EAChB,cAAc;EACd,sBAAsB,CAAC,eAAe,eAAe;EACrD,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,qBAAqB,yBAAyB;EACrE,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-Bv6I2U1c.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-DOBErkBO.d.mts.map
@@ -1,57 +0,0 @@
1
- import { t as SandboxError } from "./errors-BuF9bYOQ.mjs";
2
-
3
- //#region src/internal/provider-utils.ts
4
- async function toUint8Array(value) {
5
- if (typeof value === "string") return new TextEncoder().encode(value);
6
- if (value instanceof Uint8Array) return value;
7
- if (value instanceof ArrayBuffer) return new Uint8Array(value);
8
- if (value instanceof Blob) return new Uint8Array(await value.arrayBuffer());
9
- const response = new Response(value);
10
- return new Uint8Array(await response.arrayBuffer());
11
- }
12
- function commandString(input) {
13
- if (typeof input === "string") return input;
14
- return [input.command, ...input.args ?? []].map(shellQuote).join(" ");
15
- }
16
- function shellQuote(value) {
17
- return `'${value.replaceAll("'", `'"'"'`)}'`;
18
- }
19
- function portResult(port, url, isPublic, authenticated, request) {
20
- return {
21
- port,
22
- url,
23
- public: isPublic,
24
- authenticated,
25
- request,
26
- toJSON: () => ({
27
- port,
28
- url: authenticated ? redactUrl(url) : url,
29
- public: isPublic,
30
- authenticated
31
- })
32
- };
33
- }
34
- function redactUrl(url) {
35
- const parsed = new URL(url);
36
- for (const key of parsed.searchParams.keys()) parsed.searchParams.set(key, "[REDACTED]");
37
- return parsed.toString();
38
- }
39
- function unsupported(provider, operation) {
40
- throw new SandboxError({
41
- code: "unsupported",
42
- provider,
43
- operation,
44
- message: `${provider} does not support normalized ${operation}`
45
- });
46
- }
47
- function unsupportedSnapshots(provider) {
48
- return {
49
- create: async () => unsupported(provider, "snapshot.create"),
50
- delete: async () => unsupported(provider, "snapshot.delete"),
51
- restore: async () => unsupported(provider, "snapshot.restore")
52
- };
53
- }
54
-
55
- //#endregion
56
- export { unsupportedSnapshots as a, unsupported as i, portResult as n, toUint8Array as r, commandString as t };
57
- //# sourceMappingURL=provider-utils-CfB9nvJx.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"provider-utils-CfB9nvJx.mjs","names":[],"sources":["../src/internal/provider-utils.ts"],"sourcesContent":["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":";;;AAGA,eAAsB,aAAa,OAAuC;AACxE,KAAI,OAAO,UAAU,SAAU,QAAO,IAAI,aAAa,CAAC,OAAO,MAAM;AACrE,KAAI,iBAAiB,WAAY,QAAO;AACxC,KAAI,iBAAiB,YAAa,QAAO,IAAI,WAAW,MAAM;AAC9D,KAAI,iBAAiB,KAAM,QAAO,IAAI,WAAW,MAAM,MAAM,aAAa,CAAC;CAC3E,MAAM,WAAW,IAAI,SAAS,MAAM;AACpC,QAAO,IAAI,WAAW,MAAM,SAAS,aAAa,CAAC;;AAGrD,SAAgB,cAAc,OAA6B;AACzD,KAAI,OAAO,UAAU,SAAU,QAAO;AACtC,QAAO,CAAC,MAAM,SAAS,GAAI,MAAM,QAAQ,EAAE,CAAE,CAAC,IAAI,WAAW,CAAC,KAAK,IAAI;;AAGzE,SAAS,WAAW,OAAuB;AACzC,QAAO,IAAI,MAAM,WAAW,KAAK,QAAQ,CAAC;;AAG5C,SAAgB,WACd,MACA,KACA,UACA,eACA,SACa;AACb,QAAO;EACL;EACA;EACA,QAAQ;EACR;EACA;EACA,eAAe;GACb;GACA,KAAK,gBAAgB,UAAU,IAAI,GAAG;GACtC,QAAQ;GACR;GACD;EACF;;AAGH,SAAS,UAAU,KAAqB;CACtC,MAAM,SAAS,IAAI,IAAI,IAAI;AAC3B,MAAK,MAAM,OAAO,OAAO,aAAa,MAAM,CAAE,QAAO,aAAa,IAAI,KAAK,aAAa;AACxF,QAAO,OAAO,UAAU;;AAG1B,SAAgB,YAAY,UAAkB,WAA0B;AACtE,OAAM,IAAI,aAAa;EACrB,MAAM;EACN;EACA;EACA,SAAS,GAAG,SAAS,+BAA+B;EACrD,CAAC;;AAGJ,SAAgB,qBAAqB,UAAkB;AACrD,QAAO;EACL,QAAQ,YAAsC,YAAY,UAAU,kBAAkB;EACtF,QAAQ,YAA2B,YAAY,UAAU,kBAAkB;EAC3E,SAAS,YAA2B,YAAY,UAAU,mBAAmB;EAC9E"}
@@ -1,7 +0,0 @@
1
- import "../../types-Bv6I2U1c.mjs";
2
- import "../../provider-DOBErkBO.mjs";
3
- import "../../index-Dh9xob2s.mjs";
4
- import "../../sandbox-DdEqoXJF.mjs";
5
- import { t as agentosCapabilities } from "../../capabilities-BWvOVFbH.mjs";
6
- import { n as AgentOsSandbox, r as agentos, t as AgentOsProviderOptions } from "../../index-CkTwqD0X.mjs";
7
- export { AgentOsProviderOptions, AgentOsSandbox, agentos, agentosCapabilities };
@@ -1,9 +0,0 @@
1
- import "../../errors-BuF9bYOQ.mjs";
2
- import "../../capabilities-xs9kaHrK.mjs";
3
- import "../../sandbox-DgtY5hvt.mjs";
4
- import { t as agentosCapabilities } from "../../capabilities-CaSNd6J1.mjs";
5
- import "../../managed-provider-BsZGVQ4I.mjs";
6
- import "../../provider-utils-CfB9nvJx.mjs";
7
- import { t as agentos } from "../../agentos-CbrZW7R0.mjs";
8
-
9
- export { agentos, agentosCapabilities };
@@ -1,34 +0,0 @@
1
- import "../../types-Bv6I2U1c.mjs";
2
- import { o as SandboxProvider } from "../../provider-DOBErkBO.mjs";
3
- import "../../index-Dh9xob2s.mjs";
4
- import "../../sandbox-DdEqoXJF.mjs";
5
- import { n as boxCapabilities } from "../../capabilities-BWvOVFbH.mjs";
6
- import { Box, BoxApi } from "@asciidev/box-sdk";
7
-
8
- //#region src/providers/box/index.d.ts
9
- interface BoxOptions {
10
- /** Box API key. Defaults to BOX_API_KEY. */
11
- apiKey?: string;
12
- /** Box API base URL. Defaults to BOX_BASE_URL, then the public v1 endpoint. */
13
- baseUrl?: string;
14
- /** Seconds before Box automatically archives. The service default is one hour. */
15
- ttlSeconds?: number | null;
16
- /** Withhold account-level secrets from the Box. */
17
- noEnv?: boolean;
18
- /** Friendly Box name applied after provisioning. */
19
- name?: string;
20
- /** Return ungated hosted URLs instead of protected URLs. Defaults to true. */
21
- public?: boolean;
22
- /** Maximum time to wait for provisioning, in milliseconds. Defaults to 10 minutes. */
23
- readyTimeout?: number;
24
- }
25
- interface AsciiBoxSandbox {
26
- readonly client: BoxApi;
27
- box: Box;
28
- readonly readyTimeoutMs: number;
29
- }
30
- declare function box(options?: BoxOptions): SandboxProvider<AsciiBoxSandbox>;
31
- type BoxSandbox = AsciiBoxSandbox;
32
- //#endregion
33
- export { AsciiBoxSandbox, BoxOptions, BoxSandbox, box, boxCapabilities };
34
- //# sourceMappingURL=index.d.mts.map