@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,382 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.PtyProcessRegistry = void 0;
37
+ exports.createPtyProcessEntry = createPtyProcessEntry;
38
+ exports.appendPtyOutput = appendPtyOutput;
39
+ exports.markPtyDone = markPtyDone;
40
+ exports.watchPtyProcess = watchPtyProcess;
41
+ exports.openPtyWebSocket = openPtyWebSocket;
42
+ exports.addPtyWebSocketListener = addPtyWebSocketListener;
43
+ exports.collectPtyOutput = collectPtyOutput;
44
+ exports.writePtyStdin = writePtyStdin;
45
+ exports.formatPtyExecUpdate = formatPtyExecUpdate;
46
+ exports.shellCommandForPty = shellCommandForPty;
47
+ const agents_core_1 = require("@openai/agents-core");
48
+ const output_1 = require("./output.js");
49
+ const paths_1 = require("./paths.js");
50
+ const PTY_YIELD_TIME_MS_MIN = 250;
51
+ const PTY_EMPTY_YIELD_TIME_MS_MIN = 5_000;
52
+ const PTY_YIELD_TIME_MS_MAX = 30_000;
53
+ const PTY_PROCESSES_MAX = 64;
54
+ const PTY_PROCESSES_PROTECTED_RECENT = 8;
55
+ const PTY_PROCESS_ID_MIN = 1_000;
56
+ const PTY_PROCESS_ID_MAX_EXCLUSIVE = 100_000;
57
+ function createPtyProcessEntry(args) {
58
+ return {
59
+ tty: args.tty ?? true,
60
+ output: '',
61
+ done: false,
62
+ exitCode: null,
63
+ lastUsed: Date.now(),
64
+ waiters: new Set(),
65
+ sendInput: args.sendInput,
66
+ terminate: args.terminate,
67
+ };
68
+ }
69
+ function appendPtyOutput(entry, chunk) {
70
+ if (typeof chunk === 'string') {
71
+ entry.output += chunk;
72
+ }
73
+ else {
74
+ entry.output += new TextDecoder().decode(chunk);
75
+ }
76
+ notifyPtyWaiters(entry);
77
+ }
78
+ function markPtyDone(entry, exitCode = null) {
79
+ entry.done = true;
80
+ entry.exitCode = exitCode;
81
+ notifyPtyWaiters(entry);
82
+ }
83
+ function watchPtyProcess(entry, wait, exitCode) {
84
+ void (async () => {
85
+ try {
86
+ const result = await wait();
87
+ markPtyDone(entry, coerceExitCode(exitCode(result)));
88
+ }
89
+ catch (error) {
90
+ markPtyDone(entry, coerceExitCode(exitCode(undefined, error) ?? 1));
91
+ }
92
+ })();
93
+ }
94
+ async function openPtyWebSocket(args) {
95
+ const socket = await createWebSocket(args);
96
+ socket.binaryType = 'arraybuffer';
97
+ await args.configure?.(socket);
98
+ await waitForPtyWebSocketOpen(socket, args.timeoutMs ?? 30_000, args.providerName);
99
+ return socket;
100
+ }
101
+ function addPtyWebSocketListener(socket, type, listener) {
102
+ if (socket.addEventListener) {
103
+ socket.addEventListener(type, listener);
104
+ return () => socket.removeEventListener?.(type, listener);
105
+ }
106
+ if (socket.on) {
107
+ const nodeListener = (...args) => {
108
+ listener({ data: args[0] });
109
+ };
110
+ socket.on(type, nodeListener);
111
+ return () => {
112
+ if (socket.off) {
113
+ socket.off(type, nodeListener);
114
+ }
115
+ else {
116
+ socket.removeListener?.(type, nodeListener);
117
+ }
118
+ };
119
+ }
120
+ return () => { };
121
+ }
122
+ class PtyProcessRegistry {
123
+ processes = new Map();
124
+ register(entry) {
125
+ const pruned = this.pruneIfNeeded();
126
+ const sessionId = allocatePtyProcessId(this.processes);
127
+ this.processes.set(sessionId, entry);
128
+ return { sessionId, pruned };
129
+ }
130
+ get(sessionId) {
131
+ return this.processes.get(sessionId);
132
+ }
133
+ async terminateAll() {
134
+ const entries = [...this.processes.values()];
135
+ this.processes.clear();
136
+ await Promise.allSettled(entries.map((entry) => terminatePtyEntry(entry)));
137
+ }
138
+ async finalize(sessionId) {
139
+ const entry = this.processes.get(sessionId);
140
+ if (!entry) {
141
+ return { processId: undefined, exitCode: 1 };
142
+ }
143
+ if (!entry.done) {
144
+ return { processId: sessionId };
145
+ }
146
+ this.processes.delete(sessionId);
147
+ await terminatePtyEntry(entry);
148
+ return { processId: undefined, exitCode: entry.exitCode ?? 1 };
149
+ }
150
+ pruneIfNeeded() {
151
+ if (this.processes.size < PTY_PROCESSES_MAX) {
152
+ return undefined;
153
+ }
154
+ // Keep the most recently interacted-with sessions even if an older live PTY has to
155
+ // be pruned; this matches the model-facing session ids used by write_stdin().
156
+ const entries = [...this.processes.entries()];
157
+ const protectedIds = new Set([...entries]
158
+ .sort((a, b) => b[1].lastUsed - a[1].lastUsed)
159
+ .slice(0, PTY_PROCESSES_PROTECTED_RECENT)
160
+ .map(([sessionId]) => sessionId));
161
+ const byLeastRecentlyUsed = entries.sort((a, b) => a[1].lastUsed - b[1].lastUsed);
162
+ for (const [sessionId, entry] of byLeastRecentlyUsed) {
163
+ if (!protectedIds.has(sessionId) && entry.done) {
164
+ this.processes.delete(sessionId);
165
+ return entry;
166
+ }
167
+ }
168
+ for (const [sessionId, entry] of byLeastRecentlyUsed) {
169
+ if (!protectedIds.has(sessionId)) {
170
+ this.processes.delete(sessionId);
171
+ return entry;
172
+ }
173
+ }
174
+ return undefined;
175
+ }
176
+ }
177
+ exports.PtyProcessRegistry = PtyProcessRegistry;
178
+ async function createWebSocket(args) {
179
+ if (!args.headers && typeof globalThis.WebSocket === 'function') {
180
+ return new globalThis.WebSocket(args.url);
181
+ }
182
+ let wsImportError;
183
+ try {
184
+ const mod = (await Promise.resolve().then(() => __importStar(require('ws'))));
185
+ const WebSocketImpl = mod.WebSocket ?? mod.default;
186
+ if (WebSocketImpl) {
187
+ return new WebSocketImpl(args.url, args.headers ? { headers: args.headers } : undefined);
188
+ }
189
+ }
190
+ catch (error) {
191
+ wsImportError = error;
192
+ }
193
+ if (typeof globalThis.WebSocket === 'function') {
194
+ if (!args.headers || args.headersUnsupportedUrl) {
195
+ return new globalThis.WebSocket(args.headersUnsupportedUrl ?? args.url);
196
+ }
197
+ }
198
+ if (args.headers) {
199
+ const reason = wsImportError instanceof Error
200
+ ? wsImportError.message
201
+ : 'custom WebSocket headers are unavailable';
202
+ throw new agents_core_1.UserError(`${args.providerName} PTY WebSocket support requires the optional \`ws\` package when headers are needed. ${reason}`);
203
+ }
204
+ throw new agents_core_1.UserError(`${args.providerName} PTY support requires a WebSocket implementation.`);
205
+ }
206
+ function waitForPtyWebSocketOpen(socket, timeoutMs, providerName) {
207
+ const readyState = socket.readyState;
208
+ if (readyState === 1) {
209
+ return Promise.resolve();
210
+ }
211
+ return new Promise((resolve, reject) => {
212
+ let settled = false;
213
+ let removeOpen = () => { };
214
+ let removeError = () => { };
215
+ let removeClose = () => { };
216
+ const cleanup = () => {
217
+ removeOpen();
218
+ removeError();
219
+ removeClose();
220
+ clearTimeout(timer);
221
+ };
222
+ const settle = (callback) => {
223
+ if (settled) {
224
+ return;
225
+ }
226
+ settled = true;
227
+ cleanup();
228
+ callback();
229
+ };
230
+ removeOpen = addPtyWebSocketListener(socket, 'open', () => {
231
+ settle(resolve);
232
+ });
233
+ removeError = addPtyWebSocketListener(socket, 'error', (event) => {
234
+ settle(() => reject(new agents_core_1.UserError(`${providerName} PTY WebSocket failed to connect: ${formatWebSocketEvent(event)}`)));
235
+ });
236
+ removeClose = addPtyWebSocketListener(socket, 'close', () => {
237
+ settle(() => reject(new agents_core_1.UserError(`${providerName} PTY WebSocket closed before opening.`)));
238
+ });
239
+ const timer = setTimeout(() => {
240
+ settle(() => reject(new agents_core_1.UserError(`${providerName} PTY WebSocket connection timed out.`)));
241
+ }, timeoutMs);
242
+ if (socket.readyState === 1) {
243
+ settle(resolve);
244
+ return;
245
+ }
246
+ });
247
+ }
248
+ async function collectPtyOutput(args) {
249
+ const deadline = Date.now() + args.yieldTimeMs;
250
+ let output = consumePtyOutput(args.entry);
251
+ while (!args.entry.done && Date.now() < deadline) {
252
+ const remainingMs = deadline - Date.now();
253
+ if (remainingMs <= 0) {
254
+ break;
255
+ }
256
+ await waitForPtyNotification(args.entry, remainingMs);
257
+ output += consumePtyOutput(args.entry);
258
+ }
259
+ if (args.entry.done) {
260
+ output += consumePtyOutput(args.entry);
261
+ }
262
+ return (0, output_1.truncateOutput)(output, args.maxOutputTokens);
263
+ }
264
+ async function writePtyStdin(args) {
265
+ const entry = args.registry.get(args.sessionId);
266
+ if (!entry) {
267
+ return (0, output_1.formatExecResponse)({
268
+ output: `write_stdin failed: session not found: ${args.sessionId}`,
269
+ wallTimeSeconds: 0,
270
+ exitCode: 1,
271
+ });
272
+ }
273
+ const start = Date.now();
274
+ const chars = args.chars ?? '';
275
+ if (chars.length > 0) {
276
+ if (!entry.tty || !entry.sendInput) {
277
+ throw new agents_core_1.UserError(`${args.providerName} stdin is not available for this process.`);
278
+ }
279
+ await entry.sendInput(chars);
280
+ }
281
+ const output = await collectPtyOutput({
282
+ entry,
283
+ yieldTimeMs: resolvePtyWriteYieldTimeMs(args.yieldTimeMs ?? 250, chars.length === 0),
284
+ maxOutputTokens: args.maxOutputTokens,
285
+ });
286
+ entry.lastUsed = Date.now();
287
+ const finalized = await args.registry.finalize(args.sessionId);
288
+ return (0, output_1.formatExecResponse)({
289
+ output: output.text,
290
+ wallTimeSeconds: (0, output_1.elapsedSeconds)(start),
291
+ sessionId: finalized.processId,
292
+ exitCode: finalized.exitCode,
293
+ originalTokenCount: output.originalTokenCount,
294
+ });
295
+ }
296
+ async function formatPtyExecUpdate(args) {
297
+ const output = await collectPtyOutput({
298
+ entry: args.entry,
299
+ yieldTimeMs: clampPtyYieldTimeMs(args.yieldTimeMs ?? 10_000),
300
+ maxOutputTokens: args.maxOutputTokens,
301
+ });
302
+ const finalized = await args.registry.finalize(args.sessionId);
303
+ return (0, output_1.formatExecResponse)({
304
+ output: output.text,
305
+ wallTimeSeconds: (0, output_1.elapsedSeconds)(args.startTime),
306
+ sessionId: finalized.processId,
307
+ exitCode: finalized.exitCode,
308
+ originalTokenCount: output.originalTokenCount,
309
+ });
310
+ }
311
+ function shellCommandForPty(args) {
312
+ const shellPath = args.shell ?? '/bin/sh';
313
+ const login = args.shell ? (args.login ?? true) : false;
314
+ const flag = login ? '-lc' : '-c';
315
+ return `${shellPath} ${flag} ${(0, paths_1.shellQuote)(args.cmd)}`;
316
+ }
317
+ function clampPtyYieldTimeMs(yieldTimeMs) {
318
+ return Math.max(PTY_YIELD_TIME_MS_MIN, Math.min(PTY_YIELD_TIME_MS_MAX, yieldTimeMs));
319
+ }
320
+ function resolvePtyWriteYieldTimeMs(yieldTimeMs, inputEmpty) {
321
+ const normalized = clampPtyYieldTimeMs(yieldTimeMs);
322
+ return inputEmpty
323
+ ? Math.max(normalized, PTY_EMPTY_YIELD_TIME_MS_MIN)
324
+ : normalized;
325
+ }
326
+ function allocatePtyProcessId(processes) {
327
+ while (true) {
328
+ const processId = Math.floor(Math.random() * (PTY_PROCESS_ID_MAX_EXCLUSIVE - PTY_PROCESS_ID_MIN)) + PTY_PROCESS_ID_MIN;
329
+ if (!processes.has(processId)) {
330
+ return processId;
331
+ }
332
+ }
333
+ }
334
+ function consumePtyOutput(entry) {
335
+ const output = entry.output;
336
+ entry.output = '';
337
+ return output;
338
+ }
339
+ function waitForPtyNotification(entry, timeoutMs) {
340
+ return new Promise((resolve) => {
341
+ const done = () => {
342
+ clearTimeout(timer);
343
+ entry.waiters.delete(done);
344
+ resolve();
345
+ };
346
+ const timer = setTimeout(done, timeoutMs);
347
+ entry.waiters.add(done);
348
+ });
349
+ }
350
+ function notifyPtyWaiters(entry) {
351
+ const waiters = [...entry.waiters];
352
+ entry.waiters.clear();
353
+ for (const waiter of waiters) {
354
+ waiter();
355
+ }
356
+ }
357
+ async function terminatePtyEntry(entry) {
358
+ try {
359
+ await entry.terminate?.();
360
+ }
361
+ catch {
362
+ // PTY cleanup is best-effort.
363
+ }
364
+ }
365
+ function coerceExitCode(value) {
366
+ return typeof value === 'number' && Number.isFinite(value)
367
+ ? Math.trunc(value)
368
+ : null;
369
+ }
370
+ function formatWebSocketEvent(event) {
371
+ if (event instanceof Error) {
372
+ return event.message;
373
+ }
374
+ if (event &&
375
+ typeof event === 'object' &&
376
+ 'message' in event &&
377
+ typeof event.message === 'string') {
378
+ return event.message;
379
+ }
380
+ return 'unknown error';
381
+ }
382
+ //# sourceMappingURL=pty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pty.js","sourceRoot":"","sources":["../../../src/sandbox/shared/pty.ts"],"names":[],"mappings":"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"}