@openai/agents-extensions 0.8.5 → 0.9.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 (213) hide show
  1. package/dist/metadata.js +2 -2
  2. package/dist/metadata.mjs +2 -2
  3. package/dist/sandbox/blaxel/index.d.ts +2 -0
  4. package/dist/sandbox/blaxel/index.js +19 -0
  5. package/dist/sandbox/blaxel/index.js.map +1 -0
  6. package/dist/sandbox/blaxel/index.mjs +3 -0
  7. package/dist/sandbox/blaxel/index.mjs.map +1 -0
  8. package/dist/sandbox/blaxel/mounts.d.ts +101 -0
  9. package/dist/sandbox/blaxel/mounts.js +542 -0
  10. package/dist/sandbox/blaxel/mounts.js.map +1 -0
  11. package/dist/sandbox/blaxel/mounts.mjs +529 -0
  12. package/dist/sandbox/blaxel/mounts.mjs.map +1 -0
  13. package/dist/sandbox/blaxel/sandbox.d.ts +155 -0
  14. package/dist/sandbox/blaxel/sandbox.js +1110 -0
  15. package/dist/sandbox/blaxel/sandbox.js.map +1 -0
  16. package/dist/sandbox/blaxel/sandbox.mjs +1072 -0
  17. package/dist/sandbox/blaxel/sandbox.mjs.map +1 -0
  18. package/dist/sandbox/cloudflare/index.d.ts +2 -0
  19. package/dist/sandbox/cloudflare/index.js +19 -0
  20. package/dist/sandbox/cloudflare/index.js.map +1 -0
  21. package/dist/sandbox/cloudflare/index.mjs +3 -0
  22. package/dist/sandbox/cloudflare/index.mjs.map +1 -0
  23. package/dist/sandbox/cloudflare/mounts.d.ts +28 -0
  24. package/dist/sandbox/cloudflare/mounts.js +150 -0
  25. package/dist/sandbox/cloudflare/mounts.js.map +1 -0
  26. package/dist/sandbox/cloudflare/mounts.mjs +143 -0
  27. package/dist/sandbox/cloudflare/mounts.mjs.map +1 -0
  28. package/dist/sandbox/cloudflare/sandbox.d.ts +91 -0
  29. package/dist/sandbox/cloudflare/sandbox.js +1163 -0
  30. package/dist/sandbox/cloudflare/sandbox.js.map +1 -0
  31. package/dist/sandbox/cloudflare/sandbox.mjs +1125 -0
  32. package/dist/sandbox/cloudflare/sandbox.mjs.map +1 -0
  33. package/dist/sandbox/daytona/index.d.ts +2 -0
  34. package/dist/sandbox/daytona/index.js +19 -0
  35. package/dist/sandbox/daytona/index.js.map +1 -0
  36. package/dist/sandbox/daytona/index.mjs +3 -0
  37. package/dist/sandbox/daytona/index.mjs.map +1 -0
  38. package/dist/sandbox/daytona/mounts.d.ts +11 -0
  39. package/dist/sandbox/daytona/mounts.js +17 -0
  40. package/dist/sandbox/daytona/mounts.js.map +1 -0
  41. package/dist/sandbox/daytona/mounts.mjs +12 -0
  42. package/dist/sandbox/daytona/mounts.mjs.map +1 -0
  43. package/dist/sandbox/daytona/sandbox.d.ts +160 -0
  44. package/dist/sandbox/daytona/sandbox.js +938 -0
  45. package/dist/sandbox/daytona/sandbox.js.map +1 -0
  46. package/dist/sandbox/daytona/sandbox.mjs +900 -0
  47. package/dist/sandbox/daytona/sandbox.mjs.map +1 -0
  48. package/dist/sandbox/e2b/index.d.ts +2 -0
  49. package/dist/sandbox/e2b/index.js +19 -0
  50. package/dist/sandbox/e2b/index.js.map +1 -0
  51. package/dist/sandbox/e2b/index.mjs +3 -0
  52. package/dist/sandbox/e2b/index.mjs.map +1 -0
  53. package/dist/sandbox/e2b/mounts.d.ts +11 -0
  54. package/dist/sandbox/e2b/mounts.js +17 -0
  55. package/dist/sandbox/e2b/mounts.js.map +1 -0
  56. package/dist/sandbox/e2b/mounts.mjs +12 -0
  57. package/dist/sandbox/e2b/mounts.mjs.map +1 -0
  58. package/dist/sandbox/e2b/sandbox.d.ts +169 -0
  59. package/dist/sandbox/e2b/sandbox.js +829 -0
  60. package/dist/sandbox/e2b/sandbox.js.map +1 -0
  61. package/dist/sandbox/e2b/sandbox.mjs +791 -0
  62. package/dist/sandbox/e2b/sandbox.mjs.map +1 -0
  63. package/dist/sandbox/modal/index.d.ts +2 -0
  64. package/dist/sandbox/modal/index.js +19 -0
  65. package/dist/sandbox/modal/index.js.map +1 -0
  66. package/dist/sandbox/modal/index.mjs +3 -0
  67. package/dist/sandbox/modal/index.mjs.map +1 -0
  68. package/dist/sandbox/modal/mounts.d.ts +24 -0
  69. package/dist/sandbox/modal/mounts.js +194 -0
  70. package/dist/sandbox/modal/mounts.js.map +1 -0
  71. package/dist/sandbox/modal/mounts.mjs +188 -0
  72. package/dist/sandbox/modal/mounts.mjs.map +1 -0
  73. package/dist/sandbox/modal/sandbox.d.ts +220 -0
  74. package/dist/sandbox/modal/sandbox.js +1621 -0
  75. package/dist/sandbox/modal/sandbox.js.map +1 -0
  76. package/dist/sandbox/modal/sandbox.mjs +1581 -0
  77. package/dist/sandbox/modal/sandbox.mjs.map +1 -0
  78. package/dist/sandbox/runloop/index.d.ts +2 -0
  79. package/dist/sandbox/runloop/index.js +19 -0
  80. package/dist/sandbox/runloop/index.js.map +1 -0
  81. package/dist/sandbox/runloop/index.mjs +3 -0
  82. package/dist/sandbox/runloop/index.mjs.map +1 -0
  83. package/dist/sandbox/runloop/mounts.d.ts +11 -0
  84. package/dist/sandbox/runloop/mounts.js +17 -0
  85. package/dist/sandbox/runloop/mounts.js.map +1 -0
  86. package/dist/sandbox/runloop/mounts.mjs +12 -0
  87. package/dist/sandbox/runloop/mounts.mjs.map +1 -0
  88. package/dist/sandbox/runloop/sandbox.d.ts +266 -0
  89. package/dist/sandbox/runloop/sandbox.js +1390 -0
  90. package/dist/sandbox/runloop/sandbox.js.map +1 -0
  91. package/dist/sandbox/runloop/sandbox.mjs +1346 -0
  92. package/dist/sandbox/runloop/sandbox.mjs.map +1 -0
  93. package/dist/sandbox/shared/archive.d.ts +34 -0
  94. package/dist/sandbox/shared/archive.js +397 -0
  95. package/dist/sandbox/shared/archive.js.map +1 -0
  96. package/dist/sandbox/shared/archive.mjs +389 -0
  97. package/dist/sandbox/shared/archive.mjs.map +1 -0
  98. package/dist/sandbox/shared/editor.d.ts +17 -0
  99. package/dist/sandbox/shared/editor.js +65 -0
  100. package/dist/sandbox/shared/editor.js.map +1 -0
  101. package/dist/sandbox/shared/editor.mjs +61 -0
  102. package/dist/sandbox/shared/editor.mjs.map +1 -0
  103. package/dist/sandbox/shared/environment.d.ts +1 -0
  104. package/dist/sandbox/shared/environment.js +13 -0
  105. package/dist/sandbox/shared/environment.js.map +1 -0
  106. package/dist/sandbox/shared/environment.mjs +2 -0
  107. package/dist/sandbox/shared/environment.mjs.map +1 -0
  108. package/dist/sandbox/shared/git.d.ts +4 -0
  109. package/dist/sandbox/shared/git.js +20 -0
  110. package/dist/sandbox/shared/git.js.map +1 -0
  111. package/dist/sandbox/shared/git.mjs +17 -0
  112. package/dist/sandbox/shared/git.mjs.map +1 -0
  113. package/dist/sandbox/shared/inContainerMounts.d.ts +40 -0
  114. package/dist/sandbox/shared/inContainerMounts.js +670 -0
  115. package/dist/sandbox/shared/inContainerMounts.js.map +1 -0
  116. package/dist/sandbox/shared/inContainerMounts.mjs +662 -0
  117. package/dist/sandbox/shared/inContainerMounts.mjs.map +1 -0
  118. package/dist/sandbox/shared/index.d.ts +23 -0
  119. package/dist/sandbox/shared/index.js +112 -0
  120. package/dist/sandbox/shared/index.js.map +1 -0
  121. package/dist/sandbox/shared/index.mjs +18 -0
  122. package/dist/sandbox/shared/index.mjs.map +1 -0
  123. package/dist/sandbox/shared/localSources.d.ts +8 -0
  124. package/dist/sandbox/shared/localSources.js +378 -0
  125. package/dist/sandbox/shared/localSources.js.map +1 -0
  126. package/dist/sandbox/shared/localSources.mjs +372 -0
  127. package/dist/sandbox/shared/localSources.mjs.map +1 -0
  128. package/dist/sandbox/shared/manifest.d.ts +38 -0
  129. package/dist/sandbox/shared/manifest.js +254 -0
  130. package/dist/sandbox/shared/manifest.js.map +1 -0
  131. package/dist/sandbox/shared/manifest.mjs +233 -0
  132. package/dist/sandbox/shared/manifest.mjs.map +1 -0
  133. package/dist/sandbox/shared/media.d.ts +1 -0
  134. package/dist/sandbox/shared/media.js +10 -0
  135. package/dist/sandbox/shared/media.js.map +1 -0
  136. package/dist/sandbox/shared/media.mjs +2 -0
  137. package/dist/sandbox/shared/media.mjs.map +1 -0
  138. package/dist/sandbox/shared/metadata.d.ts +7 -0
  139. package/dist/sandbox/shared/metadata.js +87 -0
  140. package/dist/sandbox/shared/metadata.js.map +1 -0
  141. package/dist/sandbox/shared/metadata.mjs +81 -0
  142. package/dist/sandbox/shared/metadata.mjs.map +1 -0
  143. package/dist/sandbox/shared/output.d.ts +1 -0
  144. package/dist/sandbox/shared/output.js +8 -0
  145. package/dist/sandbox/shared/output.js.map +1 -0
  146. package/dist/sandbox/shared/output.mjs +2 -0
  147. package/dist/sandbox/shared/output.mjs.map +1 -0
  148. package/dist/sandbox/shared/paths.d.ts +27 -0
  149. package/dist/sandbox/shared/paths.js +245 -0
  150. package/dist/sandbox/shared/paths.js.map +1 -0
  151. package/dist/sandbox/shared/paths.mjs +236 -0
  152. package/dist/sandbox/shared/paths.mjs.map +1 -0
  153. package/dist/sandbox/shared/ports.d.ts +14 -0
  154. package/dist/sandbox/shared/ports.js +75 -0
  155. package/dist/sandbox/shared/ports.js.map +1 -0
  156. package/dist/sandbox/shared/ports.mjs +69 -0
  157. package/dist/sandbox/shared/ports.mjs.map +1 -0
  158. package/dist/sandbox/shared/process.d.ts +16 -0
  159. package/dist/sandbox/shared/process.js +90 -0
  160. package/dist/sandbox/shared/process.js.map +1 -0
  161. package/dist/sandbox/shared/process.mjs +86 -0
  162. package/dist/sandbox/shared/process.mjs.map +1 -0
  163. package/dist/sandbox/shared/pty.d.ts +81 -0
  164. package/dist/sandbox/shared/pty.js +382 -0
  165. package/dist/sandbox/shared/pty.js.map +1 -0
  166. package/dist/sandbox/shared/pty.mjs +335 -0
  167. package/dist/sandbox/shared/pty.mjs.map +1 -0
  168. package/dist/sandbox/shared/runAs.d.ts +46 -0
  169. package/dist/sandbox/shared/runAs.js +149 -0
  170. package/dist/sandbox/shared/runAs.js.map +1 -0
  171. package/dist/sandbox/shared/runAs.mjs +141 -0
  172. package/dist/sandbox/shared/runAs.mjs.map +1 -0
  173. package/dist/sandbox/shared/session.d.ts +16 -0
  174. package/dist/sandbox/shared/session.js +138 -0
  175. package/dist/sandbox/shared/session.js.map +1 -0
  176. package/dist/sandbox/shared/session.mjs +128 -0
  177. package/dist/sandbox/shared/session.mjs.map +1 -0
  178. package/dist/sandbox/shared/sessionBase.d.ts +90 -0
  179. package/dist/sandbox/shared/sessionBase.js +446 -0
  180. package/dist/sandbox/shared/sessionBase.js.map +1 -0
  181. package/dist/sandbox/shared/sessionBase.mjs +442 -0
  182. package/dist/sandbox/shared/sessionBase.mjs.map +1 -0
  183. package/dist/sandbox/shared/sessionState.d.ts +7 -0
  184. package/dist/sandbox/shared/sessionState.js +35 -0
  185. package/dist/sandbox/shared/sessionState.js.map +1 -0
  186. package/dist/sandbox/shared/sessionState.mjs +31 -0
  187. package/dist/sandbox/shared/sessionState.mjs.map +1 -0
  188. package/dist/sandbox/shared/snapshots.d.ts +9 -0
  189. package/dist/sandbox/shared/snapshots.js +62 -0
  190. package/dist/sandbox/shared/snapshots.js.map +1 -0
  191. package/dist/sandbox/shared/snapshots.mjs +57 -0
  192. package/dist/sandbox/shared/snapshots.mjs.map +1 -0
  193. package/dist/sandbox/shared/typeGuards.d.ts +10 -0
  194. package/dist/sandbox/shared/typeGuards.js +50 -0
  195. package/dist/sandbox/shared/typeGuards.js.map +1 -0
  196. package/dist/sandbox/shared/typeGuards.mjs +38 -0
  197. package/dist/sandbox/shared/typeGuards.mjs.map +1 -0
  198. package/dist/sandbox/shared/types.d.ts +24 -0
  199. package/dist/sandbox/shared/types.js +3 -0
  200. package/dist/sandbox/shared/types.js.map +1 -0
  201. package/dist/sandbox/shared/types.mjs +2 -0
  202. package/dist/sandbox/shared/types.mjs.map +1 -0
  203. package/dist/sandbox/vercel/index.d.ts +1 -0
  204. package/dist/sandbox/vercel/index.js +18 -0
  205. package/dist/sandbox/vercel/index.js.map +1 -0
  206. package/dist/sandbox/vercel/index.mjs +2 -0
  207. package/dist/sandbox/vercel/index.mjs.map +1 -0
  208. package/dist/sandbox/vercel/sandbox.d.ts +135 -0
  209. package/dist/sandbox/vercel/sandbox.js +1001 -0
  210. package/dist/sandbox/vercel/sandbox.js.map +1 -0
  211. package/dist/sandbox/vercel/sandbox.mjs +963 -0
  212. package/dist/sandbox/vercel/sandbox.mjs.map +1 -0
  213. package/package.json +108 -4
@@ -0,0 +1,57 @@
1
+ import { SandboxSnapshotError } from '@openai/agents-core/sandbox';
2
+ import { toWorkspaceArchiveBytes } from "./archive.mjs";
3
+ const NATIVE_SNAPSHOT_PREFIXES = {
4
+ e2b: 'E2B_SANDBOX_SNAPSHOT_V1\n',
5
+ modal_snapshot_directory: 'MODAL_SANDBOX_DIR_SNAPSHOT_V1\n',
6
+ modal_snapshot_filesystem: 'MODAL_SANDBOX_FS_SNAPSHOT_V1\n',
7
+ runloop: 'RUNLOOP_SANDBOX_SNAPSHOT_V1\n',
8
+ vercel: 'UC_VERCEL_SNAPSHOT_V1\n',
9
+ };
10
+ export function encodeNativeSnapshotRef(ref) {
11
+ const prefix = NATIVE_SNAPSHOT_PREFIXES[ref.provider];
12
+ const body = JSON.stringify({
13
+ snapshot_id: ref.snapshotId,
14
+ ...(ref.workspacePersistence
15
+ ? { workspace_persistence: ref.workspacePersistence }
16
+ : {}),
17
+ }, Object.keys({
18
+ snapshot_id: ref.snapshotId,
19
+ workspace_persistence: ref.workspacePersistence,
20
+ }).sort());
21
+ return new TextEncoder().encode(`${prefix}${body}`);
22
+ }
23
+ export function decodeNativeSnapshotRef(data) {
24
+ const text = new TextDecoder().decode(toWorkspaceArchiveBytes(data));
25
+ for (const [provider, prefix] of Object.entries(NATIVE_SNAPSHOT_PREFIXES)) {
26
+ if (!text.startsWith(prefix)) {
27
+ continue;
28
+ }
29
+ try {
30
+ const payload = JSON.parse(text.slice(prefix.length));
31
+ if (typeof payload.snapshot_id !== 'string' || !payload.snapshot_id) {
32
+ return undefined;
33
+ }
34
+ return {
35
+ provider,
36
+ snapshotId: payload.snapshot_id,
37
+ workspacePersistence: typeof payload.workspace_persistence === 'string'
38
+ ? payload.workspace_persistence
39
+ : undefined,
40
+ };
41
+ }
42
+ catch {
43
+ return undefined;
44
+ }
45
+ }
46
+ return undefined;
47
+ }
48
+ export function requireNativeSnapshotRef(data, provider) {
49
+ const ref = decodeNativeSnapshotRef(data);
50
+ if (!ref || ref.provider !== provider) {
51
+ throw new SandboxSnapshotError(`Expected a ${provider} native snapshot reference.`, {
52
+ provider,
53
+ });
54
+ }
55
+ return ref;
56
+ }
57
+ //# sourceMappingURL=snapshots.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshots.mjs","sourceRoot":"","sources":["../../../src/sandbox/shared/snapshots.ts"],"names":[],"mappings":"OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B;OAC3D,EAAE,uBAAuB,EAAE;AAelC,MAAM,wBAAwB,GAA2C;IACvE,GAAG,EAAE,2BAA2B;IAChC,wBAAwB,EAAE,iCAAiC;IAC3D,yBAAyB,EAAE,gCAAgC;IAC3D,OAAO,EAAE,+BAA+B;IACxC,MAAM,EAAE,yBAAyB;CAClC,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,GAAsB;IAC5D,MAAM,MAAM,GAAG,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CACzB;QACE,WAAW,EAAE,GAAG,CAAC,UAAU;QAC3B,GAAG,CAAC,GAAG,CAAC,oBAAoB;YAC1B,CAAC,CAAC,EAAE,qBAAqB,EAAE,GAAG,CAAC,oBAAoB,EAAE;YACrD,CAAC,CAAC,EAAE,CAAC;KACR,EACD,MAAM,CAAC,IAAI,CAAC;QACV,WAAW,EAAE,GAAG,CAAC,UAAU;QAC3B,qBAAqB,EAAE,GAAG,CAAC,oBAAoB;KAChD,CAAC,CAAC,IAAI,EAAE,CACV,CAAC;IACF,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAAuC;IAEvC,MAAM,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;IAErE,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,wBAAwB,CAGrE,EAAE,CAAC;QACJ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAGnD,CAAC;YACF,IAAI,OAAO,OAAO,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBACpE,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO;gBACL,QAAQ;gBACR,UAAU,EAAE,OAAO,CAAC,WAAW;gBAC/B,oBAAoB,EAClB,OAAO,OAAO,CAAC,qBAAqB,KAAK,QAAQ;oBAC/C,CAAC,CAAC,OAAO,CAAC,qBAAqB;oBAC/B,CAAC,CAAC,SAAS;aAChB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,IAAuC,EACvC,QAAgC;IAEhC,MAAM,GAAG,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,oBAAoB,CAC5B,cAAc,QAAQ,6BAA6B,EACnD;YACE,QAAQ;SACT,CACF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
2
+ export declare function isStringRecord(value: unknown): value is Record<string, string>;
3
+ export declare function readOptionalString(value: Record<string, unknown> | undefined, key: string): string | undefined;
4
+ export declare function readOptionalRecord(value: unknown): Record<string, unknown> | undefined;
5
+ export declare function readString(value: Record<string, unknown>, key: string, fallback?: string): string;
6
+ export declare function readOptionalNumber(value: Record<string, unknown>, key: string): number | undefined;
7
+ export declare function readOptionalBoolean(value: Record<string, unknown>, key: string): boolean | undefined;
8
+ export declare function readOptionalNumberArray(value: unknown): number[] | undefined;
9
+ export declare function readOptionalRecordArray(value: unknown): Array<Record<string, unknown>> | undefined;
10
+ export declare function readOptionalStringRecord(value: unknown): Record<string, string> | undefined;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isRecord = isRecord;
4
+ exports.isStringRecord = isStringRecord;
5
+ exports.readOptionalString = readOptionalString;
6
+ exports.readOptionalRecord = readOptionalRecord;
7
+ exports.readString = readString;
8
+ exports.readOptionalNumber = readOptionalNumber;
9
+ exports.readOptionalBoolean = readOptionalBoolean;
10
+ exports.readOptionalNumberArray = readOptionalNumberArray;
11
+ exports.readOptionalRecordArray = readOptionalRecordArray;
12
+ exports.readOptionalStringRecord = readOptionalStringRecord;
13
+ function isRecord(value) {
14
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
15
+ }
16
+ function isStringRecord(value) {
17
+ return (isRecord(value) &&
18
+ Object.values(value).every((entry) => typeof entry === 'string'));
19
+ }
20
+ function readOptionalString(value, key) {
21
+ const result = value?.[key];
22
+ return typeof result === 'string' ? result : undefined;
23
+ }
24
+ function readOptionalRecord(value) {
25
+ return isRecord(value) ? value : undefined;
26
+ }
27
+ function readString(value, key, fallback = '') {
28
+ const result = value[key];
29
+ return result === undefined || result === null ? fallback : String(result);
30
+ }
31
+ function readOptionalNumber(value, key) {
32
+ const result = value[key];
33
+ return typeof result === 'number' ? result : undefined;
34
+ }
35
+ function readOptionalBoolean(value, key) {
36
+ const result = value[key];
37
+ return typeof result === 'boolean' ? result : undefined;
38
+ }
39
+ function readOptionalNumberArray(value) {
40
+ return Array.isArray(value)
41
+ ? value.filter((entry) => typeof entry === 'number')
42
+ : undefined;
43
+ }
44
+ function readOptionalRecordArray(value) {
45
+ return Array.isArray(value) ? value.filter(isRecord) : undefined;
46
+ }
47
+ function readOptionalStringRecord(value) {
48
+ return isStringRecord(value) ? value : undefined;
49
+ }
50
+ //# sourceMappingURL=typeGuards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeGuards.js","sourceRoot":"","sources":["../../../src/sandbox/shared/typeGuards.ts"],"names":[],"mappings":";;AAAA,4BAEC;AAED,wCAOC;AAED,gDAMC;AAED,gDAIC;AAED,gCAOC;AAED,gDAMC;AAED,kDAMC;AAED,0DAIC;AAED,0DAIC;AAED,4DAIC;AApED,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAgB,cAAc,CAC5B,KAAc;IAEd,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CACjE,CAAC;AACJ,CAAC;AAED,SAAgB,kBAAkB,CAChC,KAA0C,EAC1C,GAAW;IAEX,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,SAAgB,kBAAkB,CAChC,KAAc;IAEd,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,CAAC;AAED,SAAgB,UAAU,CACxB,KAA8B,EAC9B,GAAW,EACX,WAAmB,EAAE;IAErB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED,SAAgB,kBAAkB,CAChC,KAA8B,EAC9B,GAAW;IAEX,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,SAAgB,mBAAmB,CACjC,KAA8B,EAC9B,GAAW;IAEX,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,CAAC;AAED,SAAgB,uBAAuB,CAAC,KAAc;IACpD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;QACrE,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,SAAgB,uBAAuB,CACrC,KAAc;IAEd,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnE,CAAC;AAED,SAAgB,wBAAwB,CACtC,KAAc;IAEd,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC"}
@@ -0,0 +1,38 @@
1
+ export function isRecord(value) {
2
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
3
+ }
4
+ export function isStringRecord(value) {
5
+ return (isRecord(value) &&
6
+ Object.values(value).every((entry) => typeof entry === 'string'));
7
+ }
8
+ export function readOptionalString(value, key) {
9
+ const result = value?.[key];
10
+ return typeof result === 'string' ? result : undefined;
11
+ }
12
+ export function readOptionalRecord(value) {
13
+ return isRecord(value) ? value : undefined;
14
+ }
15
+ export function readString(value, key, fallback = '') {
16
+ const result = value[key];
17
+ return result === undefined || result === null ? fallback : String(result);
18
+ }
19
+ export function readOptionalNumber(value, key) {
20
+ const result = value[key];
21
+ return typeof result === 'number' ? result : undefined;
22
+ }
23
+ export function readOptionalBoolean(value, key) {
24
+ const result = value[key];
25
+ return typeof result === 'boolean' ? result : undefined;
26
+ }
27
+ export function readOptionalNumberArray(value) {
28
+ return Array.isArray(value)
29
+ ? value.filter((entry) => typeof entry === 'number')
30
+ : undefined;
31
+ }
32
+ export function readOptionalRecordArray(value) {
33
+ return Array.isArray(value) ? value.filter(isRecord) : undefined;
34
+ }
35
+ export function readOptionalStringRecord(value) {
36
+ return isStringRecord(value) ? value : undefined;
37
+ }
38
+ //# sourceMappingURL=typeGuards.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeGuards.mjs","sourceRoot":"","sources":["../../../src/sandbox/shared/typeGuards.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAc;IAEd,OAAO,CACL,QAAQ,CAAC,KAAK,CAAC;QACf,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CACjE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAA0C,EAC1C,GAAW;IAEX,MAAM,MAAM,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAc;IAEd,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,KAA8B,EAC9B,GAAW,EACX,WAAmB,EAAE;IAErB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAA8B,EAC9B,GAAW;IAEX,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAA8B,EAC9B,GAAW;IAEX,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,OAAO,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACzB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;QACrE,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAc;IAEd,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAc;IAEd,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC"}
@@ -0,0 +1,24 @@
1
+ export type RemoteManifestWriter = {
2
+ mkdir(path: string): Promise<void>;
3
+ writeFile(path: string, content: string | Uint8Array): Promise<void>;
4
+ };
5
+ export type RemoteEditorIo = {
6
+ mkdir?(path: string): Promise<void>;
7
+ resolvePath?(path: string, options?: RemoteSandboxPathOptions): Promise<string>;
8
+ pathExists?(path: string): Promise<boolean>;
9
+ readText(path: string): Promise<string>;
10
+ writeText(path: string, content: string): Promise<void>;
11
+ deletePath(path: string): Promise<void>;
12
+ };
13
+ export type RemoteSandboxPathOptions = {
14
+ forWrite?: boolean;
15
+ };
16
+ export type RemoteSandboxPathResolver = (path: string, options?: RemoteSandboxPathOptions) => Promise<string>;
17
+ export type SandboxManifestMetadataSupport = {
18
+ users?: boolean;
19
+ groups?: boolean;
20
+ entryPermissions?: boolean;
21
+ entryGroups?: boolean;
22
+ extraPathGrants?: boolean;
23
+ mounts?: boolean;
24
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/sandbox/shared/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../../src/sandbox/shared/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export * from './sandbox';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./sandbox.js"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sandbox/vercel/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA0B"}
@@ -0,0 +1,2 @@
1
+ export * from "./sandbox.mjs";
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../src/sandbox/vercel/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,135 @@
1
+ import { Manifest, type SandboxClient, type SandboxClientCreateArgs, type SandboxClientOptions, type SandboxConcurrencyLimits, type SandboxSessionSerializationOptions, type SandboxSessionState, type WorkspaceArchiveData } from '@openai/agents-core/sandbox';
2
+ import { RemoteSandboxSessionBase, type RemoteSandboxCommandOptions, type RemoteSandboxCommandResult } from '../shared';
3
+ type VercelSandboxRunCommandParams = Record<string, unknown> & {
4
+ cmd: string;
5
+ args?: string[];
6
+ cwd?: string;
7
+ env?: Record<string, string>;
8
+ sudo?: boolean;
9
+ detached?: boolean;
10
+ };
11
+ type VercelSandboxInstance = {
12
+ sandboxId: string;
13
+ runCommand(params: VercelSandboxRunCommandParams): Promise<VercelCommandFinishedLike>;
14
+ mkDir(path: string): Promise<void>;
15
+ readFileToBuffer(file: {
16
+ path: string;
17
+ cwd?: string;
18
+ }): Promise<Buffer | Uint8Array | null>;
19
+ writeFiles(files: {
20
+ path: string;
21
+ content: string | Uint8Array;
22
+ mode?: number;
23
+ }[]): Promise<void>;
24
+ domain?(port: number): string;
25
+ stop?(): Promise<unknown>;
26
+ snapshot?(params?: {
27
+ expiration?: number;
28
+ }): Promise<{
29
+ snapshotId?: string;
30
+ }>;
31
+ };
32
+ type VercelCommandFinishedLike = {
33
+ exitCode: number | null;
34
+ output(stream?: 'stdout' | 'stderr' | 'both'): Promise<string>;
35
+ };
36
+ export type VercelWorkspacePersistence = 'tar' | 'snapshot';
37
+ export interface VercelSandboxClientOptions extends SandboxClientOptions {
38
+ projectId?: string;
39
+ teamId?: string;
40
+ token?: string;
41
+ runtime?: string;
42
+ resources?: Record<string, unknown>;
43
+ exposedPorts?: number[];
44
+ interactive?: boolean;
45
+ networkPolicy?: Record<string, unknown>;
46
+ timeoutMs?: number;
47
+ workspacePersistence?: VercelWorkspacePersistence;
48
+ snapshotExpirationMs?: number;
49
+ env?: Record<string, string>;
50
+ }
51
+ export interface VercelSandboxSessionState extends SandboxSessionState {
52
+ sandboxId: string;
53
+ projectId?: string;
54
+ teamId?: string;
55
+ token?: string;
56
+ runtime?: string;
57
+ resources?: Record<string, unknown>;
58
+ configuredExposedPorts?: number[];
59
+ interactive?: boolean;
60
+ networkPolicy?: Record<string, unknown>;
61
+ timeoutMs?: number;
62
+ workspacePersistence: VercelWorkspacePersistence;
63
+ snapshotExpirationMs?: number;
64
+ environment: Record<string, string>;
65
+ snapshotId?: string;
66
+ snapshotSandboxId?: string;
67
+ snapshotSupported?: boolean;
68
+ }
69
+ export declare class VercelSandboxSession extends RemoteSandboxSessionBase<VercelSandboxSessionState> {
70
+ private sandbox;
71
+ private readonly knownDirs;
72
+ private readonly pendingDirCreates;
73
+ private closePromise?;
74
+ private closeCompleted;
75
+ private readonly credentials;
76
+ constructor(args: {
77
+ state: VercelSandboxSessionState;
78
+ sandbox: VercelSandboxInstance;
79
+ credentials?: Pick<VercelSandboxClientOptions, 'projectId' | 'teamId' | 'token'>;
80
+ concurrencyLimits?: SandboxConcurrencyLimits;
81
+ });
82
+ supportsPty(): boolean;
83
+ protected assertExecRunAs(runAs?: string): void;
84
+ protected assertFilesystemRunAs(runAs?: string): void;
85
+ protected resolveManifestForApply(manifest: Manifest): Manifest;
86
+ protected beforeFilesystemMutation(): Promise<void>;
87
+ protected beforeExecCommand(): Promise<void>;
88
+ protected beforeMaterializeEntry(): Promise<void>;
89
+ protected beforeApplyManifest(): Promise<void>;
90
+ protected runningWorkdir(): string;
91
+ protected exposedPortSource(): string;
92
+ protected resolveRemoteExposedPort(requestedPort: number): Promise<string>;
93
+ materializeInitialManifest(manifest: Manifest): Promise<void>;
94
+ prepareWorkspaceRoot(): Promise<void>;
95
+ persistWorkspace(): Promise<Uint8Array>;
96
+ hydrateWorkspace(data: WorkspaceArchiveData): Promise<void>;
97
+ close(): Promise<void>;
98
+ private closeOnce;
99
+ shutdown(): Promise<void>;
100
+ delete(): Promise<void>;
101
+ private execShell;
102
+ private replaceSandboxFromSnapshot;
103
+ private recoverSandboxAfterSnapshotRestoreFailure;
104
+ private resolveSnapshotCredentials;
105
+ private createAndPrepareSandboxFromSnapshot;
106
+ private createSandboxFromSnapshot;
107
+ private bindRestoredSandbox;
108
+ private resetKnownDirs;
109
+ private markWorkspaceMutated;
110
+ private clearExposedPortCache;
111
+ private ensureDir;
112
+ protected runRemoteCommand(command: string, options: RemoteSandboxCommandOptions): Promise<RemoteSandboxCommandResult>;
113
+ protected mkdirRemote(path: string): Promise<void>;
114
+ protected readRemoteText(path: string): Promise<string>;
115
+ protected readRemoteFile(path: string): Promise<Uint8Array>;
116
+ protected writeRemoteFile(path: string, content: string | Uint8Array): Promise<void>;
117
+ protected deleteRemotePath(path: string): Promise<void>;
118
+ }
119
+ /**
120
+ * @see {@link https://vercel.com/docs/vercel-sandbox | Vercel Sandbox overview}.
121
+ * @see {@link https://vercel.com/docs/vercel-sandbox/sdk-reference | Sandbox SDK reference}.
122
+ * @see {@link https://vercel.com/docs/vercel-sandbox/working-with-sandbox | Working with Sandbox examples}.
123
+ */
124
+ export declare class VercelSandboxClient implements SandboxClient<VercelSandboxClientOptions, VercelSandboxSessionState> {
125
+ readonly backendId = "vercel";
126
+ private readonly options;
127
+ constructor(options?: VercelSandboxClientOptions);
128
+ create(args?: SandboxClientCreateArgs<VercelSandboxClientOptions> | Manifest, manifestOptions?: VercelSandboxClientOptions): Promise<VercelSandboxSession>;
129
+ serializeSessionState(state: VercelSandboxSessionState, options?: SandboxSessionSerializationOptions): Promise<Record<string, unknown>>;
130
+ canPersistOwnedSessionState(state: VercelSandboxSessionState): boolean;
131
+ canReusePreservedOwnedSession(state: VercelSandboxSessionState): boolean;
132
+ deserializeSessionState(state: Record<string, unknown>): Promise<VercelSandboxSessionState>;
133
+ resume(state: VercelSandboxSessionState): Promise<VercelSandboxSession>;
134
+ }
135
+ export {};