@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,17 +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 { i as e2bCapabilities } from "../../capabilities-BWvOVFbH.mjs";
6
- import { Sandbox as E2BSandbox } from "e2b";
7
-
8
- //#region src/providers/e2b/index.d.ts
9
- interface E2BOptions {
10
- apiKey?: string;
11
- template?: string;
12
- timeout?: number;
13
- }
14
- declare function e2b(options?: E2BOptions): SandboxProvider<E2BSandbox>;
15
- //#endregion
16
- export { E2BOptions, type E2BSandbox, e2b, e2bCapabilities };
17
- //# sourceMappingURL=index.d.mts.map
@@ -1,169 +0,0 @@
1
- import { r as normalizeError } from "../../errors-BuF9bYOQ.mjs";
2
- import "../../capabilities-xs9kaHrK.mjs";
3
- import "../../sandbox-DgtY5hvt.mjs";
4
- import { i as e2bCapabilities } from "../../capabilities-CaSNd6J1.mjs";
5
- import { t as withManagedSessions } from "../../managed-provider-BsZGVQ4I.mjs";
6
- import { i as unsupported, n as portResult, r as toUint8Array, t as commandString } from "../../provider-utils-CfB9nvJx.mjs";
7
- import { Sandbox } from "e2b";
8
-
9
- //#region src/providers/e2b/index.ts
10
- function e2b(options = {}) {
11
- return withManagedSessions({
12
- id: "e2b",
13
- capabilities: e2bCapabilities,
14
- async create(createOptions) {
15
- const create = {
16
- apiKey: options.apiKey,
17
- timeoutMs: options.timeout ?? createOptions.timeout,
18
- envs: { ...createOptions.env },
19
- signal: createOptions.signal
20
- };
21
- const raw = options.template ? await Sandbox.create(options.template, create) : await Sandbox.create(create);
22
- try {
23
- await raw.files.makeDir(createOptions.cwd);
24
- } catch (error) {
25
- await raw.kill().catch(() => void 0);
26
- throw error;
27
- }
28
- return {
29
- id: raw.sandboxId,
30
- raw,
31
- capabilities: e2bCapabilities,
32
- files: {
33
- async write(path, value) {
34
- await raw.files.write(path, Uint8Array.from(await toUint8Array(value)).buffer);
35
- },
36
- read: (path) => raw.files.read(path, { format: "bytes" }),
37
- async list(path) {
38
- return (await raw.files.list(path)).map((entry) => ({
39
- name: entry.name,
40
- path: entry.path,
41
- type: entry.type === "file" ? "file" : entry.type === "dir" ? "directory" : "unknown",
42
- size: entry.size
43
- }));
44
- },
45
- async mkdir(path) {
46
- await raw.files.makeDir(path);
47
- },
48
- remove: (path) => raw.files.remove(path),
49
- exists: (path) => raw.files.exists(path)
50
- },
51
- async run(command, runOptions) {
52
- try {
53
- const started = performance.now();
54
- const result = await raw.commands.run(commandString(command), {
55
- cwd: runOptions.cwd,
56
- envs: { ...runOptions.env },
57
- timeoutMs: runOptions.timeout,
58
- signal: runOptions.signal
59
- });
60
- return {
61
- stdout: result.stdout,
62
- stderr: result.stderr,
63
- exitCode: result.exitCode,
64
- success: result.exitCode === 0,
65
- durationMs: Math.round(performance.now() - started)
66
- };
67
- } catch (error) {
68
- throw normalizeError("e2b", "process.run", error);
69
- }
70
- },
71
- async start(command, runOptions) {
72
- const events = [];
73
- const waiters = /* @__PURE__ */ new Set();
74
- let running = true;
75
- const push = (stream, data) => {
76
- events.push({
77
- stream,
78
- data,
79
- timestamp: /* @__PURE__ */ new Date()
80
- });
81
- for (const wake of waiters) wake();
82
- waiters.clear();
83
- };
84
- const handle = await raw.commands.run(commandString(command), {
85
- cwd: runOptions.cwd,
86
- envs: { ...runOptions.env },
87
- timeoutMs: runOptions.timeout,
88
- signal: runOptions.signal,
89
- background: true,
90
- stdin: true,
91
- onStdout: (data) => push("stdout", data),
92
- onStderr: (data) => push("stderr", data)
93
- });
94
- const completed = handle.wait().then((result) => ({ exitCode: result.exitCode }));
95
- const finish = () => {
96
- running = false;
97
- for (const wake of waiters) wake();
98
- waiters.clear();
99
- };
100
- completed.then(finish, finish);
101
- return {
102
- id: String(handle.pid),
103
- async status() {
104
- return running ? "running" : "exited";
105
- },
106
- async *output() {
107
- let index = 0;
108
- while (running || index < events.length) {
109
- while (index < events.length) yield events[index++];
110
- if (!running) break;
111
- await new Promise((resolve) => waiters.add(resolve));
112
- }
113
- },
114
- write: (value) => handle.sendStdin(value),
115
- wait: () => completed,
116
- async kill() {
117
- await handle.kill();
118
- running = false;
119
- }
120
- };
121
- },
122
- async expose(port) {
123
- const url = `https://${raw.getHost(port)}`;
124
- const token = raw.trafficAccessToken;
125
- return portResult(port, url, !token, Boolean(token), token ? (path = "/", init = {}) => fetch(new URL(path, url), {
126
- ...init,
127
- headers: {
128
- ...Object.fromEntries(new Headers(init.headers)),
129
- "x-access-token": token
130
- }
131
- }) : void 0);
132
- },
133
- snapshots: {
134
- async create(snapshotOptions) {
135
- const snapshot = await raw.createSnapshot({ name: snapshotOptions?.name });
136
- return {
137
- id: snapshot.snapshotId,
138
- name: snapshot.names[0],
139
- mode: "template"
140
- };
141
- },
142
- async delete(snapshot) {
143
- await Sandbox.deleteSnapshot(typeof snapshot === "string" ? snapshot : snapshot.id, { apiKey: options.apiKey });
144
- },
145
- async restore() {
146
- unsupported("e2b", "snapshot.restore");
147
- }
148
- },
149
- async stop() {
150
- await raw.kill();
151
- }
152
- };
153
- }
154
- }, [], {
155
- stop: async (sandbox) => {
156
- await sandbox.raw.pause();
157
- },
158
- resume: async (sandbox) => {
159
- await sandbox.raw.connect();
160
- },
161
- destroy: async (sandbox) => {
162
- await sandbox.raw.kill();
163
- }
164
- });
165
- }
166
-
167
- //#endregion
168
- export { e2b, e2bCapabilities };
169
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":["E2BSandbox","events: ProcessOutputEvent[]"],"sources":["../../../src/providers/e2b/index.ts"],"sourcesContent":["import { Sandbox as E2BSandbox } from \"e2b\";\nimport { normalizeError } from \"../../core/errors\";\nimport type { SandboxProvider } from \"../../core/provider\";\nimport type { ProcessOutputEvent, SandboxProcess, SandboxSnapshot } from \"../../core/types\";\nimport {\n commandString,\n portResult,\n toUint8Array,\n unsupported,\n} from \"../../internal/provider-utils\";\nimport { e2bCapabilities } from \"../capabilities\";\nimport { withManagedSessions } from \"../../internal/managed-provider\";\n\nexport interface E2BOptions {\n apiKey?: string;\n template?: string;\n timeout?: number;\n}\n\nexport { e2bCapabilities } from \"../capabilities\";\n\nexport function e2b(options: E2BOptions = {}): SandboxProvider<E2BSandbox> {\n return withManagedSessions(\n {\n id: \"e2b\",\n capabilities: e2bCapabilities,\n async create(createOptions) {\n const create = {\n apiKey: options.apiKey,\n timeoutMs: options.timeout ?? createOptions.timeout,\n envs: { ...createOptions.env },\n signal: createOptions.signal,\n };\n const raw = options.template\n ? await E2BSandbox.create(options.template, create)\n : await E2BSandbox.create(create);\n try {\n await raw.files.makeDir(createOptions.cwd);\n } catch (error) {\n await raw.kill().catch(() => undefined);\n throw error;\n }\n return {\n id: raw.sandboxId,\n raw,\n capabilities: e2bCapabilities,\n files: {\n async write(path, value) {\n await raw.files.write(path, Uint8Array.from(await toUint8Array(value)).buffer);\n },\n read: (path) => raw.files.read(path, { format: \"bytes\" }),\n async list(path) {\n return (await raw.files.list(path)).map((entry) => ({\n name: entry.name,\n path: entry.path,\n type:\n entry.type === \"file\"\n ? (\"file\" as const)\n : entry.type === \"dir\"\n ? (\"directory\" as const)\n : (\"unknown\" as const),\n size: entry.size,\n }));\n },\n async mkdir(path) {\n await raw.files.makeDir(path);\n },\n remove: (path) => raw.files.remove(path),\n exists: (path) => raw.files.exists(path),\n },\n async run(command, runOptions) {\n try {\n const started = performance.now();\n const result = await raw.commands.run(commandString(command), {\n cwd: runOptions.cwd,\n envs: { ...runOptions.env },\n timeoutMs: runOptions.timeout,\n signal: runOptions.signal,\n });\n return {\n stdout: result.stdout,\n stderr: result.stderr,\n exitCode: result.exitCode,\n success: result.exitCode === 0,\n durationMs: Math.round(performance.now() - started),\n };\n } catch (error) {\n throw normalizeError(\"e2b\", \"process.run\", error);\n }\n },\n async start(command, runOptions) {\n const events: ProcessOutputEvent[] = [];\n const waiters = new Set<() => void>();\n let running = true;\n const push = (stream: \"stdout\" | \"stderr\", data: string) => {\n events.push({ stream, data, timestamp: new Date() });\n for (const wake of waiters) wake();\n waiters.clear();\n };\n const handle = await raw.commands.run(commandString(command), {\n cwd: runOptions.cwd,\n envs: { ...runOptions.env },\n timeoutMs: runOptions.timeout,\n signal: runOptions.signal,\n background: true,\n stdin: true,\n onStdout: (data) => push(\"stdout\", data),\n onStderr: (data) => push(\"stderr\", data),\n });\n const completed = handle.wait().then((result) => ({ exitCode: result.exitCode }));\n const finish = () => {\n running = false;\n for (const wake of waiters) wake();\n waiters.clear();\n };\n void completed.then(finish, finish);\n const process: SandboxProcess = {\n id: String(handle.pid),\n async status() {\n return running ? \"running\" : \"exited\";\n },\n async *output() {\n let index = 0;\n while (running || index < events.length) {\n while (index < events.length) yield events[index++]!;\n if (!running) break;\n await new Promise<void>((resolve) => waiters.add(resolve));\n }\n },\n write: (value) => handle.sendStdin(value),\n wait: () => completed,\n async kill() {\n await handle.kill();\n running = false;\n },\n };\n return process;\n },\n async expose(port) {\n const host = raw.getHost(port);\n const url = `https://${host}`;\n const token = raw.trafficAccessToken;\n return portResult(\n port,\n url,\n !token,\n Boolean(token),\n token\n ? (path = \"/\", init = {}) =>\n fetch(new URL(path, url), {\n ...init,\n headers: {\n ...Object.fromEntries(new Headers(init.headers)),\n \"x-access-token\": token,\n },\n })\n : undefined,\n );\n },\n snapshots: {\n async create(snapshotOptions) {\n const snapshot = await raw.createSnapshot({ name: snapshotOptions?.name });\n return {\n id: snapshot.snapshotId,\n name: snapshot.names[0],\n mode: \"template\",\n } as SandboxSnapshot;\n },\n async delete(snapshot) {\n await E2BSandbox.deleteSnapshot(\n typeof snapshot === \"string\" ? snapshot : snapshot.id,\n {\n apiKey: options.apiKey,\n },\n );\n },\n async restore() {\n unsupported(\"e2b\", \"snapshot.restore\");\n },\n },\n async stop() {\n await raw.kill();\n },\n };\n },\n },\n [],\n {\n stop: async (sandbox) => {\n await sandbox.raw.pause();\n },\n resume: async (sandbox) => {\n await sandbox.raw.connect();\n },\n destroy: async (sandbox) => {\n await sandbox.raw.kill();\n },\n },\n );\n}\n\nexport type { E2BSandbox };\n"],"mappings":"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"}
@@ -1,22 +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 { a as localCapabilities } from "../../capabilities-BWvOVFbH.mjs";
6
- import { n as AgentOsSandbox, t as AgentOsProviderOptions } from "../../index-CkTwqD0X.mjs";
7
-
8
- //#region src/providers/local/index.d.ts
9
- /** Options passed to the AgentOS VM that powers the Local provider. */
10
- interface LocalOptions extends AgentOsProviderOptions {}
11
- /** Native AgentOS access for a Local sandbox. */
12
- type LocalSandbox = AgentOsSandbox;
13
- /**
14
- * Runs an isolated AgentOS VM inside the current Node.js process.
15
- *
16
- * AgentOS is an implementation detail of the Local provider. Outbound networking and host bindings
17
- * are denied by default; pass native options under `agentOs` to configure the VM explicitly.
18
- */
19
- declare function local(options?: LocalOptions): SandboxProvider<LocalSandbox>;
20
- //#endregion
21
- export { LocalOptions, LocalSandbox, local, localCapabilities };
22
- //# sourceMappingURL=index.d.mts.map
@@ -1,22 +0,0 @@
1
- import "../../errors-BuF9bYOQ.mjs";
2
- import "../../capabilities-xs9kaHrK.mjs";
3
- import "../../sandbox-DgtY5hvt.mjs";
4
- import { a as localCapabilities } 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
- //#region src/providers/local/index.ts
10
- /**
11
- * Runs an isolated AgentOS VM inside the current Node.js process.
12
- *
13
- * AgentOS is an implementation detail of the Local provider. Outbound networking and host bindings
14
- * are denied by default; pass native options under `agentOs` to configure the VM explicitly.
15
- */
16
- function local(options = {}) {
17
- return agentos(options);
18
- }
19
-
20
- //#endregion
21
- export { local, localCapabilities };
22
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":["createAgentOsRuntime"],"sources":["../../../src/providers/local/index.ts"],"sourcesContent":["import type { SandboxProvider } from \"../../core/provider\";\nimport {\n agentos as createAgentOsRuntime,\n type AgentOsProviderOptions,\n type AgentOsSandbox,\n} from \"../agentos\";\n\n/** Options passed to the AgentOS VM that powers the Local provider. */\nexport interface LocalOptions extends AgentOsProviderOptions {}\n\n/** Native AgentOS access for a Local sandbox. */\nexport type LocalSandbox = AgentOsSandbox;\n\nexport { localCapabilities } from \"../capabilities\";\n\n/**\n * Runs an isolated AgentOS VM inside the current Node.js process.\n *\n * AgentOS is an implementation detail of the Local provider. Outbound networking and host bindings\n * are denied by default; pass native options under `agentOs` to configure the VM explicitly.\n */\nexport function local(options: LocalOptions = {}): SandboxProvider<LocalSandbox> {\n return createAgentOsRuntime(options);\n}\n"],"mappings":";;;;;;;;;;;;;;;AAqBA,SAAgB,MAAM,UAAwB,EAAE,EAAiC;AAC/E,QAAOA,QAAqB,QAAQ"}
@@ -1,29 +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 { o as railwayCapabilities } from "../../capabilities-BWvOVFbH.mjs";
6
- import { Sandbox as RailwaySandbox, SandboxTemplate } from "railway";
7
-
8
- //#region src/providers/railway/index.d.ts
9
- interface RailwayBaseOptions {
10
- /** Railway API token. Defaults to RAILWAY_API_TOKEN. */
11
- token?: string;
12
- /** Railway environment id. Defaults to RAILWAY_ENVIRONMENT_ID. */
13
- environmentId?: string;
14
- /** Minutes before Railway destroys an idle sandbox. */
15
- idleTimeoutMinutes?: number;
16
- /** Whether the sandbox can access the environment's private network. */
17
- networkIsolation?: "ISOLATED" | "PRIVATE";
18
- }
19
- type RailwayOptions = RailwayBaseOptions & ({
20
- checkpoint?: string;
21
- template?: never;
22
- } | {
23
- checkpoint?: never;
24
- template?: SandboxTemplate;
25
- });
26
- declare function railway(options?: RailwayOptions): SandboxProvider<RailwaySandbox>;
27
- //#endregion
28
- export { RailwayOptions, type RailwaySandbox, type SandboxTemplate as RailwaySandboxTemplate, railway, railwayCapabilities };
29
- //# sourceMappingURL=index.d.mts.map
@@ -1,211 +0,0 @@
1
- import { t as SandboxError } from "../../errors-BuF9bYOQ.mjs";
2
- import "../../capabilities-xs9kaHrK.mjs";
3
- import { o as railwayCapabilities } from "../../capabilities-CaSNd6J1.mjs";
4
- import { i as unsupported, t as commandString } from "../../provider-utils-CfB9nvJx.mjs";
5
- import { Sandbox } from "railway";
6
-
7
- //#region src/providers/railway/index.ts
8
- function railway(options = {}) {
9
- const credentials = {
10
- token: options.token,
11
- environmentId: options.environmentId
12
- };
13
- return {
14
- id: "railway",
15
- capabilities: railwayCapabilities,
16
- async create(createOptions) {
17
- assertNotAborted(createOptions.signal);
18
- const createConfig = {
19
- ...credentials,
20
- idleTimeoutMinutes: options.idleTimeoutMinutes,
21
- networkIsolation: options.networkIsolation,
22
- env: { ...createOptions.env }
23
- };
24
- const raw = await awaitCreation(options.checkpoint ? Sandbox.create(options.checkpoint, createConfig) : options.template ? Sandbox.create(options.template, createConfig) : Sandbox.create(createConfig), createOptions.signal, createOptions.timeout);
25
- try {
26
- await raw.files.mkdir(createOptions.cwd);
27
- } catch (error) {
28
- await raw.destroy().catch(() => void 0);
29
- throw error;
30
- }
31
- return {
32
- id: raw.id,
33
- raw,
34
- capabilities: railwayCapabilities,
35
- files: {
36
- async write(path, value) {
37
- await raw.files.write(path, value);
38
- },
39
- read: (path) => raw.files.read(path, { format: "bytes" }),
40
- async list(path) {
41
- return (await raw.files.list(path)).map((entry) => ({
42
- name: entry.name,
43
- path: `${path.replace(/\/$/, "")}/${entry.name}`,
44
- type: entry.isDir ? "directory" : "file",
45
- size: entry.isDir ? void 0 : entry.size
46
- }));
47
- },
48
- mkdir: (path) => raw.files.mkdir(path),
49
- async remove(path) {
50
- const result = await raw.exec(commandString({
51
- command: "rm",
52
- args: [
53
- "-rf",
54
- "--",
55
- path
56
- ]
57
- }));
58
- if (result.exitCode !== 0) throw new Error(`files.remove failed: ${result.stderr || result.stdout}`);
59
- },
60
- exists: (path) => raw.files.exists(path)
61
- },
62
- async run(command, runOptions) {
63
- assertNotAborted(runOptions.signal);
64
- const started = performance.now();
65
- const handle = raw.exec(commandString(command), {
66
- cwd: runOptions.cwd,
67
- env: { ...runOptions.env },
68
- timeoutSec: timeoutSeconds(runOptions.timeout)
69
- });
70
- const removeAbort = bindAbort(handle, runOptions.signal);
71
- try {
72
- const result = await handle;
73
- if (result.timedOut) throw new SandboxError({
74
- code: "timeout",
75
- provider: "railway",
76
- operation: "process.run",
77
- message: `Command timed out after ${runOptions.timeout}ms`
78
- });
79
- return {
80
- stdout: result.stdout,
81
- stderr: result.stderr,
82
- exitCode: result.exitCode ?? -1,
83
- success: result.exitCode === 0,
84
- signal: result.exitCode === null ? "unknown" : void 0,
85
- durationMs: Math.round(performance.now() - started)
86
- };
87
- } finally {
88
- removeAbort();
89
- }
90
- },
91
- async start(command, runOptions) {
92
- assertNotAborted(runOptions.signal);
93
- const events = [];
94
- const waiters = /* @__PURE__ */ new Set();
95
- let state = "running";
96
- const wake = () => {
97
- for (const waiter of waiters) waiter();
98
- waiters.clear();
99
- };
100
- const push = (stream, data) => {
101
- events.push({
102
- stream,
103
- data,
104
- timestamp: /* @__PURE__ */ new Date()
105
- });
106
- wake();
107
- };
108
- const handle = raw.exec(commandString(command), {
109
- cwd: runOptions.cwd,
110
- env: { ...runOptions.env },
111
- timeoutSec: timeoutSeconds(runOptions.timeout),
112
- onStdout: (chunk) => push("stdout", chunk),
113
- onStderr: (chunk) => push("stderr", chunk)
114
- });
115
- const removeAbort = bindAbort(handle, runOptions.signal);
116
- const completed = handle.then((result) => ({ exitCode: result.exitCode ?? -1 })).finally(() => {
117
- if (state === "running") state = "exited";
118
- removeAbort();
119
- wake();
120
- });
121
- return {
122
- id: await handle.sessionName,
123
- async status() {
124
- return state;
125
- },
126
- async *output() {
127
- let index = 0;
128
- while (state === "running" || index < events.length) {
129
- while (index < events.length) yield events[index++];
130
- if (state !== "running") break;
131
- await new Promise((resolve) => waiters.add(resolve));
132
- }
133
- },
134
- async write() {
135
- unsupported("railway", "process.stdin");
136
- },
137
- wait: () => completed,
138
- async kill(signal = "SIGTERM") {
139
- const nativeSignal = signal.replace(/^SIG/, "");
140
- await handle.kill(nativeSignal);
141
- state = "killed";
142
- wake();
143
- }
144
- };
145
- },
146
- async expose() {
147
- unsupported("railway", "ports.expose");
148
- },
149
- snapshots: {
150
- async create(snapshotOptions) {
151
- const checkpoint = await raw.checkpoint(snapshotOptions?.name ?? `sandbox-sdk-${Date.now()}`);
152
- return {
153
- id: checkpoint.id,
154
- name: checkpoint.key,
155
- mode: "filesystem",
156
- createdAt: new Date(checkpoint.createdAt)
157
- };
158
- },
159
- async delete(snapshot) {
160
- await Sandbox.deleteCheckpoint(typeof snapshot === "string" ? snapshot : snapshot.id, credentials);
161
- },
162
- async restore() {
163
- unsupported("railway", "snapshot.restore");
164
- }
165
- },
166
- async stop() {
167
- await raw.destroy();
168
- }
169
- };
170
- }
171
- };
172
- }
173
- function timeoutSeconds(timeout) {
174
- return timeout === void 0 ? void 0 : Math.max(1, Math.ceil(timeout / 1e3));
175
- }
176
- function bindAbort(handle, signal) {
177
- if (!signal) return () => void 0;
178
- const abort = () => void handle.kill("TERM").catch(() => void 0);
179
- signal.addEventListener("abort", abort, { once: true });
180
- return () => signal.removeEventListener("abort", abort);
181
- }
182
- async function awaitCreation(promise, signal, timeoutMs) {
183
- if (!signal && timeoutMs === void 0) return promise;
184
- return new Promise((resolve, reject) => {
185
- let settled = false;
186
- const finish = (callback) => {
187
- if (settled) return;
188
- settled = true;
189
- signal?.removeEventListener("abort", onAbort);
190
- if (timer) clearTimeout(timer);
191
- callback();
192
- };
193
- const onAbort = () => finish(() => reject(signal?.reason ?? new DOMException("Aborted", "AbortError")));
194
- const timer = timeoutMs ? setTimeout(() => finish(() => reject(/* @__PURE__ */ new Error(`Sandbox creation timed out after ${timeoutMs}ms`))), timeoutMs) : void 0;
195
- signal?.addEventListener("abort", onAbort, { once: true });
196
- promise.then((sandbox) => {
197
- if (settled) {
198
- sandbox.destroy().catch(() => void 0);
199
- return;
200
- }
201
- finish(() => resolve(sandbox));
202
- }, (error) => finish(() => reject(error)));
203
- });
204
- }
205
- function assertNotAborted(signal) {
206
- if (signal?.aborted) throw signal.reason ?? new DOMException("Aborted", "AbortError");
207
- }
208
-
209
- //#endregion
210
- export { railway, railwayCapabilities };
211
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":["RailwaySandbox","events: ProcessOutputEvent[]","state: \"running\" | \"exited\" | \"killed\""],"sources":["../../../src/providers/railway/index.ts"],"sourcesContent":["import {\n Sandbox as RailwaySandbox,\n type ExecHandle,\n type ExecSignal,\n type SandboxTemplate,\n} from \"railway\";\nimport { SandboxError } from \"../../core/errors\";\nimport type { SandboxProvider } from \"../../core/provider\";\nimport type { ProcessOutputEvent, SandboxProcess, SandboxSnapshot } from \"../../core/types\";\nimport { commandString, unsupported } from \"../../internal/provider-utils\";\nimport { railwayCapabilities } from \"../capabilities\";\n\ninterface RailwayBaseOptions {\n /** Railway API token. Defaults to RAILWAY_API_TOKEN. */\n token?: string;\n /** Railway environment id. Defaults to RAILWAY_ENVIRONMENT_ID. */\n environmentId?: string;\n /** Minutes before Railway destroys an idle sandbox. */\n idleTimeoutMinutes?: number;\n /** Whether the sandbox can access the environment's private network. */\n networkIsolation?: \"ISOLATED\" | \"PRIVATE\";\n}\n\nexport type RailwayOptions = RailwayBaseOptions &\n ({ checkpoint?: string; template?: never } | { checkpoint?: never; template?: SandboxTemplate });\n\nexport { railwayCapabilities } from \"../capabilities\";\n\nexport function railway(options: RailwayOptions = {}): SandboxProvider<RailwaySandbox> {\n const credentials = {\n token: options.token,\n environmentId: options.environmentId,\n };\n\n return {\n id: \"railway\",\n capabilities: railwayCapabilities,\n async create(createOptions) {\n assertNotAborted(createOptions.signal);\n const createConfig = {\n ...credentials,\n idleTimeoutMinutes: options.idleTimeoutMinutes,\n networkIsolation: options.networkIsolation,\n env: { ...createOptions.env },\n };\n const pending = options.checkpoint\n ? RailwaySandbox.create(options.checkpoint, createConfig)\n : options.template\n ? RailwaySandbox.create(options.template, createConfig)\n : RailwaySandbox.create(createConfig);\n const raw = await awaitCreation(pending, createOptions.signal, createOptions.timeout);\n try {\n await raw.files.mkdir(createOptions.cwd);\n } catch (error) {\n await raw.destroy().catch(() => undefined);\n throw error;\n }\n\n return {\n id: raw.id,\n raw,\n capabilities: railwayCapabilities,\n files: {\n async write(path, value) {\n await raw.files.write(path, value);\n },\n read: (path) => raw.files.read(path, { format: \"bytes\" }),\n async list(path) {\n return (await raw.files.list(path)).map((entry) => ({\n name: entry.name,\n path: `${path.replace(/\\/$/, \"\")}/${entry.name}`,\n type: entry.isDir ? (\"directory\" as const) : (\"file\" as const),\n size: entry.isDir ? undefined : entry.size,\n }));\n },\n mkdir: (path) => raw.files.mkdir(path),\n async remove(path) {\n const result = await raw.exec(\n commandString({ command: \"rm\", args: [\"-rf\", \"--\", path] }),\n );\n if (result.exitCode !== 0) {\n throw new Error(`files.remove failed: ${result.stderr || result.stdout}`);\n }\n },\n exists: (path) => raw.files.exists(path),\n },\n async run(command, runOptions) {\n assertNotAborted(runOptions.signal);\n const started = performance.now();\n const handle = raw.exec(commandString(command), {\n cwd: runOptions.cwd,\n env: { ...runOptions.env },\n timeoutSec: timeoutSeconds(runOptions.timeout),\n });\n const removeAbort = bindAbort(handle, runOptions.signal);\n try {\n const result = await handle;\n if (result.timedOut) {\n throw new SandboxError({\n code: \"timeout\",\n provider: \"railway\",\n operation: \"process.run\",\n message: `Command timed out after ${runOptions.timeout}ms`,\n });\n }\n return {\n stdout: result.stdout,\n stderr: result.stderr,\n exitCode: result.exitCode ?? -1,\n success: result.exitCode === 0,\n signal: result.exitCode === null ? \"unknown\" : undefined,\n durationMs: Math.round(performance.now() - started),\n };\n } finally {\n removeAbort();\n }\n },\n async start(command, runOptions) {\n assertNotAborted(runOptions.signal);\n const events: ProcessOutputEvent[] = [];\n const waiters = new Set<() => void>();\n let state: \"running\" | \"exited\" | \"killed\" = \"running\";\n const wake = () => {\n for (const waiter of waiters) waiter();\n waiters.clear();\n };\n const push = (stream: \"stdout\" | \"stderr\", data: string) => {\n events.push({ stream, data, timestamp: new Date() });\n wake();\n };\n const handle = raw.exec(commandString(command), {\n cwd: runOptions.cwd,\n env: { ...runOptions.env },\n timeoutSec: timeoutSeconds(runOptions.timeout),\n onStdout: (chunk) => push(\"stdout\", chunk),\n onStderr: (chunk) => push(\"stderr\", chunk),\n });\n const removeAbort = bindAbort(handle, runOptions.signal);\n const completed = handle\n .then((result) => ({ exitCode: result.exitCode ?? -1 }))\n .finally(() => {\n if (state === \"running\") state = \"exited\";\n removeAbort();\n wake();\n });\n const id = await handle.sessionName;\n\n return {\n id,\n async status() {\n return state;\n },\n async *output() {\n let index = 0;\n while (state === \"running\" || index < events.length) {\n while (index < events.length) yield events[index++]!;\n if (state !== \"running\") break;\n await new Promise<void>((resolve) => waiters.add(resolve));\n }\n },\n async write() {\n unsupported(\"railway\", \"process.stdin\");\n },\n wait: () => completed,\n async kill(signal = \"SIGTERM\") {\n const nativeSignal = signal.replace(/^SIG/, \"\") as ExecSignal;\n await handle.kill(nativeSignal);\n state = \"killed\";\n wake();\n },\n } satisfies SandboxProcess;\n },\n async expose() {\n unsupported(\"railway\", \"ports.expose\");\n },\n snapshots: {\n async create(snapshotOptions) {\n const checkpoint = await raw.checkpoint(\n snapshotOptions?.name ?? `sandbox-sdk-${Date.now()}`,\n );\n return {\n id: checkpoint.id,\n name: checkpoint.key,\n mode: \"filesystem\",\n createdAt: new Date(checkpoint.createdAt),\n } satisfies SandboxSnapshot;\n },\n async delete(snapshot) {\n await RailwaySandbox.deleteCheckpoint(\n typeof snapshot === \"string\" ? snapshot : snapshot.id,\n credentials,\n );\n },\n async restore() {\n unsupported(\"railway\", \"snapshot.restore\");\n },\n },\n async stop() {\n await raw.destroy();\n },\n };\n },\n };\n}\n\nfunction timeoutSeconds(timeout?: number): number | undefined {\n return timeout === undefined ? undefined : Math.max(1, Math.ceil(timeout / 1_000));\n}\n\nfunction bindAbort(handle: ExecHandle, signal?: AbortSignal): () => void {\n if (!signal) return () => undefined;\n const abort = () => void handle.kill(\"TERM\").catch(() => undefined);\n signal.addEventListener(\"abort\", abort, { once: true });\n return () => signal.removeEventListener(\"abort\", abort);\n}\n\nasync function awaitCreation(\n promise: Promise<RailwaySandbox>,\n signal?: AbortSignal,\n timeoutMs?: number,\n): Promise<RailwaySandbox> {\n if (!signal && timeoutMs === undefined) return promise;\n return new Promise<RailwaySandbox>((resolve, reject) => {\n let settled = false;\n const finish = (callback: () => void) => {\n if (settled) return;\n settled = true;\n signal?.removeEventListener(\"abort\", onAbort);\n if (timer) clearTimeout(timer);\n callback();\n };\n const onAbort = () =>\n finish(() => reject(signal?.reason ?? new DOMException(\"Aborted\", \"AbortError\")));\n const timer = timeoutMs\n ? setTimeout(\n () => finish(() => reject(new Error(`Sandbox creation timed out after ${timeoutMs}ms`))),\n timeoutMs,\n )\n : undefined;\n signal?.addEventListener(\"abort\", onAbort, { once: true });\n promise.then(\n (sandbox) => {\n if (settled) {\n void sandbox.destroy().catch(() => undefined);\n return;\n }\n finish(() => resolve(sandbox));\n },\n (error) => finish(() => reject(error)),\n );\n });\n}\n\nfunction assertNotAborted(signal?: AbortSignal): void {\n if (signal?.aborted) throw signal.reason ?? new DOMException(\"Aborted\", \"AbortError\");\n}\n\nexport type { RailwaySandbox, SandboxTemplate as RailwaySandboxTemplate };\n"],"mappings":"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"}
@@ -1,17 +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 { s as upstashCapabilities } from "../../capabilities-BWvOVFbH.mjs";
6
- import { Box, BoxConfig } from "@upstash/box";
7
-
8
- //#region src/providers/upstash/index.d.ts
9
- type UpstashOptions = Omit<BoxConfig, "env"> & {
10
- /** Expose ports publicly. Set to false to return bearer-token URLs. */
11
- public?: boolean;
12
- };
13
- declare function upstash(options?: UpstashOptions): SandboxProvider<Box>;
14
- type UpstashBox = Box;
15
- //#endregion
16
- export { UpstashBox, UpstashOptions, upstash, upstashCapabilities };
17
- //# sourceMappingURL=index.d.mts.map