@opencoredev/sandbox-sdk 0.1.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 (61) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +21 -0
  3. package/README.md +33 -0
  4. package/dist/agentos-BOFA_q-a.mjs +389 -0
  5. package/dist/agentos-BOFA_q-a.mjs.map +1 -0
  6. package/dist/ai/harness.d.mts +16 -0
  7. package/dist/ai/harness.mjs +69 -0
  8. package/dist/ai/harness.mjs.map +1 -0
  9. package/dist/ai/index.d.mts +54 -0
  10. package/dist/ai/index.mjs +4 -0
  11. package/dist/ai-DhfwIZdL.mjs +243 -0
  12. package/dist/ai-DhfwIZdL.mjs.map +1 -0
  13. package/dist/capabilities-CEowrzRM.mjs +99 -0
  14. package/dist/capabilities-CEowrzRM.mjs.map +1 -0
  15. package/dist/capabilities-CMnszzpt.d.mts +13 -0
  16. package/dist/capabilities-COKpwoFH.mjs +28 -0
  17. package/dist/capabilities-COKpwoFH.mjs.map +1 -0
  18. package/dist/errors-Ch9PHKTd.mjs +61 -0
  19. package/dist/errors-Ch9PHKTd.mjs.map +1 -0
  20. package/dist/eve/index.d.mts +19 -0
  21. package/dist/eve/index.mjs +155 -0
  22. package/dist/eve/index.mjs.map +1 -0
  23. package/dist/index-B1YT6OQ8.d.mts +25 -0
  24. package/dist/index-BMFkO6Fv.d.mts +31 -0
  25. package/dist/index.d.mts +5 -0
  26. package/dist/index.mjs +38 -0
  27. package/dist/index.mjs.map +1 -0
  28. package/dist/mastra/index.d.mts +118 -0
  29. package/dist/mastra/index.mjs +662 -0
  30. package/dist/mastra/index.mjs.map +1 -0
  31. package/dist/metadata.d.mts +34 -0
  32. package/dist/metadata.mjs +103 -0
  33. package/dist/metadata.mjs.map +1 -0
  34. package/dist/provider-_caCV8kk.d.mts +91 -0
  35. package/dist/provider-utils-DilOYLBO.mjs +201 -0
  36. package/dist/provider-utils-DilOYLBO.mjs.map +1 -0
  37. package/dist/providers/agentos/index.d.mts +7 -0
  38. package/dist/providers/agentos/index.mjs +8 -0
  39. package/dist/providers/daytona/index.d.mts +21 -0
  40. package/dist/providers/daytona/index.mjs +205 -0
  41. package/dist/providers/daytona/index.mjs.map +1 -0
  42. package/dist/providers/e2b/index.d.mts +17 -0
  43. package/dist/providers/e2b/index.mjs +168 -0
  44. package/dist/providers/e2b/index.mjs.map +1 -0
  45. package/dist/providers/local/index.d.mts +22 -0
  46. package/dist/providers/local/index.mjs +21 -0
  47. package/dist/providers/local/index.mjs.map +1 -0
  48. package/dist/providers/upstash/index.d.mts +17 -0
  49. package/dist/providers/upstash/index.mjs +210 -0
  50. package/dist/providers/upstash/index.mjs.map +1 -0
  51. package/dist/providers/vercel/index.d.mts +27 -0
  52. package/dist/providers/vercel/index.mjs +185 -0
  53. package/dist/providers/vercel/index.mjs.map +1 -0
  54. package/dist/sandbox-BUYT-1C9.d.mts +17 -0
  55. package/dist/sandbox-BwyHcB_C.mjs +102 -0
  56. package/dist/sandbox-BwyHcB_C.mjs.map +1 -0
  57. package/dist/testing/index.d.mts +27 -0
  58. package/dist/testing/index.mjs +173 -0
  59. package/dist/testing/index.mjs.map +1 -0
  60. package/dist/types-BTagTtsp.d.mts +100 -0
  61. package/package.json +151 -0
@@ -0,0 +1,155 @@
1
+ import { n as isSandboxError, t as SandboxError } from "../errors-Ch9PHKTd.mjs";
2
+ import { r as toAISandboxSession } from "../ai-DhfwIZdL.mjs";
3
+
4
+ //#region src/eve/index.ts
5
+ /** Create an Eve beta SandboxBackend backed by a managed sandbox-sdk provider. */
6
+ function createEveSandboxBackend(options) {
7
+ const managed = requireManaged(options.provider);
8
+ const prewarmed = /* @__PURE__ */ new Set();
9
+ return {
10
+ name: `sandbox-sdk-${options.provider.id}`,
11
+ async prewarm(input) {
12
+ if (prewarmed.has(input.templateKey)) return { reused: true };
13
+ input.log?.(`Preparing ${options.provider.id} sandbox template ${input.templateKey}`);
14
+ await (await managed.create({
15
+ sessionId: templateSessionId(input.templateKey),
16
+ identity: input.templateKey,
17
+ cwd: options.cwd,
18
+ env: options.env,
19
+ ports: options.ports,
20
+ onFirstCreate: async (sandbox) => {
21
+ await Promise.all(input.seedFiles.map((file) => sandbox.files.write(resolveSandboxPath(sandbox.cwd, file.path), file.content)));
22
+ if (input.bootstrap) {
23
+ const templateView = {
24
+ id: templateSessionId(input.templateKey),
25
+ sandbox,
26
+ defaultWorkingDirectory: sandbox.cwd,
27
+ ports: options.ports ?? [],
28
+ getPortUrl: async () => {
29
+ throw new Error("Template ports are not available during prewarm");
30
+ },
31
+ stop: async () => {},
32
+ resume: async () => {},
33
+ destroy: async () => {}
34
+ };
35
+ await input.bootstrap({ use: createUseFn(templateView) });
36
+ }
37
+ }
38
+ })).destroy();
39
+ prewarmed.add(input.templateKey);
40
+ return { reused: false };
41
+ },
42
+ async create(input) {
43
+ const reconnectId = readString(input.existingMetadata, "managedSessionId");
44
+ let managedSession;
45
+ if (reconnectId) managedSession = await managed.resume({ sessionId: reconnectId });
46
+ else managedSession = await managed.create({
47
+ sessionId: input.sessionKey,
48
+ identity: input.templateKey ?? void 0,
49
+ cwd: options.cwd,
50
+ env: options.env,
51
+ ports: options.ports
52
+ });
53
+ return createHandle(managedSession, createUseFn(managedSession), options.provider.id);
54
+ }
55
+ };
56
+ }
57
+ function createHandle(managed, useSessionFn, providerId) {
58
+ return {
59
+ session: toEveSession(managed, providerId),
60
+ useSessionFn,
61
+ async captureState() {
62
+ return {
63
+ backendName: `sandbox-sdk-${providerId}`,
64
+ sessionKey: managed.id,
65
+ metadata: {
66
+ managedSessionId: managed.id,
67
+ provider: providerId
68
+ }
69
+ };
70
+ },
71
+ shutdown: () => managed.stop()
72
+ };
73
+ }
74
+ function createUseFn(managed) {
75
+ const session = toEveSession(managed, managed.sandbox.provider);
76
+ return async (options) => {
77
+ if (options?.networkPolicy !== void 0) {
78
+ if (!managed.setNetworkPolicy) throw unsupportedNetwork(managed.sandbox.provider);
79
+ await managed.setNetworkPolicy(toCoreNetworkPolicy(options.networkPolicy));
80
+ }
81
+ return session;
82
+ };
83
+ }
84
+ function toEveSession(managed, providerId) {
85
+ const ai = toAISandboxSession(managed.sandbox);
86
+ return {
87
+ run: ai.run,
88
+ spawn: ai.spawn,
89
+ readFile: ai.readFile,
90
+ readBinaryFile: ai.readBinaryFile,
91
+ readTextFile: ai.readTextFile,
92
+ writeFile: ai.writeFile,
93
+ writeBinaryFile: ai.writeBinaryFile,
94
+ writeTextFile: ai.writeTextFile,
95
+ id: managed.id,
96
+ resolvePath: (path) => resolveSandboxPath(managed.defaultWorkingDirectory, path),
97
+ async removePath({ path, force }) {
98
+ try {
99
+ await managed.sandbox.files.remove(resolveSandboxPath(managed.defaultWorkingDirectory, path));
100
+ } catch (error) {
101
+ if (force && isSandboxError(error) && error.code === "not_found") return;
102
+ throw error;
103
+ }
104
+ },
105
+ async setNetworkPolicy(policy) {
106
+ if (!managed.setNetworkPolicy) throw unsupportedNetwork(providerId);
107
+ await managed.setNetworkPolicy(toCoreNetworkPolicy(policy));
108
+ }
109
+ };
110
+ }
111
+ function toCoreNetworkPolicy(policy) {
112
+ if (policy === "allow-all") return { mode: "allow-all" };
113
+ if (policy === "deny-all") return { mode: "deny-all" };
114
+ return {
115
+ mode: "native",
116
+ value: policy
117
+ };
118
+ }
119
+ function resolveSandboxPath(cwd, path) {
120
+ if (path.includes("\0") || path.split("/").includes("..")) throw new SandboxError({
121
+ code: "invalid_input",
122
+ provider: "eve",
123
+ operation: "resolvePath",
124
+ message: `Invalid sandbox path: ${path}`
125
+ });
126
+ return path.startsWith("/") ? path : `${cwd.replace(/\/$/, "")}/${path}`;
127
+ }
128
+ function templateSessionId(templateKey) {
129
+ return `eve-template-${templateKey}`;
130
+ }
131
+ function readString(record, key) {
132
+ const value = record?.[key];
133
+ return typeof value === "string" ? value : void 0;
134
+ }
135
+ function unsupportedNetwork(provider) {
136
+ return new SandboxError({
137
+ code: "unsupported",
138
+ provider,
139
+ operation: "network.policy",
140
+ message: `Provider ${provider} does not support network-policy mutation`
141
+ });
142
+ }
143
+ function requireManaged(provider) {
144
+ if (!provider.managed) throw new SandboxError({
145
+ code: "unsupported",
146
+ provider: provider.id,
147
+ operation: "eve.createBackend",
148
+ message: `Provider ${provider.id} does not implement managed sandbox sessions`
149
+ });
150
+ return provider.managed;
151
+ }
152
+
153
+ //#endregion
154
+ export { createEveSandboxBackend };
155
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":["templateView: ManagedSandboxSession","managedSession: ManagedSandboxSession"],"sources":["../../src/eve/index.ts"],"sourcesContent":["import type {\n SandboxBackend,\n SandboxBackendHandle,\n SandboxNetworkPolicy as EveNetworkPolicy,\n SandboxSession as EveSandboxSession,\n} from \"eve/sandbox\";\nimport { isSandboxError, SandboxError } from \"../core/errors\";\nimport type {\n ManagedSandboxProvider,\n ManagedSandboxSession,\n SandboxNetworkPolicy,\n SandboxProvider,\n} from \"../core/provider\";\nimport { toAISandboxSession } from \"../ai/index\";\n\nexport interface EveSandboxUseOptions {\n networkPolicy?: EveNetworkPolicy;\n}\n\nexport interface CreateEveSandboxBackendOptions {\n provider: SandboxProvider<unknown>;\n ports?: ReadonlyArray<number>;\n cwd?: string;\n env?: Readonly<Record<string, string>>;\n}\n\n/** Create an Eve beta SandboxBackend backed by a managed sandbox-sdk provider. */\nexport function createEveSandboxBackend(\n options: CreateEveSandboxBackendOptions,\n): SandboxBackend<EveSandboxUseOptions, EveSandboxUseOptions> {\n const managed = requireManaged(options.provider);\n const prewarmed = new Set<string>();\n\n return {\n name: `sandbox-sdk-${options.provider.id}`,\n async prewarm(input) {\n if (prewarmed.has(input.templateKey)) return { reused: true };\n input.log?.(`Preparing ${options.provider.id} sandbox template ${input.templateKey}`);\n const template = await managed.create({\n sessionId: templateSessionId(input.templateKey),\n identity: input.templateKey,\n cwd: options.cwd,\n env: options.env,\n ports: options.ports,\n onFirstCreate: async (sandbox) => {\n await Promise.all(\n input.seedFiles.map((file) =>\n sandbox.files.write(resolveSandboxPath(sandbox.cwd, file.path), file.content),\n ),\n );\n if (input.bootstrap) {\n const templateView: ManagedSandboxSession = {\n id: templateSessionId(input.templateKey),\n sandbox,\n defaultWorkingDirectory: sandbox.cwd,\n ports: options.ports ?? [],\n getPortUrl: async () => {\n throw new Error(\"Template ports are not available during prewarm\");\n },\n stop: async () => {},\n resume: async () => {},\n destroy: async () => {},\n };\n await input.bootstrap({ use: createUseFn(templateView) });\n }\n },\n });\n await template.destroy();\n prewarmed.add(input.templateKey);\n return { reused: false };\n },\n async create(input) {\n const reconnectId = readString(input.existingMetadata, \"managedSessionId\");\n let managedSession: ManagedSandboxSession;\n if (reconnectId) {\n managedSession = await managed.resume({ sessionId: reconnectId });\n } else {\n managedSession = await managed.create({\n sessionId: input.sessionKey,\n identity: input.templateKey ?? undefined,\n cwd: options.cwd,\n env: options.env,\n ports: options.ports,\n });\n }\n return createHandle(managedSession, createUseFn(managedSession), options.provider.id);\n },\n };\n}\n\nfunction createHandle(\n managed: ManagedSandboxSession,\n useSessionFn: (options?: EveSandboxUseOptions) => Promise<EveSandboxSession>,\n providerId: string,\n): SandboxBackendHandle<EveSandboxUseOptions> {\n return {\n session: toEveSession(managed, providerId),\n useSessionFn,\n async captureState() {\n return {\n backendName: `sandbox-sdk-${providerId}`,\n sessionKey: managed.id,\n metadata: { managedSessionId: managed.id, provider: providerId },\n };\n },\n shutdown: () => managed.stop(),\n };\n}\n\nfunction createUseFn(managed: ManagedSandboxSession) {\n const session = toEveSession(managed, managed.sandbox.provider);\n return async (options?: EveSandboxUseOptions): Promise<EveSandboxSession> => {\n if (options?.networkPolicy !== undefined) {\n if (!managed.setNetworkPolicy) throw unsupportedNetwork(managed.sandbox.provider);\n await managed.setNetworkPolicy(toCoreNetworkPolicy(options.networkPolicy));\n }\n return session;\n };\n}\n\nfunction toEveSession(managed: ManagedSandboxSession, providerId: string): EveSandboxSession {\n const ai = toAISandboxSession(managed.sandbox);\n return {\n run: ai.run,\n spawn: ai.spawn,\n readFile: ai.readFile,\n readBinaryFile: ai.readBinaryFile,\n readTextFile: ai.readTextFile,\n writeFile: ai.writeFile,\n writeBinaryFile: ai.writeBinaryFile,\n writeTextFile: ai.writeTextFile,\n id: managed.id,\n resolvePath: (path) => resolveSandboxPath(managed.defaultWorkingDirectory, path),\n async removePath({ path, force }) {\n try {\n await managed.sandbox.files.remove(\n resolveSandboxPath(managed.defaultWorkingDirectory, path),\n );\n } catch (error) {\n if (force && isSandboxError(error) && error.code === \"not_found\") return;\n throw error;\n }\n },\n async setNetworkPolicy(policy) {\n if (!managed.setNetworkPolicy) throw unsupportedNetwork(providerId);\n await managed.setNetworkPolicy(toCoreNetworkPolicy(policy));\n },\n };\n}\n\nfunction toCoreNetworkPolicy(policy: EveNetworkPolicy): SandboxNetworkPolicy {\n if (policy === \"allow-all\") return { mode: \"allow-all\" };\n if (policy === \"deny-all\") return { mode: \"deny-all\" };\n return { mode: \"native\", value: policy };\n}\n\nfunction resolveSandboxPath(cwd: string, path: string): string {\n if (path.includes(\"\\0\") || path.split(\"/\").includes(\"..\")) {\n throw new SandboxError({\n code: \"invalid_input\",\n provider: \"eve\",\n operation: \"resolvePath\",\n message: `Invalid sandbox path: ${path}`,\n });\n }\n return path.startsWith(\"/\") ? path : `${cwd.replace(/\\/$/, \"\")}/${path}`;\n}\n\nfunction templateSessionId(templateKey: string): string {\n return `eve-template-${templateKey}`;\n}\n\nfunction readString(record: Record<string, unknown> | undefined, key: string): string | undefined {\n const value = record?.[key];\n return typeof value === \"string\" ? value : undefined;\n}\n\nfunction unsupportedNetwork(provider: string): SandboxError {\n return new SandboxError({\n code: \"unsupported\",\n provider,\n operation: \"network.policy\",\n message: `Provider ${provider} does not support network-policy mutation`,\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: \"eve.createBackend\",\n message: `Provider ${provider.id} does not implement managed sandbox sessions`,\n });\n }\n return provider.managed;\n}\n\nexport type { SandboxBackend, SandboxBackendHandle, EveSandboxSession };\n"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { o as SandboxProvider } from "./provider-_caCV8kk.mjs";
2
+ import { AgentOs, AgentOsOptions } from "@rivet-dev/agentos-core";
3
+
4
+ //#region src/providers/agentos/index.d.ts
5
+ interface AgentOsProviderOptions {
6
+ /**
7
+ * Native agentOS VM options. The provider supplies production-oriented permissions and limits
8
+ * unless these fields are explicitly provided.
9
+ */
10
+ agentOs?: AgentOsOptions;
11
+ }
12
+ interface AgentOsSandbox {
13
+ /** The currently running native VM. Access throws while the sandbox is suspended or stopped. */
14
+ readonly vm: AgentOs;
15
+ suspend(): Promise<void>;
16
+ resume(): Promise<void>;
17
+ }
18
+ /**
19
+ * @deprecated AgentOS now powers `local()` under the hood. Import `local` from
20
+ * `@opencoredev/sandbox-sdk/local` instead.
21
+ */
22
+ declare function agentos(options?: AgentOsProviderOptions): SandboxProvider<AgentOsSandbox>;
23
+ //#endregion
24
+ export { AgentOsSandbox as n, agentos as r, AgentOsProviderOptions as t };
25
+ //# sourceMappingURL=index-B1YT6OQ8.d.mts.map
@@ -0,0 +1,31 @@
1
+ import { f as Sandbox, r as CapabilityMode, t as Capability } from "./types-BTagTtsp.mjs";
2
+
3
+ //#region src/core/capabilities.d.ts
4
+ declare function supports(sandbox: Pick<Sandbox, "capabilities">, capability: Capability): boolean;
5
+ declare function capabilityMode(sandbox: Pick<Sandbox, "capabilities">, capability: Capability): CapabilityMode | false;
6
+ declare function requireCapability(sandbox: Pick<Sandbox, "capabilities" | "provider">, capability: Capability): CapabilityMode;
7
+ //#endregion
8
+ //#region src/core/errors.d.ts
9
+ declare const sandboxErrorCodes: readonly ["authentication", "permission", "not_found", "timeout", "rate_limited", "unavailable", "unsupported", "invalid_input", "conflict", "terminated", "process_failed", "internal"];
10
+ type SandboxErrorCode = (typeof sandboxErrorCodes)[number];
11
+ declare function redactSensitive(value: string): string;
12
+ declare class SandboxError extends Error {
13
+ readonly code: SandboxErrorCode;
14
+ readonly provider: string;
15
+ readonly operation?: string;
16
+ readonly retryable: boolean;
17
+ readonly cause?: unknown;
18
+ constructor(options: {
19
+ code: SandboxErrorCode;
20
+ provider: string;
21
+ message: string;
22
+ operation?: string;
23
+ retryable?: boolean;
24
+ cause?: unknown;
25
+ });
26
+ toString(): string;
27
+ }
28
+ declare function isSandboxError(error: unknown): error is SandboxError;
29
+ //#endregion
30
+ export { sandboxErrorCodes as a, supports as c, redactSensitive as i, SandboxErrorCode as n, capabilityMode as o, isSandboxError as r, requireCapability as s, SandboxError as t };
31
+ //# sourceMappingURL=index-BMFkO6Fv.d.mts.map
@@ -0,0 +1,5 @@
1
+ import { _ as SandboxProcesses, a as CommandResult, b as capabilityNames, c as ProcessOutputEvent, d as RunOptions, f as Sandbox, g as SandboxProcess, h as SandboxPorts, i as CommandInput, l as ProcessStatus, m as SandboxFiles, n as CapabilityMap, o as ExposedPort, p as SandboxDirectoryEntry, r as CapabilityMode, s as FileValue, t as Capability, u as ProviderName, v as SandboxSnapshot, x as providerNames, y as SandboxSnapshots } from "./types-BTagTtsp.mjs";
2
+ import { a as SandboxNetworkPolicy, i as ManagedSandboxSession, n as ManagedSandboxProvider, r as ManagedSandboxResumeOptions, t as ManagedSandboxCreateOptions } from "./provider-_caCV8kk.mjs";
3
+ import { a as sandboxErrorCodes, c as supports, i as redactSensitive, n as SandboxErrorCode, o as capabilityMode, r as isSandboxError, s as requireCapability, t as SandboxError } from "./index-BMFkO6Fv.mjs";
4
+ import { n as createSandbox, r as withSandbox } from "./sandbox-BUYT-1C9.mjs";
5
+ export { Capability, CapabilityMap, CapabilityMode, CommandInput, CommandResult, ExposedPort, FileValue, ManagedSandboxCreateOptions, ManagedSandboxProvider, ManagedSandboxResumeOptions, ManagedSandboxSession, ProcessOutputEvent, ProcessStatus, ProviderName, RunOptions, Sandbox, SandboxDirectoryEntry, SandboxError, SandboxErrorCode, SandboxFiles, SandboxNetworkPolicy, SandboxPorts, SandboxProcess, SandboxProcesses, SandboxSnapshot, SandboxSnapshots, capabilityMode, capabilityNames, createSandbox, isSandboxError, providerNames, redactSensitive, requireCapability, sandboxErrorCodes, supports, withSandbox };
package/dist/index.mjs ADDED
@@ -0,0 +1,38 @@
1
+ import { a as sandboxErrorCodes, i as redactSensitive, n as isSandboxError, t as SandboxError } from "./errors-Ch9PHKTd.mjs";
2
+ import { i as supports, r as requireCapability, t as capabilityMode } from "./capabilities-COKpwoFH.mjs";
3
+ import { n as withSandbox, t as createSandbox } from "./sandbox-BwyHcB_C.mjs";
4
+
5
+ //#region src/core/types.ts
6
+ const providerNames = [
7
+ "local",
8
+ "e2b",
9
+ "daytona",
10
+ "vercel",
11
+ "upstash"
12
+ ];
13
+ const capabilityNames = [
14
+ "files.read",
15
+ "files.write",
16
+ "files.list",
17
+ "files.remove",
18
+ "process.run",
19
+ "process.stream",
20
+ "process.background",
21
+ "process.stdin",
22
+ "process.cancel",
23
+ "ports.expose",
24
+ "ports.authenticatedRequest",
25
+ "snapshot.create",
26
+ "snapshot.delete",
27
+ "snapshot.restore",
28
+ "sandbox.resume",
29
+ "filesystem.persistent",
30
+ "image.custom",
31
+ "network.policy",
32
+ "process.pty",
33
+ "compute.gpu"
34
+ ];
35
+
36
+ //#endregion
37
+ export { SandboxError, capabilityMode, capabilityNames, createSandbox, isSandboxError, providerNames, redactSensitive, requireCapability, sandboxErrorCodes, supports, withSandbox };
38
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../src/core/types.ts"],"sourcesContent":["export const providerNames = [\"local\", \"e2b\", \"daytona\", \"vercel\", \"upstash\"] as const;\nexport type ProviderName = (typeof providerNames)[number];\n\nexport const capabilityNames = [\n \"files.read\",\n \"files.write\",\n \"files.list\",\n \"files.remove\",\n \"process.run\",\n \"process.stream\",\n \"process.background\",\n \"process.stdin\",\n \"process.cancel\",\n \"ports.expose\",\n \"ports.authenticatedRequest\",\n \"snapshot.create\",\n \"snapshot.delete\",\n \"snapshot.restore\",\n \"sandbox.resume\",\n \"filesystem.persistent\",\n \"image.custom\",\n \"network.policy\",\n \"process.pty\",\n \"compute.gpu\",\n] as const;\n\nexport type Capability = (typeof capabilityNames)[number];\nexport type CapabilityMode =\n | \"filesystem\"\n | \"memory\"\n | \"template\"\n | \"fork\"\n | \"public\"\n | \"authenticated\"\n | \"combined-stream\"\n | \"separate-streams\"\n | \"ephemeral\"\n | \"persistent\"\n | \"localhost\"\n | \"in-process\"\n | \"full\"\n | \"native\";\n\nexport type CapabilityMap = Readonly<Record<Capability, false | CapabilityMode>>;\n\nexport type CommandInput = string | { command: string; args?: readonly string[] };\n\nexport interface RunOptions {\n cwd?: string;\n env?: Readonly<Record<string, string>>;\n timeout?: number;\n signal?: AbortSignal;\n}\n\nexport interface CommandResult {\n stdout: string;\n stderr: string;\n exitCode: number;\n success: boolean;\n signal?: string;\n durationMs?: number;\n}\n\nexport type FileValue = string | Uint8Array | ArrayBuffer | Blob | ReadableStream<Uint8Array>;\n\nexport interface SandboxDirectoryEntry {\n name: string;\n path: string;\n type: \"file\" | \"directory\" | \"symlink\" | \"unknown\";\n size?: number;\n}\n\nexport interface SandboxFiles {\n write(path: string, value: FileValue): Promise<void>;\n read(path: string): Promise<Uint8Array>;\n text(path: string): Promise<string>;\n list(path?: string): Promise<SandboxDirectoryEntry[]>;\n mkdir(path: string): Promise<void>;\n remove(path: string): Promise<void>;\n exists(path: string): Promise<boolean>;\n}\n\nexport interface ProcessOutputEvent {\n stream: \"stdout\" | \"stderr\";\n data: string | Uint8Array;\n timestamp?: Date;\n}\n\nexport type ProcessStatus = \"starting\" | \"running\" | \"exited\" | \"killed\" | \"unknown\";\n\nexport interface SandboxProcess {\n readonly id: string;\n status(): Promise<ProcessStatus>;\n output(): AsyncIterable<ProcessOutputEvent>;\n write(value: string | Uint8Array): Promise<void>;\n wait(): Promise<{ exitCode: number }>;\n kill(signal?: string): Promise<void>;\n}\n\nexport interface SandboxProcesses {\n start(command: CommandInput, options?: RunOptions): Promise<SandboxProcess>;\n}\n\nexport interface ExposedPort {\n readonly port: number;\n readonly url: string;\n readonly public: boolean;\n readonly authenticated: boolean;\n request?(path?: string, init?: RequestInit): Promise<Response>;\n toJSON(): Omit<ExposedPort, \"request\" | \"toJSON\">;\n}\n\nexport interface SandboxPorts {\n expose(port: number): Promise<ExposedPort>;\n}\n\nexport interface SandboxSnapshot {\n readonly id: string;\n readonly name?: string;\n readonly mode: CapabilityMode;\n readonly createdAt?: Date;\n}\n\nexport interface SandboxSnapshots {\n create(options?: { name?: string }): Promise<SandboxSnapshot>;\n delete(snapshot: SandboxSnapshot | string): Promise<void>;\n restore(snapshot: SandboxSnapshot | string): Promise<void>;\n}\n\nexport interface Sandbox<TRaw = unknown> {\n readonly id: string;\n readonly provider: ProviderName;\n readonly cwd: string;\n readonly capabilities: CapabilityMap;\n readonly raw: TRaw;\n readonly files: SandboxFiles;\n readonly processes: SandboxProcesses;\n readonly ports: SandboxPorts;\n readonly snapshots: SandboxSnapshots;\n run(command: CommandInput, options?: RunOptions): Promise<CommandResult>;\n stop(): Promise<void>;\n}\n"],"mappings":";;;;;AAAA,MAAa,gBAAgB;CAAC;CAAS;CAAO;CAAW;CAAU;CAAU;AAG7E,MAAa,kBAAkB;CAC7B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD"}
@@ -0,0 +1,118 @@
1
+ import { f as Sandbox } from "../types-BTagTtsp.mjs";
2
+ import { o as SandboxProvider } from "../provider-_caCV8kk.mjs";
3
+ import { CopyOptions, FileContent, FileEntry, FilesystemInfo, InstructionsOption, ListOptions, MastraFilesystem, MastraFilesystemOptions, MastraSandbox, MastraSandboxOptions, ProcessHandle, ProcessInfo, ProviderStatus, ReadOptions, RemoveOptions, SandboxInfo, SandboxProcessManager, SpawnProcessOptions, Workspace, WorkspaceConfig, WriteOptions } from "@mastra/core/workspace";
4
+ import { RequestContext } from "@mastra/core/di";
5
+
6
+ //#region src/mastra/index.d.ts
7
+ type WorkspaceOptions = Omit<WorkspaceConfig<SandboxSDKMastraFilesystem, SandboxSDKMastraSandbox>, "filesystem" | "sandbox" | "mounts">;
8
+ interface CreateMastraSandboxOptions extends Omit<MastraSandboxOptions, "processes"> {
9
+ provider: SandboxProvider<unknown>;
10
+ id?: string;
11
+ identity?: string;
12
+ cwd?: string;
13
+ env?: Readonly<Record<string, string>>;
14
+ ports?: ReadonlyArray<number>;
15
+ instructions?: InstructionsOption;
16
+ onFirstCreate?: (sandbox: Sandbox) => void | Promise<void>;
17
+ }
18
+ interface CreateMastraWorkspaceOptions extends CreateMastraSandboxOptions {
19
+ filesystem?: Omit<CreateMastraFilesystemOptions, "sandbox">;
20
+ workspace?: WorkspaceOptions;
21
+ }
22
+ interface CreateMastraFilesystemOptions extends MastraFilesystemOptions {
23
+ sandbox: SandboxSDKMastraSandbox;
24
+ readOnly?: boolean;
25
+ instructions?: InstructionsOption;
26
+ }
27
+ /** Create a Mastra sandbox backed by any managed Sandbox SDK provider. */
28
+ declare function createMastraSandbox(options: CreateMastraSandboxOptions): SandboxSDKMastraSandbox;
29
+ /**
30
+ * Create a Mastra workspace whose filesystem and commands share one Sandbox SDK
31
+ * session. The workspace owns and destroys the session.
32
+ */
33
+ declare function createMastraWorkspace(options: CreateMastraWorkspaceOptions): Workspace<SandboxSDKMastraFilesystem, SandboxSDKMastraSandbox>;
34
+ /** Mastra WorkspaceSandbox implementation for Sandbox SDK providers. */
35
+ declare class SandboxSDKMastraSandbox extends MastraSandbox {
36
+ readonly id: string;
37
+ readonly name: string;
38
+ readonly provider: string;
39
+ readonly cwd: string;
40
+ readonly processes: SandboxSDKProcessManager;
41
+ status: ProviderStatus;
42
+ private readonly managed;
43
+ private readonly identity?;
44
+ private readonly env;
45
+ private readonly ports;
46
+ private readonly instructions?;
47
+ private readonly onFirstCreate?;
48
+ private readonly createdAt;
49
+ private session?;
50
+ constructor(options: CreateMastraSandboxOptions);
51
+ /** The live normalized Sandbox SDK session. */
52
+ get sandboxSdk(): Sandbox;
53
+ start(): Promise<void>;
54
+ stop(): Promise<void>;
55
+ destroy(): Promise<void>;
56
+ getPortUrl(port: number, protocol?: "http" | "https" | "ws"): Promise<string>;
57
+ getInfo(): SandboxInfo;
58
+ getInstructions(options?: {
59
+ requestContext?: RequestContext;
60
+ }): string;
61
+ /** @deprecated Use `status === "running"` instead. */
62
+ isReady(): boolean;
63
+ private killTrackedProcesses;
64
+ }
65
+ /** Mastra background-process bridge for normalized Sandbox SDK processes. */
66
+ declare class SandboxSDKProcessManager extends SandboxProcessManager<SandboxSDKMastraSandbox> {
67
+ spawn(command: string, options?: SpawnProcessOptions): Promise<ProcessHandle>;
68
+ list(): Promise<ProcessInfo[]>;
69
+ }
70
+ /** Mastra WorkspaceFilesystem implementation sharing a Mastra sandbox session. */
71
+ declare class SandboxSDKMastraFilesystem extends MastraFilesystem {
72
+ readonly id: string;
73
+ readonly name = "Sandbox SDK Filesystem";
74
+ readonly provider = "sandbox-sdk";
75
+ readonly readOnly: boolean;
76
+ readonly basePath: string;
77
+ status: ProviderStatus;
78
+ private readonly sandbox;
79
+ private readonly instructions?;
80
+ constructor(options: CreateMastraFilesystemOptions);
81
+ init(): Promise<void>;
82
+ destroy(): Promise<void>;
83
+ getInfo(): FilesystemInfo;
84
+ getInstructions(options?: {
85
+ requestContext?: RequestContext;
86
+ }): string;
87
+ realpath(path: string): Promise<string>;
88
+ readFile(path: string, options?: ReadOptions): Promise<string | Buffer>;
89
+ writeFile(path: string, content: FileContent, options?: WriteOptions): Promise<void>;
90
+ appendFile(path: string, content: FileContent): Promise<void>;
91
+ deleteFile(path: string, options?: RemoveOptions): Promise<void>;
92
+ copyFile(src: string, dest: string, options?: CopyOptions): Promise<void>;
93
+ moveFile(src: string, dest: string, options?: CopyOptions): Promise<void>;
94
+ mkdir(path: string, options?: {
95
+ recursive?: boolean;
96
+ }): Promise<void>;
97
+ rmdir(path: string, options?: RemoveOptions): Promise<void>;
98
+ readdir(path: string, options?: ListOptions): Promise<FileEntry[]>;
99
+ exists(path: string): Promise<boolean>;
100
+ stat(path: string): Promise<{
101
+ name: string;
102
+ path: string;
103
+ type: "directory" | "file";
104
+ size: number;
105
+ createdAt: Date;
106
+ modifiedAt: Date;
107
+ }>;
108
+ private ready;
109
+ private assertWritable;
110
+ private ensureParent;
111
+ private requireParent;
112
+ private listDirectory;
113
+ private findEntry;
114
+ private nativeStat;
115
+ }
116
+ //#endregion
117
+ export { CreateMastraFilesystemOptions, CreateMastraSandboxOptions, CreateMastraWorkspaceOptions, SandboxSDKMastraFilesystem, SandboxSDKMastraSandbox, SandboxSDKProcessManager, createMastraSandbox, createMastraWorkspace };
118
+ //# sourceMappingURL=index.d.mts.map