self-bench 0.3.3 → 0.3.4

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 (139) hide show
  1. package/Dockerfile.sandbox +1 -1
  2. package/README.md +20 -0
  3. package/bun.lock +48 -0
  4. package/compose.yaml +7 -1
  5. package/dist/agent-smoke-main.js +3 -2
  6. package/dist/agent-smoke-main.js.map +1 -1
  7. package/dist/agent-smoke.d.ts +2 -1
  8. package/dist/agent-smoke.d.ts.map +1 -1
  9. package/dist/agent-smoke.js +6 -1
  10. package/dist/agent-smoke.js.map +1 -1
  11. package/dist/api.d.ts +24 -0
  12. package/dist/api.d.ts.map +1 -1
  13. package/dist/api.js +25 -18
  14. package/dist/api.js.map +1 -1
  15. package/dist/build-metadata.js +1 -1
  16. package/dist/cli.js +67 -11
  17. package/dist/cli.js.map +1 -1
  18. package/dist/config.d.ts +36 -10
  19. package/dist/config.d.ts.map +1 -1
  20. package/dist/config.js +89 -15
  21. package/dist/config.js.map +1 -1
  22. package/dist/contracts.d.ts +22 -2
  23. package/dist/contracts.d.ts.map +1 -1
  24. package/dist/contracts.js +31 -6
  25. package/dist/contracts.js.map +1 -1
  26. package/dist/eval-main.js +3 -2
  27. package/dist/eval-main.js.map +1 -1
  28. package/dist/evaluate.d.ts +2 -1
  29. package/dist/evaluate.d.ts.map +1 -1
  30. package/dist/evaluate.js +2 -1
  31. package/dist/evaluate.js.map +1 -1
  32. package/dist/harbor-environment.d.ts +2 -0
  33. package/dist/harbor-environment.d.ts.map +1 -0
  34. package/dist/harbor-environment.js +15 -0
  35. package/dist/harbor-environment.js.map +1 -0
  36. package/dist/harbor-results.d.ts.map +1 -1
  37. package/dist/harbor-results.js +2 -0
  38. package/dist/harbor-results.js.map +1 -1
  39. package/dist/process.d.ts +2 -1
  40. package/dist/process.d.ts.map +1 -1
  41. package/dist/process.js.map +1 -1
  42. package/dist/providers.d.ts +8 -0
  43. package/dist/providers.d.ts.map +1 -0
  44. package/dist/providers.js +14 -0
  45. package/dist/providers.js.map +1 -0
  46. package/dist/reaudit-main.js +5 -5
  47. package/dist/reaudit-main.js.map +1 -1
  48. package/dist/repair-main.js +5 -5
  49. package/dist/repair-main.js.map +1 -1
  50. package/dist/sandbox-author.bundle.js +40 -6
  51. package/dist/sandbox-timeout.d.ts +11 -0
  52. package/dist/sandbox-timeout.d.ts.map +1 -0
  53. package/dist/sandbox-timeout.js +41 -0
  54. package/dist/sandbox-timeout.js.map +1 -0
  55. package/dist/sandbox-validation-repair.bundle.js +40 -6
  56. package/dist/sandbox.d.ts +2 -2
  57. package/dist/sandbox.d.ts.map +1 -1
  58. package/dist/sandbox.js +10 -3
  59. package/dist/sandbox.js.map +1 -1
  60. package/dist/temporal/activities.d.ts +2 -2
  61. package/dist/temporal/activities.d.ts.map +1 -1
  62. package/dist/temporal/activities.js +7 -1
  63. package/dist/temporal/activities.js.map +1 -1
  64. package/dist/temporal/worker-main.js +2 -2
  65. package/dist/temporal/worker-main.js.map +1 -1
  66. package/dist/terminal-prompts.d.ts +26 -0
  67. package/dist/terminal-prompts.d.ts.map +1 -0
  68. package/dist/terminal-prompts.js +137 -0
  69. package/dist/terminal-prompts.js.map +1 -0
  70. package/dist/terminal-reporter.d.ts +30 -0
  71. package/dist/terminal-reporter.d.ts.map +1 -0
  72. package/dist/terminal-reporter.js +90 -0
  73. package/dist/terminal-reporter.js.map +1 -0
  74. package/dist/validate-main.js +8 -2
  75. package/dist/validate-main.js.map +1 -1
  76. package/dist/vercel-cli.d.ts +64 -0
  77. package/dist/vercel-cli.d.ts.map +1 -0
  78. package/dist/vercel-cli.js +303 -0
  79. package/dist/vercel-cli.js.map +1 -0
  80. package/dist/vercel-command.d.ts +14 -0
  81. package/dist/vercel-command.d.ts.map +1 -0
  82. package/dist/vercel-command.js +93 -0
  83. package/dist/vercel-command.js.map +1 -0
  84. package/dist/vercel-executor.d.ts +14 -0
  85. package/dist/vercel-executor.d.ts.map +1 -0
  86. package/dist/vercel-executor.js +356 -0
  87. package/dist/vercel-executor.js.map +1 -0
  88. package/dist/vercel-fetch.d.ts +6 -0
  89. package/dist/vercel-fetch.d.ts.map +1 -0
  90. package/dist/vercel-fetch.js +39 -0
  91. package/dist/vercel-fetch.js.map +1 -0
  92. package/dist/vercel-profile.d.ts +34 -0
  93. package/dist/vercel-profile.d.ts.map +1 -0
  94. package/dist/vercel-profile.js +244 -0
  95. package/dist/vercel-profile.js.map +1 -0
  96. package/dist/vercel-runtime-image.d.ts +51 -0
  97. package/dist/vercel-runtime-image.d.ts.map +1 -0
  98. package/dist/vercel-runtime-image.js +123 -0
  99. package/dist/vercel-runtime-image.js.map +1 -0
  100. package/dist/vercel-setup-probe.d.ts +49 -0
  101. package/dist/vercel-setup-probe.d.ts.map +1 -0
  102. package/dist/vercel-setup-probe.js +151 -0
  103. package/dist/vercel-setup-probe.js.map +1 -0
  104. package/dist/vercel-setup.d.ts +42 -0
  105. package/dist/vercel-setup.d.ts.map +1 -0
  106. package/dist/vercel-setup.js +280 -0
  107. package/dist/vercel-setup.js.map +1 -0
  108. package/docs/evaluations.md +2 -0
  109. package/docs/operations.md +128 -6
  110. package/package.json +3 -1
  111. package/src/agent-smoke-main.ts +3 -2
  112. package/src/agent-smoke.ts +8 -2
  113. package/src/api.ts +31 -18
  114. package/src/cli.ts +72 -11
  115. package/src/config.ts +150 -25
  116. package/src/contracts.ts +33 -6
  117. package/src/eval-main.ts +3 -2
  118. package/src/evaluate.ts +5 -3
  119. package/src/harbor-environment.ts +17 -0
  120. package/src/harbor-results.ts +2 -0
  121. package/src/process.ts +3 -1
  122. package/src/providers.ts +22 -0
  123. package/src/reaudit-main.ts +8 -5
  124. package/src/repair-main.ts +8 -5
  125. package/src/sandbox-timeout.ts +56 -0
  126. package/src/sandbox.ts +15 -5
  127. package/src/temporal/activities.ts +9 -3
  128. package/src/temporal/worker-main.ts +2 -2
  129. package/src/terminal-prompts.ts +197 -0
  130. package/src/terminal-reporter.ts +126 -0
  131. package/src/validate-main.ts +9 -3
  132. package/src/vercel-cli.ts +403 -0
  133. package/src/vercel-command.ts +127 -0
  134. package/src/vercel-executor.ts +448 -0
  135. package/src/vercel-fetch.ts +45 -0
  136. package/src/vercel-profile.ts +319 -0
  137. package/src/vercel-runtime-image.ts +204 -0
  138. package/src/vercel-setup-probe.ts +229 -0
  139. package/src/vercel-setup.ts +419 -0
@@ -0,0 +1,356 @@
1
+ import { posix } from "node:path";
2
+ import { setTimeout as delay } from "node:timers/promises";
3
+ import { APIError, Sandbox } from "@vercel/sandbox";
4
+ import { isDigestPinnedOciImage, } from "./config.js";
5
+ import { RollingOutput } from "./process.js";
6
+ import { executeVercelCommand, VERCEL_WORK_DIRECTORY } from "./vercel-command.js";
7
+ import { preventAmbiguousVercelCommandStartRetries } from "./vercel-fetch.js";
8
+ const CLEANUP_TIMEOUT_MS = 60_000;
9
+ const CLEANUP_RETRY_DELAY_MS = 1_000;
10
+ const CREATE_RATE_LIMIT_RETRIES = 2;
11
+ const CREATE_RATE_LIMIT_FALLBACK_DELAY_MS = 30_000;
12
+ const CREATE_RATE_LIMIT_MAX_DELAY_MS = 60_000;
13
+ const CREATE_REQUEST_TIMEOUT_MS = 60_000;
14
+ const HARD_TIMEOUT_EXIT_CODE = 124;
15
+ const LATE_CREATE_RECOVERY_DELAYS_MS = [0, 250, 750, 1_500];
16
+ class VercelHardTimeoutError extends Error {
17
+ constructor(name, stage, timeoutMs) {
18
+ super(`Vercel sandbox ${name} stage ${stage} exceeded ${timeoutMs}ms`);
19
+ // Passed as the abort reason to in-flight SDK calls, so it carries the
20
+ // standard DOMException timeout name. run() converts it into an exit-124
21
+ // result rather than throwing.
22
+ this.name = "TimeoutError";
23
+ }
24
+ }
25
+ export class VercelSandboxExecutor {
26
+ #config;
27
+ #fetch;
28
+ #sleep;
29
+ constructor(config, fetch = globalThis.fetch, sleep = abortableDelay) {
30
+ this.#config = validateConfig(config);
31
+ this.#fetch = preventAmbiguousVercelCommandStartRetries(fetch);
32
+ this.#sleep = sleep;
33
+ }
34
+ async run(request, options = {}) {
35
+ options.signal?.throwIfAborted();
36
+ const resources = validateRequest(request);
37
+ const name = sandboxName(request.runId, request.stage);
38
+ const tags = {
39
+ selfbench_run: request.runId.slice(0, 256),
40
+ selfbench_stage: request.stage.slice(0, 256),
41
+ };
42
+ const controller = new AbortController();
43
+ const stdout = new RollingOutput();
44
+ const stderr = new RollingOutput();
45
+ let terminationError;
46
+ let sandbox;
47
+ let deletePromise;
48
+ let allocationMayExist = false;
49
+ const deleteHandle = () => {
50
+ if (!sandbox) {
51
+ return Promise.resolve();
52
+ }
53
+ deletePromise ??= sandbox.delete({ signal: AbortSignal.timeout(CLEANUP_TIMEOUT_MS) });
54
+ return deletePromise;
55
+ };
56
+ const terminate = (error) => {
57
+ if (terminationError !== undefined) {
58
+ return;
59
+ }
60
+ terminationError = error;
61
+ controller.abort(error);
62
+ if (sandbox) {
63
+ void deleteHandle().catch(() => undefined);
64
+ }
65
+ };
66
+ const abort = () => terminate(abortReason(options.signal));
67
+ options.signal?.addEventListener("abort", abort, { once: true });
68
+ if (options.signal?.aborted) {
69
+ abort();
70
+ }
71
+ const hardTimeout = setTimeout(() => {
72
+ terminate(new VercelHardTimeoutError(name, request.stage, request.timeoutMs));
73
+ }, request.timeoutMs);
74
+ hardTimeout.unref();
75
+ let outcome;
76
+ try {
77
+ sandbox = await this.#createSandbox(name, tags, resources.vcpus, request.timeoutMs, controller.signal, (value) => {
78
+ allocationMayExist = value;
79
+ });
80
+ allocationMayExist = false;
81
+ throwIfTerminated(terminationError);
82
+ const session = sandbox.currentSession();
83
+ if (session.status !== "running") {
84
+ throw new Error(`Vercel sandbox ${name} was created in unexpected state ${session.status}`);
85
+ }
86
+ if (session.cwd !== VERCEL_WORK_DIRECTORY) {
87
+ throw new Error(`Vercel image ${this.#config.image} has workdir ${session.cwd}; expected ${VERCEL_WORK_DIRECTORY}`);
88
+ }
89
+ if (session.vcpus !== resources.vcpus || session.memory !== resources.memoryMiB) {
90
+ throw new Error(`Vercel sandbox ${name} returned ${session.vcpus} vCPU/${session.memory} MiB; expected ${resources.vcpus} vCPU/${resources.memoryMiB} MiB`);
91
+ }
92
+ if (request.files && request.files.length > 0) {
93
+ await session.writeFiles(request.files.map((file) => ({ path: file.path, content: file.contents })), { signal: controller.signal });
94
+ }
95
+ throwIfTerminated(terminationError);
96
+ const outputs = await executeVercelCommand({
97
+ session,
98
+ request,
99
+ options,
100
+ signal: controller.signal,
101
+ terminate,
102
+ stdout,
103
+ stderr,
104
+ });
105
+ throwIfTerminated(terminationError);
106
+ outcome = { ok: true, result: { sandboxId: sandbox.name, ...outputs } };
107
+ }
108
+ catch (error) {
109
+ const failure = terminationError ?? error;
110
+ outcome =
111
+ failure instanceof VercelHardTimeoutError
112
+ ? {
113
+ ok: true,
114
+ result: {
115
+ sandboxId: sandbox?.name ?? name,
116
+ exitCode: HARD_TIMEOUT_EXIT_CODE,
117
+ stdout: stdout.text(),
118
+ stderr: stderr.text(),
119
+ outputs: {},
120
+ },
121
+ }
122
+ : { ok: false, error: failure };
123
+ }
124
+ clearTimeout(hardTimeout);
125
+ options.signal?.removeEventListener("abort", abort);
126
+ try {
127
+ await this.#cleanup(name, sandbox, deleteHandle, allocationMayExist);
128
+ }
129
+ catch (cleanupError) {
130
+ const publicCleanupError = sanitizeCleanupError(cleanupError, this.#config.credentials.token);
131
+ outcome = outcome.ok
132
+ ? { ok: false, error: publicCleanupError }
133
+ : {
134
+ ok: false,
135
+ error: attachCleanupError(outcome.error, publicCleanupError),
136
+ };
137
+ }
138
+ if (!outcome.ok) {
139
+ throw outcome.error;
140
+ }
141
+ return outcome.result;
142
+ }
143
+ close() { }
144
+ async #createSandbox(name, tags, vcpus, timeoutMs, signal, setAllocationMayExist) {
145
+ for (let retries = 0;; retries += 1) {
146
+ signal.throwIfAborted();
147
+ setAllocationMayExist(true);
148
+ try {
149
+ return await Sandbox.create({
150
+ ...this.#config.credentials,
151
+ fetch: this.#fetch,
152
+ image: this.#config.image,
153
+ name,
154
+ persistent: false,
155
+ resources: { vcpus },
156
+ signal: withTimeout(signal, CREATE_REQUEST_TIMEOUT_MS),
157
+ tags: { ...tags },
158
+ timeout: timeoutMs,
159
+ });
160
+ }
161
+ catch (error) {
162
+ if (createErrorConfirmsNoAllocation(error)) {
163
+ setAllocationMayExist(false);
164
+ }
165
+ if (!(error instanceof APIError) ||
166
+ error.response.status !== 429 ||
167
+ retries >= CREATE_RATE_LIMIT_RETRIES) {
168
+ throw error;
169
+ }
170
+ await this.#sleep(createRetryDelayMs(error.response), signal);
171
+ }
172
+ }
173
+ }
174
+ async #cleanup(name, sandbox, deleteHandle, allocationMayExist) {
175
+ let directDeleteError;
176
+ if (sandbox) {
177
+ try {
178
+ await deleteHandle();
179
+ return;
180
+ }
181
+ catch (error) {
182
+ directDeleteError = error;
183
+ }
184
+ }
185
+ if (!sandbox && !allocationMayExist) {
186
+ return;
187
+ }
188
+ try {
189
+ const recoveryDelays = sandbox ? [CLEANUP_RETRY_DELAY_MS] : LATE_CREATE_RECOVERY_DELAYS_MS;
190
+ for (const delayMs of recoveryDelays) {
191
+ if (delayMs > 0) {
192
+ await this.#sleep(delayMs, AbortSignal.timeout(CLEANUP_TIMEOUT_MS));
193
+ }
194
+ let handle;
195
+ try {
196
+ handle = await Sandbox.get({
197
+ ...this.#config.credentials,
198
+ fetch: this.#fetch,
199
+ name,
200
+ resume: false,
201
+ signal: AbortSignal.timeout(CLEANUP_TIMEOUT_MS),
202
+ });
203
+ }
204
+ catch (error) {
205
+ if (error instanceof APIError && error.response.status === 404) {
206
+ if (sandbox) {
207
+ return;
208
+ }
209
+ continue;
210
+ }
211
+ throw error;
212
+ }
213
+ try {
214
+ await handle.delete({ signal: AbortSignal.timeout(CLEANUP_TIMEOUT_MS) });
215
+ }
216
+ catch (error) {
217
+ if (error instanceof APIError && error.response.status === 404) {
218
+ return;
219
+ }
220
+ throw error;
221
+ }
222
+ return;
223
+ }
224
+ throw new Error("sandbox absence remained unconfirmed after an ambiguous create failure");
225
+ }
226
+ catch (recoveryError) {
227
+ const errors = directDeleteError === undefined ? [recoveryError] : [directDeleteError, recoveryError];
228
+ throw new AggregateError(errors, `failed to delete Vercel sandbox ${name}: ${errors.map(errorMessage).join("; ")}`);
229
+ }
230
+ }
231
+ }
232
+ function validateConfig(config) {
233
+ const credentials = {
234
+ token: config.credentials.token.trim(),
235
+ teamId: config.credentials.teamId.trim(),
236
+ projectId: config.credentials.projectId.trim(),
237
+ };
238
+ if (!credentials.token || !credentials.teamId || !credentials.projectId) {
239
+ throw new Error("Vercel execution requires a complete nonblank credential triple");
240
+ }
241
+ const image = config.image.trim();
242
+ if (!isDigestPinnedOciImage(image)) {
243
+ throw new Error("Vercel execution requires a digest-pinned image");
244
+ }
245
+ return { kind: "vercel", credentials, image, timeoutCapMs: config.timeoutCapMs };
246
+ }
247
+ function validateRequest(request) {
248
+ if (!Number.isInteger(request.timeoutMs) || request.timeoutMs < 100) {
249
+ throw new Error("sandbox timeout must be an integer of at least 100ms");
250
+ }
251
+ if (request.timeoutMs > 24 * 60 * 60 * 1_000) {
252
+ throw new Error("Vercel sandbox timeout cannot exceed 24 hours");
253
+ }
254
+ if (request.inactivityTimeoutMs !== undefined &&
255
+ (!Number.isInteger(request.inactivityTimeoutMs) || request.inactivityTimeoutMs < 1)) {
256
+ throw new Error("sandbox inactivity timeout must be a positive integer");
257
+ }
258
+ if (request.command.length === 0 || !request.command[0]) {
259
+ throw new Error("sandbox command must not be empty");
260
+ }
261
+ for (const path of [
262
+ ...(request.files ?? []).map((file) => file.path),
263
+ ...(request.outputPaths ?? []),
264
+ ]) {
265
+ assertWorkPath(path);
266
+ }
267
+ const vcpus = request.cpu ?? 4;
268
+ if (!Number.isInteger(vcpus) || (vcpus !== 1 && (vcpus < 2 || vcpus > 32 || vcpus % 2 !== 0))) {
269
+ throw new Error("Vercel sandbox CPU must be 1 or an even integer from 2 through 32");
270
+ }
271
+ const memoryMiB = request.memoryMiB ?? vcpus * 2048;
272
+ if (memoryMiB !== vcpus * 2048) {
273
+ throw new Error(`Vercel fixes memory at 2048 MiB per vCPU; ${vcpus} vCPU requires ${vcpus * 2048} MiB`);
274
+ }
275
+ return { vcpus, memoryMiB };
276
+ }
277
+ function assertWorkPath(path) {
278
+ const normalized = posix.normalize(path);
279
+ if (!path.startsWith(`${VERCEL_WORK_DIRECTORY}/`) ||
280
+ !normalized.startsWith(`${VERCEL_WORK_DIRECTORY}/`)) {
281
+ throw new Error(`sandbox path must be beneath ${VERCEL_WORK_DIRECTORY}: ${path}`);
282
+ }
283
+ }
284
+ function sandboxName(runId, stage) {
285
+ const suffix = crypto.randomUUID().replaceAll("-", "").slice(0, 12);
286
+ const context = `${runId}-${stage}`.replace(/[^a-zA-Z0-9_-]/g, "-");
287
+ const prefix = `selfbench-${context}`.slice(0, 128 - suffix.length - 1).replace(/-+$/g, "");
288
+ return `${prefix}-${suffix}`;
289
+ }
290
+ function withTimeout(signal, timeoutMs) {
291
+ return AbortSignal.any([signal, AbortSignal.timeout(timeoutMs)]);
292
+ }
293
+ async function abortableDelay(delayMs, signal) {
294
+ await delay(delayMs, undefined, { signal });
295
+ }
296
+ function createRetryDelayMs(response) {
297
+ const header = response.headers.get("retry-after")?.trim();
298
+ if (!header) {
299
+ return CREATE_RATE_LIMIT_FALLBACK_DELAY_MS;
300
+ }
301
+ const seconds = Number(header);
302
+ const requestedDelay = Number.isFinite(seconds)
303
+ ? seconds * 1_000
304
+ : Date.parse(header) - Date.now();
305
+ if (!Number.isFinite(requestedDelay)) {
306
+ return CREATE_RATE_LIMIT_FALLBACK_DELAY_MS;
307
+ }
308
+ return Math.min(CREATE_RATE_LIMIT_MAX_DELAY_MS, Math.max(0, Math.ceil(requestedDelay)));
309
+ }
310
+ function createErrorConfirmsNoAllocation(error) {
311
+ if (!(error instanceof APIError)) {
312
+ return false;
313
+ }
314
+ const status = error.response.status;
315
+ return status >= 400 && status < 500 && status !== 408 && status !== 409 && status !== 499;
316
+ }
317
+ function throwIfTerminated(error) {
318
+ if (error !== undefined) {
319
+ throw error;
320
+ }
321
+ }
322
+ function abortReason(signal) {
323
+ return signal?.reason ?? new DOMException("The operation was aborted", "AbortError");
324
+ }
325
+ function attachCleanupError(primaryError, cleanupError) {
326
+ if (primaryError instanceof Error) {
327
+ const cleanupMessage = errorMessage(cleanupError).slice(0, 500);
328
+ const message = `${primaryError.message}; Vercel sandbox cleanup also failed: ${cleanupMessage}`;
329
+ try {
330
+ Object.defineProperties(primaryError, {
331
+ cleanupError: { configurable: true, value: cleanupError },
332
+ message: { configurable: true, value: message, writable: true },
333
+ });
334
+ return primaryError;
335
+ }
336
+ catch {
337
+ const wrapped = new Error(message, { cause: primaryError });
338
+ wrapped.name = primaryError.name;
339
+ Object.defineProperty(wrapped, "cleanupError", {
340
+ configurable: true,
341
+ value: cleanupError,
342
+ });
343
+ return wrapped;
344
+ }
345
+ }
346
+ return new AggregateError([primaryError, cleanupError], "Vercel sandbox execution and cleanup both failed");
347
+ }
348
+ function sanitizeCleanupError(error, redactedValue) {
349
+ const sanitized = new Error(errorMessage(error).replaceAll(redactedValue, "[redacted]").slice(0, 1_000));
350
+ sanitized.name = "VercelSandboxCleanupError";
351
+ return sanitized;
352
+ }
353
+ function errorMessage(error) {
354
+ return error instanceof Error ? error.message : String(error);
355
+ }
356
+ //# sourceMappingURL=vercel-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel-executor.js","sourceRoot":"","sources":["../src/vercel-executor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare class VercelCommandStartError extends Error {
2
+ constructor(message: string, cause?: unknown);
3
+ restorePublicName(): void;
4
+ }
5
+ export declare function preventAmbiguousVercelCommandStartRetries(fetch: typeof globalThis.fetch): typeof globalThis.fetch;
6
+ //# sourceMappingURL=vercel-fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel-fetch.d.ts","sourceRoot":"","sources":["../src/vercel-fetch.ts"],"names":[],"mappings":"AAAA,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;IAO5C,iBAAiB,IAAI,IAAI;CAG1B;AAED,wBAAgB,yCAAyC,CACvD,KAAK,EAAE,OAAO,UAAU,CAAC,KAAK,GAC7B,OAAO,UAAU,CAAC,KAAK,CA6BzB"}
@@ -0,0 +1,39 @@
1
+ export class VercelCommandStartError extends Error {
2
+ constructor(message, cause) {
3
+ super(`${message}; automatic retry was suppressed to prevent duplicate execution`, { cause });
4
+ // @vercel/sandbox's retry layer only honors AbortError as a non-retryable
5
+ // transport failure. The command layer restores the truthful public name.
6
+ this.name = "AbortError";
7
+ }
8
+ restorePublicName() {
9
+ this.name = "VercelCommandStartError";
10
+ }
11
+ }
12
+ export function preventAmbiguousVercelCommandStartRetries(fetch) {
13
+ const wrapped = async (input, init) => {
14
+ const url = new URL(typeof input === "string" || input instanceof URL ? input : input.url);
15
+ const isCommandStart = init?.method === "POST" && /\/v2\/sandboxes\/sessions\/[^/]+\/cmd$/.test(url.pathname);
16
+ try {
17
+ const response = await fetch(input, init);
18
+ if (isCommandStart && response.status >= 500) {
19
+ await response.body?.cancel().catch(() => undefined);
20
+ throw new VercelCommandStartError(`Vercel command start returned HTTP ${response.status}`);
21
+ }
22
+ return response;
23
+ }
24
+ catch (error) {
25
+ if (error instanceof VercelCommandStartError || !isCommandStart || init?.signal?.aborted) {
26
+ throw error;
27
+ }
28
+ throw new VercelCommandStartError("Vercel command start response was not received", error);
29
+ }
30
+ };
31
+ return Object.assign(wrapped, {
32
+ preconnect: (...args) => {
33
+ if (typeof fetch.preconnect === "function") {
34
+ fetch.preconnect(...args);
35
+ }
36
+ },
37
+ });
38
+ }
39
+ //# sourceMappingURL=vercel-fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel-fetch.js","sourceRoot":"","sources":["../src/vercel-fetch.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,YAAY,OAAe,EAAE,KAAe;QAC1C,KAAK,CAAC,GAAG,OAAO,iEAAiE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9F,0EAA0E;QAC1E,0EAA0E;QAC1E,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF;AAED,MAAM,UAAU,yCAAyC,CACvD,KAA8B;IAE9B,MAAM,OAAO,GAAG,KAAK,EACnB,KAAkC,EAClC,IAAkC,EAClC,EAAE;QACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3F,MAAM,cAAc,GAClB,IAAI,EAAE,MAAM,KAAK,MAAM,IAAI,wCAAwC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACzF,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,cAAc,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBAC7C,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;gBACrD,MAAM,IAAI,uBAAuB,CAAC,sCAAsC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7F,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,uBAAuB,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;gBACzF,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,uBAAuB,CAAC,gDAAgD,EAAE,KAAK,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;QAC5B,UAAU,EAAE,CAAC,GAAG,IAAyC,EAAQ,EAAE;YACjE,IAAI,OAAO,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;gBAC3C,KAAK,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { z } from "zod";
2
+ export declare const vercelProfileSchema: z.ZodObject<{
3
+ teamId: z.ZodString;
4
+ teamSlug: z.ZodString;
5
+ teamName: z.ZodString;
6
+ projectId: z.ZodString;
7
+ projectName: z.ZodString;
8
+ vcrRepository: z.ZodString;
9
+ image: z.ZodString;
10
+ runtimeFingerprint: z.ZodString;
11
+ timeoutCapMs: z.ZodNumber;
12
+ capabilityCheckedAt: z.ZodISODateTime;
13
+ }, z.core.$strict>;
14
+ export type VercelProfile = z.infer<typeof vercelProfileSchema>;
15
+ export interface VercelProfileData {
16
+ readonly activeVercelProfile?: string;
17
+ readonly profiles: Readonly<Record<string, VercelProfile>>;
18
+ readonly tokens: Readonly<Record<string, string>>;
19
+ }
20
+ export declare function selfBenchConfigDirectory(environment?: NodeJS.ProcessEnv): string;
21
+ export declare function validateVercelProfileName(value: string): string;
22
+ export declare function loadVercelProfileData(directory?: string): Promise<VercelProfileData>;
23
+ export declare function saveVercelProfile(input: {
24
+ readonly directory?: string;
25
+ readonly profileName: string;
26
+ readonly profile: VercelProfile;
27
+ readonly token: string;
28
+ }): Promise<void>;
29
+ export declare function applyVercelProfile(environment: NodeJS.ProcessEnv, requestedProfile?: string): Promise<NodeJS.ProcessEnv>;
30
+ export declare function profileFilePaths(directory?: string): {
31
+ readonly config: string;
32
+ readonly credentials: string;
33
+ };
34
+ //# sourceMappingURL=vercel-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel-profile.d.ts","sourceRoot":"","sources":["../src/vercel-profile.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmBxB,eAAO,MAAM,mBAAmB;;;;;;;;;;;kBAarB,CAAC;AAEZ,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAoBhE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IAC3D,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACnD;AAQD,wBAAgB,wBAAwB,CAAC,WAAW,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAG7F;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAsB,qBAAqB,CACzC,SAAS,SAA6B,GACrC,OAAO,CAAC,iBAAiB,CAAC,CAO5B;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChB;AAED,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,CAAC,UAAU,EAC9B,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CA4B5B;AAED,wBAAgB,gBAAgB,CAAC,SAAS,SAA6B,GAAG;IACxE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAKA"}