self-bench 0.3.5 → 0.3.6

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 (198) hide show
  1. package/README.md +16 -14
  2. package/biome.json +7 -1
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +7 -7
  5. package/dist/api.js.map +1 -1
  6. package/dist/build-metadata.js +1 -1
  7. package/dist/cli.js +75 -15
  8. package/dist/cli.js.map +1 -1
  9. package/dist/config.js +1 -1
  10. package/dist/contracts.d.ts +1 -0
  11. package/dist/contracts.d.ts.map +1 -1
  12. package/dist/contracts.js +6 -5
  13. package/dist/contracts.js.map +1 -1
  14. package/dist/extensions/discovery.d.ts.map +1 -1
  15. package/dist/extensions/discovery.js +12 -5
  16. package/dist/extensions/discovery.js.map +1 -1
  17. package/dist/harbor-task.d.ts.map +1 -1
  18. package/dist/harbor-task.js +3 -1
  19. package/dist/harbor-task.js.map +1 -1
  20. package/dist/project-paths.d.ts +2 -0
  21. package/dist/project-paths.d.ts.map +1 -0
  22. package/dist/project-paths.js +15 -0
  23. package/dist/project-paths.js.map +1 -0
  24. package/dist/provenance-associations.d.ts +49 -0
  25. package/dist/provenance-associations.d.ts.map +1 -0
  26. package/dist/provenance-associations.js +220 -0
  27. package/dist/provenance-associations.js.map +1 -0
  28. package/dist/provenance.d.ts +34 -13
  29. package/dist/provenance.d.ts.map +1 -1
  30. package/dist/provenance.js +81 -9
  31. package/dist/provenance.js.map +1 -1
  32. package/dist/reaudit-main.js +3 -3
  33. package/dist/reaudit-main.js.map +1 -1
  34. package/dist/repair-main.js +4 -4
  35. package/dist/repair-main.js.map +1 -1
  36. package/dist/{sandbox.d.ts → sandbox/contracts.d.ts} +5 -3
  37. package/dist/sandbox/contracts.d.ts.map +1 -0
  38. package/dist/sandbox/contracts.js +9 -0
  39. package/dist/sandbox/contracts.js.map +1 -0
  40. package/dist/sandbox/index.d.ts +5 -0
  41. package/dist/sandbox/index.d.ts.map +1 -0
  42. package/dist/{sandbox.js → sandbox/index.js} +6 -5
  43. package/dist/sandbox/index.js.map +1 -0
  44. package/dist/sandbox/programs/author.d.ts +3 -0
  45. package/dist/sandbox/programs/author.d.ts.map +1 -0
  46. package/dist/{sandbox-author.js → sandbox/programs/author.js} +2 -2
  47. package/dist/sandbox/programs/author.js.map +1 -0
  48. package/dist/sandbox/programs/prepare-repair.d.ts +7 -0
  49. package/dist/sandbox/programs/prepare-repair.d.ts.map +1 -0
  50. package/dist/sandbox/programs/prepare-repair.js +30 -0
  51. package/dist/sandbox/programs/prepare-repair.js.map +1 -0
  52. package/dist/sandbox/programs/repair.d.ts +3 -0
  53. package/dist/sandbox/programs/repair.d.ts.map +1 -0
  54. package/dist/{sandbox-repair.js → sandbox/programs/repair.js} +7 -28
  55. package/dist/sandbox/programs/repair.js.map +1 -0
  56. package/dist/sandbox/programs/review.d.ts +2 -0
  57. package/dist/sandbox/programs/review.d.ts.map +1 -0
  58. package/dist/{sandbox-review.js → sandbox/programs/review.js} +2 -2
  59. package/dist/sandbox/programs/review.js.map +1 -0
  60. package/dist/sandbox/programs/validation-repair.d.ts +3 -0
  61. package/dist/sandbox/programs/validation-repair.d.ts.map +1 -0
  62. package/dist/{sandbox-validation-repair.js → sandbox/programs/validation-repair.js} +7 -28
  63. package/dist/sandbox/programs/validation-repair.js.map +1 -0
  64. package/dist/{docker-executor.d.ts → sandbox/providers/docker/executor.d.ts} +3 -3
  65. package/dist/sandbox/providers/docker/executor.d.ts.map +1 -0
  66. package/dist/{docker-executor.js → sandbox/providers/docker/executor.js} +2 -2
  67. package/dist/sandbox/providers/docker/executor.js.map +1 -0
  68. package/dist/{modal-executor.d.ts → sandbox/providers/modal/executor.d.ts} +3 -3
  69. package/dist/sandbox/providers/modal/executor.d.ts.map +1 -0
  70. package/dist/{modal-executor.js → sandbox/providers/modal/executor.js} +50 -19
  71. package/dist/sandbox/providers/modal/executor.js.map +1 -0
  72. package/dist/{vercel-command.d.ts → sandbox/providers/vercel/command.d.ts} +3 -3
  73. package/dist/sandbox/providers/vercel/command.d.ts.map +1 -0
  74. package/dist/{vercel-command.js → sandbox/providers/vercel/command.js} +3 -3
  75. package/dist/sandbox/providers/vercel/command.js.map +1 -0
  76. package/dist/{vercel-executor.d.ts → sandbox/providers/vercel/executor.d.ts} +3 -3
  77. package/dist/sandbox/providers/vercel/executor.d.ts.map +1 -0
  78. package/dist/{vercel-executor.js → sandbox/providers/vercel/executor.js} +5 -5
  79. package/dist/sandbox/providers/vercel/executor.js.map +1 -0
  80. package/dist/{vercel-fetch.d.ts → sandbox/providers/vercel/fetch.d.ts} +1 -1
  81. package/dist/sandbox/providers/vercel/fetch.d.ts.map +1 -0
  82. package/dist/{vercel-fetch.js → sandbox/providers/vercel/fetch.js} +1 -1
  83. package/dist/sandbox/providers/vercel/fetch.js.map +1 -0
  84. package/dist/{sandbox-timeout.d.ts → sandbox/timeout.d.ts} +2 -2
  85. package/dist/sandbox/timeout.d.ts.map +1 -0
  86. package/dist/{sandbox-timeout.js → sandbox/timeout.js} +1 -1
  87. package/dist/sandbox/timeout.js.map +1 -0
  88. package/dist/sandbox-author.bundle.js +11 -8
  89. package/dist/sandbox-repair.bundle.js +43 -35
  90. package/dist/sandbox-review.bundle.js +2 -2
  91. package/dist/sandbox-validation-repair.bundle.js +50 -41
  92. package/dist/{vercel-cli.d.ts → setup/vercel/cli.d.ts} +2 -2
  93. package/dist/setup/vercel/cli.d.ts.map +1 -0
  94. package/dist/{vercel-cli.js → setup/vercel/cli.js} +2 -2
  95. package/dist/setup/vercel/cli.js.map +1 -0
  96. package/dist/setup/vercel/index.d.ts +4 -0
  97. package/dist/setup/vercel/index.d.ts.map +1 -0
  98. package/dist/setup/vercel/index.js +3 -0
  99. package/dist/setup/vercel/index.js.map +1 -0
  100. package/dist/{vercel-setup-probe.d.ts → setup/vercel/probe.d.ts} +2 -2
  101. package/dist/setup/vercel/probe.d.ts.map +1 -0
  102. package/dist/{vercel-setup-probe.js → setup/vercel/probe.js} +2 -2
  103. package/dist/setup/vercel/probe.js.map +1 -0
  104. package/dist/{vercel-profile.d.ts → setup/vercel/profile.d.ts} +1 -1
  105. package/dist/setup/vercel/profile.d.ts.map +1 -0
  106. package/dist/{vercel-profile.js → setup/vercel/profile.js} +2 -2
  107. package/dist/setup/vercel/profile.js.map +1 -0
  108. package/dist/{vercel-runtime-image.d.ts → setup/vercel/runtime-image.d.ts} +5 -5
  109. package/dist/setup/vercel/runtime-image.d.ts.map +1 -0
  110. package/dist/{vercel-runtime-image.js → setup/vercel/runtime-image.js} +2 -2
  111. package/dist/setup/vercel/runtime-image.js.map +1 -0
  112. package/dist/{vercel-setup.d.ts → setup/vercel/setup.d.ts} +8 -8
  113. package/dist/setup/vercel/setup.d.ts.map +1 -0
  114. package/dist/{vercel-setup.js → setup/vercel/setup.js} +8 -8
  115. package/dist/setup/vercel/setup.js.map +1 -0
  116. package/dist/temporal/activities.d.ts +12 -0
  117. package/dist/temporal/activities.d.ts.map +1 -1
  118. package/dist/temporal/activities.js +80 -33
  119. package/dist/temporal/activities.js.map +1 -1
  120. package/dist/temporal/workflow.d.ts +1 -1
  121. package/dist/temporal/workflow.d.ts.map +1 -1
  122. package/dist/temporal/workflow.js +90 -65
  123. package/dist/temporal/workflow.js.map +1 -1
  124. package/docs/operations.md +39 -5
  125. package/docs/task-construction.md +3 -1
  126. package/package.json +5 -5
  127. package/scripts/build-sandbox-programs.ts +22 -0
  128. package/scripts/verify-package.ts +25 -4
  129. package/scripts/write-build-metadata.ts +1 -1
  130. package/src/api.ts +7 -6
  131. package/src/cli.ts +99 -15
  132. package/src/config.ts +1 -1
  133. package/src/contracts.ts +7 -5
  134. package/src/extensions/discovery.ts +14 -5
  135. package/src/harbor-task.ts +6 -1
  136. package/src/project-paths.ts +15 -0
  137. package/src/provenance-associations.ts +311 -0
  138. package/src/provenance.ts +132 -28
  139. package/src/reaudit-main.ts +3 -3
  140. package/src/repair-main.ts +4 -4
  141. package/src/{sandbox.ts → sandbox/contracts.ts} +11 -20
  142. package/src/sandbox/index.ts +23 -0
  143. package/src/{sandbox-author.ts → sandbox/programs/author.ts} +1 -1
  144. package/src/sandbox/programs/prepare-repair.ts +44 -0
  145. package/src/{sandbox-repair.ts → sandbox/programs/repair.ts} +7 -31
  146. package/src/{sandbox-review.ts → sandbox/programs/review.ts} +1 -1
  147. package/src/{sandbox-validation-repair.ts → sandbox/programs/validation-repair.ts} +6 -30
  148. package/src/{docker-executor.ts → sandbox/providers/docker/executor.ts} +3 -3
  149. package/src/{modal-executor.ts → sandbox/providers/modal/executor.ts} +66 -25
  150. package/src/{vercel-command.ts → sandbox/providers/vercel/command.ts} +3 -3
  151. package/src/{vercel-executor.ts → sandbox/providers/vercel/executor.ts} +5 -5
  152. package/src/{sandbox-timeout.ts → sandbox/timeout.ts} +1 -1
  153. package/src/{vercel-cli.ts → setup/vercel/cli.ts} +1 -1
  154. package/src/setup/vercel/index.ts +3 -0
  155. package/src/{vercel-setup-probe.ts → setup/vercel/probe.ts} +5 -2
  156. package/src/{vercel-profile.ts → setup/vercel/profile.ts} +4 -1
  157. package/src/{vercel-runtime-image.ts → setup/vercel/runtime-image.ts} +5 -5
  158. package/src/{vercel-setup.ts → setup/vercel/setup.ts} +8 -8
  159. package/src/temporal/activities.ts +164 -63
  160. package/src/temporal/workflow.ts +120 -71
  161. package/tsconfig.json +1 -1
  162. package/dist/docker-executor.d.ts.map +0 -1
  163. package/dist/docker-executor.js.map +0 -1
  164. package/dist/modal-executor.d.ts.map +0 -1
  165. package/dist/modal-executor.js.map +0 -1
  166. package/dist/sandbox-author.d.ts +0 -3
  167. package/dist/sandbox-author.d.ts.map +0 -1
  168. package/dist/sandbox-author.js.map +0 -1
  169. package/dist/sandbox-repair.d.ts +0 -3
  170. package/dist/sandbox-repair.d.ts.map +0 -1
  171. package/dist/sandbox-repair.js.map +0 -1
  172. package/dist/sandbox-review.d.ts +0 -2
  173. package/dist/sandbox-review.d.ts.map +0 -1
  174. package/dist/sandbox-review.js.map +0 -1
  175. package/dist/sandbox-timeout.d.ts.map +0 -1
  176. package/dist/sandbox-timeout.js.map +0 -1
  177. package/dist/sandbox-validation-repair.d.ts +0 -3
  178. package/dist/sandbox-validation-repair.d.ts.map +0 -1
  179. package/dist/sandbox-validation-repair.js.map +0 -1
  180. package/dist/sandbox.d.ts.map +0 -1
  181. package/dist/sandbox.js.map +0 -1
  182. package/dist/vercel-cli.d.ts.map +0 -1
  183. package/dist/vercel-cli.js.map +0 -1
  184. package/dist/vercel-command.d.ts.map +0 -1
  185. package/dist/vercel-command.js.map +0 -1
  186. package/dist/vercel-executor.d.ts.map +0 -1
  187. package/dist/vercel-executor.js.map +0 -1
  188. package/dist/vercel-fetch.d.ts.map +0 -1
  189. package/dist/vercel-fetch.js.map +0 -1
  190. package/dist/vercel-profile.d.ts.map +0 -1
  191. package/dist/vercel-profile.js.map +0 -1
  192. package/dist/vercel-runtime-image.d.ts.map +0 -1
  193. package/dist/vercel-runtime-image.js.map +0 -1
  194. package/dist/vercel-setup-probe.d.ts.map +0 -1
  195. package/dist/vercel-setup-probe.js.map +0 -1
  196. package/dist/vercel-setup.d.ts.map +0 -1
  197. package/dist/vercel-setup.js.map +0 -1
  198. /package/src/{vercel-fetch.ts → sandbox/providers/vercel/fetch.ts} +0 -0
@@ -1,6 +1,6 @@
1
1
  import { ModalClient } from "modal";
2
- import type { SelfBenchConfig } from "./config.js";
3
- import type { SandboxExecutor, SandboxRequest, SandboxResult, SandboxRunOptions } from "./sandbox.js";
2
+ import type { SelfBenchConfig } from "../../../config.js";
3
+ import { type SandboxExecutor, type SandboxRequest, type SandboxResult, type SandboxRunOptions } from "../../contracts.js";
4
4
  export declare class ModalSandboxExecutor implements SandboxExecutor {
5
5
  #private;
6
6
  constructor(config: Extract<SelfBenchConfig["execution"], {
@@ -9,4 +9,4 @@ export declare class ModalSandboxExecutor implements SandboxExecutor {
9
9
  run(request: SandboxRequest, options?: SandboxRunOptions): Promise<SandboxResult>;
10
10
  close(): void;
11
11
  }
12
- //# sourceMappingURL=modal-executor.d.ts.map
12
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../../src/sandbox/providers/modal/executor.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,WAAW,EAAe,MAAM,OAAO,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACvB,MAAM,oBAAoB,CAAC;AAI5B,qBAAa,oBAAqB,YAAW,eAAe;;gBAMxD,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,EAChE,MAAM,cAAoB;IAMtB,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC;IAyJ3F,KAAK,IAAI,IAAI;CA+Bd"}
@@ -1,5 +1,8 @@
1
+ import { setTimeout as delay } from "node:timers/promises";
1
2
  import { ModalClient } from "modal";
2
- import { InactivityTimeoutError, RollingOutput } from "./process.js";
3
+ import { InactivityTimeoutError, RollingOutput } from "../../../process.js";
4
+ import { SandboxExecutionError, } from "../../contracts.js";
5
+ const FAILURE_DRAIN_TIMEOUT_MS = 1_000;
3
6
  export class ModalSandboxExecutor {
4
7
  #client;
5
8
  #config;
@@ -9,10 +12,12 @@ export class ModalSandboxExecutor {
9
12
  this.#client = client;
10
13
  }
11
14
  async run(request, options = {}) {
15
+ options.signal?.throwIfAborted();
12
16
  const app = await this.#client.apps.fromName(this.#config.app, {
13
17
  createIfMissing: true,
14
18
  ...(this.#config.environment ? { environment: this.#config.environment } : {}),
15
19
  });
20
+ options.signal?.throwIfAborted();
16
21
  if (!this.#image) {
17
22
  this.#image = this.#buildImage();
18
23
  }
@@ -25,11 +30,14 @@ export class ModalSandboxExecutor {
25
30
  name: sandboxName(request.runId, request.stage),
26
31
  tags: { run_id: request.runId, stage: request.stage },
27
32
  });
33
+ let notifyFailure = () => { };
28
34
  const abort = () => {
35
+ notifyFailure();
29
36
  void sandbox.terminate();
30
37
  };
31
38
  options.signal?.addEventListener("abort", abort, { once: true });
32
39
  try {
40
+ options.signal?.throwIfAborted();
33
41
  for (const file of request.files ?? []) {
34
42
  if (typeof file.contents === "string") {
35
43
  await sandbox.filesystem.writeText(file.contents, file.path);
@@ -46,8 +54,12 @@ export class ModalSandboxExecutor {
46
54
  await process.closeStdin();
47
55
  const stdoutOutput = new RollingOutput();
48
56
  const stderrOutput = new RollingOutput();
57
+ const readers = new Set();
49
58
  let inactivityTimer;
50
59
  let inactivityError;
60
+ const failure = new Promise((resolve) => {
61
+ notifyFailure = resolve;
62
+ });
51
63
  const clearInactivityTimer = () => {
52
64
  if (inactivityTimer) {
53
65
  clearTimeout(inactivityTimer);
@@ -61,12 +73,13 @@ export class ModalSandboxExecutor {
61
73
  }
62
74
  inactivityTimer = setTimeout(() => {
63
75
  inactivityError = new InactivityTimeoutError(`Modal sandbox ${sandbox.sandboxId} stage ${request.stage}`, request.inactivityTimeoutMs ?? 0);
64
- void sandbox.terminate();
76
+ notifyFailure();
65
77
  }, request.inactivityTimeoutMs);
66
78
  inactivityTimer.unref();
67
79
  };
68
80
  const consume = async (streamName, stream, output) => {
69
81
  const reader = stream.getReader();
82
+ readers.add(reader);
70
83
  try {
71
84
  while (true) {
72
85
  const { value, done } = await reader.read();
@@ -82,25 +95,33 @@ export class ModalSandboxExecutor {
82
95
  }
83
96
  }
84
97
  finally {
98
+ readers.delete(reader);
85
99
  reader.releaseLock();
86
100
  }
87
101
  };
102
+ let exitCode;
103
+ let processError;
104
+ let streamError;
105
+ const captureFailure = (error) => {
106
+ streamError ??= error;
107
+ notifyFailure();
108
+ };
88
109
  armInactivityTimer();
89
- const [exitCode, stdout, stderr] = await Promise.all([
90
- process.wait(),
91
- consume("stdout", process.stdout, stdoutOutput),
92
- consume("stderr", process.stderr, stderrOutput),
93
- ])
94
- .then(([exitCode]) => {
95
- if (inactivityError) {
96
- throw inactivityError;
97
- }
98
- return [exitCode, stdoutOutput.text(), stderrOutput.text()];
99
- })
100
- .catch((error) => {
101
- throw inactivityError ?? error;
102
- })
103
- .finally(clearInactivityTimer);
110
+ const completion = Promise.all([
111
+ process.wait().then((value) => {
112
+ exitCode = value;
113
+ }, (error) => {
114
+ processError = error;
115
+ notifyFailure();
116
+ }),
117
+ consume("stdout", process.stdout, stdoutOutput).catch(captureFailure),
118
+ consume("stderr", process.stderr, stderrOutput).catch(captureFailure),
119
+ ]);
120
+ await Promise.race([completion, failure.then(() => delay(FAILURE_DRAIN_TIMEOUT_MS))]).finally(clearInactivityTimer);
121
+ if (readers.size > 0) {
122
+ void Promise.allSettled([...readers].map((reader) => reader.cancel()));
123
+ }
124
+ const executionError = inactivityError ?? processError ?? streamError;
104
125
  const outputs = {};
105
126
  for (const path of request.outputPaths ?? []) {
106
127
  try {
@@ -111,7 +132,17 @@ export class ModalSandboxExecutor {
111
132
  // absent output keeps the model or command failure diagnosable.
112
133
  }
113
134
  }
114
- return { sandboxId: sandbox.sandboxId, exitCode, stdout, stderr, outputs };
135
+ const result = {
136
+ sandboxId: sandbox.sandboxId,
137
+ exitCode: exitCode ?? 1,
138
+ stdout: stdoutOutput.text(),
139
+ stderr: stderrOutput.text(),
140
+ outputs,
141
+ };
142
+ if (executionError) {
143
+ throw new SandboxExecutionError(`${executionError instanceof Error ? executionError.message : String(executionError)}; sandbox ${sandbox.sandboxId}`, result, { cause: executionError });
144
+ }
145
+ return result;
115
146
  }
116
147
  finally {
117
148
  options.signal?.removeEventListener("abort", abort);
@@ -149,4 +180,4 @@ function sandboxName(runId, stage) {
149
180
  const suffix = crypto.randomUUID().slice(0, 8);
150
181
  return `${runId.slice(0, 24)}-${stage.slice(0, 16)}-${suffix}`.replace(/[^a-zA-Z0-9._-]/g, "-");
151
182
  }
152
- //# sourceMappingURL=modal-executor.js.map
183
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/sandbox/providers/modal/executor.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import type { Session } from "@vercel/sandbox";
2
- import { type RollingOutput } from "./process.js";
3
- import type { SandboxRequest, SandboxResult, SandboxRunOptions } from "./sandbox.js";
2
+ import { type RollingOutput } from "../../../process.js";
3
+ import type { SandboxRequest, SandboxResult, SandboxRunOptions } from "../../contracts.js";
4
4
  export declare const VERCEL_WORK_DIRECTORY = "/work";
5
5
  export declare function executeVercelCommand(input: {
6
6
  readonly session: Session;
@@ -11,4 +11,4 @@ export declare function executeVercelCommand(input: {
11
11
  readonly stdout: RollingOutput;
12
12
  readonly stderr: RollingOutput;
13
13
  }): Promise<Omit<SandboxResult, "sandboxId">>;
14
- //# sourceMappingURL=vercel-command.d.ts.map
14
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/sandbox/providers/vercel/command.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,OAAO,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAA0B,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG3F,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAI7C,wBAAsB,oBAAoB,CAAC,KAAK,EAAE;IAChD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;CAChC,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAgE5C"}
@@ -1,5 +1,5 @@
1
- import { InactivityTimeoutError } from "./process.js";
2
- import { VercelCommandStartError } from "./vercel-fetch.js";
1
+ import { InactivityTimeoutError } from "../../../process.js";
2
+ import { VercelCommandStartError } from "./fetch.js";
3
3
  export const VERCEL_WORK_DIRECTORY = "/work";
4
4
  const COMPLETION_REQUEST_TIMEOUT_MS = 15_000;
5
5
  export async function executeVercelCommand(input) {
@@ -90,4 +90,4 @@ async function consumeLogs(command, stdout, stderr, options, onOutput, signal) {
90
90
  onOutput();
91
91
  }
92
92
  }
93
- //# sourceMappingURL=vercel-command.js.map
93
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../../src/sandbox/providers/vercel/command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAsB,MAAM,qBAAqB,CAAC;AAEjF,OAAO,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,CAAC,MAAM,qBAAqB,GAAG,OAAO,CAAC;AAE7C,MAAM,6BAA6B,GAAG,MAAM,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,KAQ1C;IACC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAC/E,IAAI,eAA0D,CAAC;IAC/D,MAAM,oBAAoB,GAAG,GAAS,EAAE;QACtC,IAAI,eAAe,EAAE,CAAC;YACpB,YAAY,CAAC,eAAe,CAAC,CAAC;YAC9B,eAAe,GAAG,SAAS,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC;IACF,MAAM,kBAAkB,GAAG,GAAS,EAAE;QACpC,oBAAoB,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;YACjC,OAAO;QACT,CAAC;QACD,eAAe,GAAG,UAAU,CAAC,GAAG,EAAE;YAChC,SAAS,CACP,IAAI,sBAAsB,CACxB,kBAAkB,OAAO,CAAC,SAAS,UAAU,OAAO,CAAC,KAAK,EAAE,EAC5D,OAAO,CAAC,mBAAmB,IAAI,CAAC,CACjC,CACF,CAAC;QACJ,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAChC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,CAAC,WAAW,EAAE,GAAG,gBAAgB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;QAC3D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAE5F,kBAAkB,EAAE,CAAC;QACrB,MAAM,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;QAChF,sEAAsE;QACtE,wEAAwE;QACxE,qBAAqB;QACrB,oBAAoB,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YACnC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAC;SACtF,CAAC,CAAC;QAEH,MAAM,OAAO,GAA+B,EAAE,CAAC;QAC/C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACpE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,IAAI,SAAS,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;oBAC7B,MAAM,IAAI,KAAK,CACb,WAAW,OAAO,CAAC,SAAS,uCAAuC,IAAI,EAAE,CAC1E,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO;YACL,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;YACrB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;YACrB,OAAO;SACR,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,oBAAoB,EAAE,CAAC;IACzB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,OAAgB,EAChB,WAAmB,EACnB,gBAAmC,EACnC,OAAuB,EACvB,MAAmB;IAEnB,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,UAAU,CAAC;YAC9B,GAAG,EAAE,WAAW;YAChB,IAAI,EAAE,CAAC,GAAG,gBAAgB,CAAC;YAC3B,GAAG,EAAE,qBAAqB;YAC1B,QAAQ,EAAE,IAAI;YACd,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;YACnD,MAAM;YACN,SAAS,EAAE,OAAO,CAAC,SAAS;SAC7B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,uBAAuB,EAAE,CAAC;YAC7C,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC5B,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,OAAgB,EAChB,MAAqB,EACrB,MAAqB,EACrB,OAA0B,EAC1B,QAAoB,EACpB,MAAmB;IAEnB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;YAC3B,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QACxE,QAAQ,EAAE,CAAC;IACb,CAAC;AACH,CAAC"}
@@ -1,5 +1,5 @@
1
- import { type SelfBenchWorkerConfig } from "./config.js";
2
- import type { SandboxExecutor, SandboxRequest, SandboxResult, SandboxRunOptions } from "./sandbox.js";
1
+ import { type SelfBenchWorkerConfig } from "../../../config.js";
2
+ import type { SandboxExecutor, SandboxRequest, SandboxResult, SandboxRunOptions } from "../../contracts.js";
3
3
  type VercelExecutionConfig = Extract<SelfBenchWorkerConfig["execution"], {
4
4
  readonly kind: "vercel";
5
5
  }>;
@@ -11,4 +11,4 @@ export declare class VercelSandboxExecutor implements SandboxExecutor {
11
11
  close(): void;
12
12
  }
13
13
  export {};
14
- //# sourceMappingURL=vercel-executor.d.ts.map
14
+ //# sourceMappingURL=executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../../src/sandbox/providers/vercel/executor.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,qBAAqB,EAE3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAa5B,KAAK,qBAAqB,GAAG,OAAO,CAClC,qBAAqB,CAAC,WAAW,CAAC,EAClC;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAC5B,CAAC;AAMF,KAAK,KAAK,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAYrE,qBAAa,qBAAsB,YAAW,eAAe;;gBAMzD,MAAM,EAAE,qBAAqB,EAC7B,KAAK,0BAAmB,EACxB,KAAK,GAAE,KAAsB;IAOzB,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,GAAE,iBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC;IAiI3F,KAAK,IAAI,IAAI;CAwGd"}
@@ -1,10 +1,10 @@
1
1
  import { posix } from "node:path";
2
2
  import { setTimeout as delay } from "node:timers/promises";
3
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";
4
+ import { isDigestPinnedOciImage, } from "../../../config.js";
5
+ import { RollingOutput } from "../../../process.js";
6
+ import { executeVercelCommand, VERCEL_WORK_DIRECTORY } from "./command.js";
7
+ import { preventAmbiguousVercelCommandStartRetries } from "./fetch.js";
8
8
  const CLEANUP_TIMEOUT_MS = 60_000;
9
9
  const CLEANUP_RETRY_DELAY_MS = 1_000;
10
10
  const CREATE_RATE_LIMIT_RETRIES = 2;
@@ -353,4 +353,4 @@ function sanitizeCleanupError(error, redactedValue) {
353
353
  function errorMessage(error) {
354
354
  return error instanceof Error ? error.message : String(error);
355
355
  }
356
- //# sourceMappingURL=vercel-executor.js.map
356
+ //# sourceMappingURL=executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../../src/sandbox/providers/vercel/executor.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,4 @@ export declare class VercelCommandStartError extends Error {
3
3
  restorePublicName(): void;
4
4
  }
5
5
  export declare function preventAmbiguousVercelCommandStartRetries(fetch: typeof globalThis.fetch): typeof globalThis.fetch;
6
- //# sourceMappingURL=vercel-fetch.d.ts.map
6
+ //# sourceMappingURL=fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../src/sandbox/providers/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"}
@@ -36,4 +36,4 @@ export function preventAmbiguousVercelCommandStartRetries(fetch) {
36
36
  },
37
37
  });
38
38
  }
39
- //# sourceMappingURL=vercel-fetch.js.map
39
+ //# sourceMappingURL=fetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../src/sandbox/providers/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"}
@@ -1,4 +1,4 @@
1
- import type { SandboxExecutor, SandboxRequest, SandboxResult, SandboxRunOptions } from "./sandbox.js";
1
+ import type { SandboxExecutor, SandboxRequest, SandboxResult, SandboxRunOptions } from "./contracts.js";
2
2
  export declare const STANDARD_VERCEL_TIMEOUT_CAP_MS: number;
3
3
  export declare const HOBBY_VERCEL_TIMEOUT_CAP_MS: number;
4
4
  export declare function parseSandboxTimeoutCapText(value: string): number | undefined;
@@ -8,4 +8,4 @@ export declare class TimeoutCappedSandboxExecutor implements SandboxExecutor {
8
8
  run(request: SandboxRequest, options?: SandboxRunOptions): Promise<SandboxResult>;
9
9
  close(): void;
10
10
  }
11
- //# sourceMappingURL=sandbox-timeout.d.ts.map
11
+ //# sourceMappingURL=timeout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout.d.ts","sourceRoot":"","sources":["../../src/sandbox/timeout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,8BAA8B,QAAsB,CAAC;AAClE,eAAO,MAAM,2BAA2B,QAAkB,CAAC;AAE3D,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAmB5E;AAED,qBAAa,4BAA6B,YAAW,eAAe;;gBAItD,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM;IAQrD,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IASvF,KAAK,IAAI,IAAI;CAGd"}
@@ -38,4 +38,4 @@ export class TimeoutCappedSandboxExecutor {
38
38
  this.#delegate.close();
39
39
  }
40
40
  }
41
- //# sourceMappingURL=sandbox-timeout.js.map
41
+ //# sourceMappingURL=timeout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../src/sandbox/timeout.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;AAClE,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;AAE3D,MAAM,UAAU,0BAA0B,CAAC,KAAa;IACtD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,UAAU,KAAK,EAAE,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,OAAO,MAAM,CAAC,GAAG,CAAC;IACpB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,UAAU,GACd,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;QACd,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,KAAK;QACjB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;YAChB,CAAC,CAAC,EAAE,GAAG,KAAK;YACZ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG;gBAChB,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,CAAC,CAAC;IACZ,OAAO,MAAM,GAAG,UAAU,CAAC;AAC7B,CAAC;AAED,MAAM,OAAO,4BAA4B;IAC9B,SAAS,CAAkB;IAC3B,aAAa,CAAS;IAE/B,YAAY,QAAyB,EAAE,YAAoB;QACzD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,YAAY,GAAG,GAAG,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAuB,EAAE,OAA2B;QAC5D,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAC7B,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa;YACpC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE;YAC/C,CAAC,CAAC,OAAO,EACX,OAAO,CACR,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACF"}
@@ -14,7 +14,7 @@ var __export = (target, all) => {
14
14
  });
15
15
  };
16
16
 
17
- // src/sandbox-author.ts
17
+ // src/sandbox/programs/author.ts
18
18
  import { readdir } from "node:fs/promises";
19
19
  import { join as join2 } from "node:path";
20
20
 
@@ -14323,14 +14323,15 @@ var artifactRefSchema = exports_external.object({
14323
14323
  contentType: exports_external.string().min(1)
14324
14324
  });
14325
14325
  var difficultySchema = exports_external.enum(["easy", "medium", "hard"]);
14326
+ var MAX_CANDIDATES_PER_RUN = 1e4;
14326
14327
  var candidateCountsSchema = exports_external.object({
14327
- easy: exports_external.number().int().min(0).max(100),
14328
- medium: exports_external.number().int().min(0).max(100),
14329
- hard: exports_external.number().int().min(0).max(100)
14328
+ easy: exports_external.number().int().min(0).max(MAX_CANDIDATES_PER_RUN),
14329
+ medium: exports_external.number().int().min(0).max(MAX_CANDIDATES_PER_RUN),
14330
+ hard: exports_external.number().int().min(0).max(MAX_CANDIDATES_PER_RUN)
14330
14331
  }).refine(({ easy, medium, hard }) => easy + medium + hard >= 1, {
14331
14332
  message: "at least one candidate must be requested"
14332
- }).refine(({ easy, medium, hard }) => easy + medium + hard <= 100, {
14333
- message: "at most 100 candidates may be requested"
14333
+ }).refine(({ easy, medium, hard }) => easy + medium + hard <= MAX_CANDIDATES_PER_RUN, {
14334
+ message: `at most ${MAX_CANDIDATES_PER_RUN} candidates may be requested`
14334
14335
  });
14335
14336
  var runVersionSchema = exports_external.object({
14336
14337
  selfbenchCommit: commitSchema,
@@ -14589,7 +14590,7 @@ function patchPaths(patch) {
14589
14590
 
14590
14591
  // src/harbor-task.ts
14591
14592
  var HARBOR_SCHEMA_VERSION = "1.4";
14592
- var COMPILER_REVISION = 23;
14593
+ var COMPILER_REVISION = 24;
14593
14594
  async function loadAuthoredTask(directory) {
14594
14595
  const definition = taskDefinitionSchema.parse(JSON.parse(await readFile(join(directory, "definition.json"), "utf8")));
14595
14596
  assertSafeTaskPaths(definition);
@@ -14638,6 +14639,8 @@ async function compileHarborTask(authoredDirectory, repositoryDirectory, outputD
14638
14639
  await Promise.all([
14639
14640
  cp(snapshot, join(environment, "repo.tar.gz")),
14640
14641
  cp(snapshot, join(tests, "repo.tar.gz")),
14642
+ writeFile(join(outputDirectory, "definition.json"), `${JSON.stringify(task.definition, null, 2)}
14643
+ `),
14641
14644
  writeFile(join(outputDirectory, "instruction.md"), `${task.definition.prompt.trim()}
14642
14645
  `),
14643
14646
  writeFile(join(solution, "gold.patch"), task.goldPatch),
@@ -15000,7 +15003,7 @@ function tomlValue(value) {
15000
15003
  return typeof value === "string" ? tomlString(value) : String(value);
15001
15004
  }
15002
15005
 
15003
- // src/sandbox-author.ts
15006
+ // src/sandbox/programs/author.ts
15004
15007
  var [tasksRoot, repositoryDirectory, outputDirectory] = process.argv.slice(2);
15005
15008
  if (!tasksRoot || !repositoryDirectory || !outputDirectory) {
15006
15009
  throw new Error("usage: sandbox-author TASKS_ROOT REPOSITORY OUTPUT");
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- // src/sandbox-repair.ts
4
- import { access, chmod, mkdir, readFile, writeFile } from "node:fs/promises";
3
+ // src/sandbox/programs/repair.ts
4
+ import { chmod, mkdir as mkdir2, readFile, writeFile } from "node:fs/promises";
5
5
  import { homedir, tmpdir } from "node:os";
6
- import { join } from "node:path";
6
+ import { join as join2 } from "node:path";
7
7
 
8
8
  // src/hash.ts
9
9
  import { createHash } from "node:crypto";
@@ -196,55 +196,63 @@ The final working tree must retain a non-empty test patch relative to HEAD and e
196
196
  Inspect /work/task/solution/gold.patch only to understand the intended behavior and available seams, never to copy its private structure into assertions. Inspect /work/task/tests/test.sh for the verifier command. Run focused tests when feasible. Finish only after the working tree contains the repaired test files and no other changes.`;
197
197
  }
198
198
 
199
- // src/sandbox-repair.ts
199
+ // src/sandbox/programs/prepare-repair.ts
200
+ import { access, mkdir } from "node:fs/promises";
201
+ import { join } from "node:path";
202
+ async function prepareRepairTask(archivePath, workDirectory = "/work") {
203
+ const extractedDirectory = join(workDirectory, "task");
204
+ const repositoryDirectory = join(workDirectory, "repo");
205
+ await Promise.all([mkdir(extractedDirectory, { recursive: true }), mkdir(repositoryDirectory)]);
206
+ await runCommand("tar", ["-xzf", archivePath, "-C", extractedDirectory]);
207
+ const taskDirectory = await access(join(extractedDirectory, "instruction.md")).then(() => extractedDirectory, () => join(extractedDirectory, "harbor-task"));
208
+ await runCommand("tar", [
209
+ "-xzf",
210
+ join(taskDirectory, "tests/repo.tar.gz"),
211
+ "-C",
212
+ repositoryDirectory
213
+ ]);
214
+ await runCommand("git", ["-C", repositoryDirectory, "init", "-q"]);
215
+ await runCommand("git", ["-C", repositoryDirectory, "config", "user.name", "SelfBench"]);
216
+ await runCommand("git", ["-C", repositoryDirectory, "config", "user.email", "selfbench@local"]);
217
+ await runCommand("git", ["-C", repositoryDirectory, "add", "-A"]);
218
+ await runCommand("git", ["-C", repositoryDirectory, "commit", "-qm", "base"]);
219
+ await runCommand("git", [
220
+ "-C",
221
+ repositoryDirectory,
222
+ "apply",
223
+ join(taskDirectory, "tests/test.patch")
224
+ ]);
225
+ await runCommand("git", ["-C", repositoryDirectory, "add", "-N", "--all"]);
226
+ return { extractedDirectory, taskDirectory, repositoryDirectory };
227
+ }
228
+
229
+ // src/sandbox/programs/repair.ts
200
230
  var [archivePath, reviewPath, outputArchive, outputReport] = process.argv.slice(2);
201
231
  if (!archivePath || !reviewPath || !outputArchive || !outputReport) {
202
232
  throw new Error("usage: sandbox-repair TASK.tar.gz REVIEW.json OUTPUT.tar.gz OUTPUT-REPORT.json");
203
233
  }
204
- var extractedDirectory = "/work/task";
205
- var repositoryDirectory = "/work/repo";
206
- await Promise.all([mkdir(extractedDirectory, { recursive: true }), mkdir(repositoryDirectory)]);
207
- await runCommand("tar", ["-xzf", archivePath, "-C", extractedDirectory]);
208
- var taskDirectory = await access(join(extractedDirectory, "instruction.md")).then(() => extractedDirectory, () => join(extractedDirectory, "harbor-task"));
234
+ var { extractedDirectory, taskDirectory, repositoryDirectory } = await prepareRepairTask(archivePath);
209
235
  var [instruction, originalPatch, review] = await Promise.all([
210
- readFile(join(taskDirectory, "instruction.md"), "utf8"),
211
- readFile(join(taskDirectory, "tests/test.patch"), "utf8"),
236
+ readFile(join2(taskDirectory, "instruction.md"), "utf8"),
237
+ readFile(join2(taskDirectory, "tests/test.patch"), "utf8"),
212
238
  readFile(reviewPath, "utf8")
213
239
  ]);
214
- var manifestPath = join(taskDirectory, ".selfbench-manifest.json");
240
+ var manifestPath = join2(taskDirectory, ".selfbench-manifest.json");
215
241
  var manifest = JSON.parse(await readFile(manifestPath, "utf8"));
216
242
  var taskId = typeof manifest.taskId === "string" ? manifest.taskId : "unknown-task";
217
243
  var allowedPaths = patchPaths(originalPatch);
218
- await runCommand("tar", [
219
- "-xzf",
220
- join(taskDirectory, "tests/repo.tar.gz"),
221
- "-C",
222
- repositoryDirectory
223
- ]);
224
- await runCommand("git", ["-C", repositoryDirectory, "init", "-q"]);
225
- await runCommand("git", ["-C", repositoryDirectory, "config", "user.name", "SelfBench"]);
226
- await runCommand("git", ["-C", repositoryDirectory, "config", "user.email", "selfbench@local"]);
227
- await runCommand("git", ["-C", repositoryDirectory, "add", "-A"]);
228
- await runCommand("git", ["-C", repositoryDirectory, "commit", "-qm", "base"]);
229
- await runCommand("git", [
230
- "-C",
231
- repositoryDirectory,
232
- "apply",
233
- join(taskDirectory, "tests/test.patch")
234
- ]);
235
- await runCommand("git", ["-C", repositoryDirectory, "add", "-N", "--all"]);
236
244
  var codexAuth = process.env.SELFBENCH_CODEX_AUTH_JSON;
237
245
  var apiKey = process.env.OPENAI_API_KEY;
238
246
  if (!apiKey && !codexAuth) {
239
247
  fail("OPENAI_API_KEY or SELFBENCH_CODEX_AUTH_JSON is required");
240
248
  }
241
- var codexHome = join(homedir(), ".codex");
242
- var authPath = join(codexHome, "auth.json");
243
- await mkdir(codexHome, { recursive: true });
249
+ var codexHome = join2(homedir(), ".codex");
250
+ var authPath = join2(codexHome, "auth.json");
251
+ await mkdir2(codexHome, { recursive: true });
244
252
  await writeFile(authPath, codexAuth ?? `${JSON.stringify({ OPENAI_API_KEY: apiKey })}
245
253
  `);
246
254
  await chmod(authPath, 384);
247
- var promptPath = join(tmpdir(), `selfbench-repair-${taskId}.md`);
255
+ var promptPath = join2(tmpdir(), `selfbench-repair-${taskId}.md`);
248
256
  await writeFile(promptPath, repairPrompt({
249
257
  taskId,
250
258
  authenticRequest: instruction,
@@ -289,7 +297,7 @@ if (!repaired.stdout.startsWith("diff --git ")) {
289
297
  if (repaired.stdout === originalPatch) {
290
298
  throw new Error("repair left the held-out test patch unchanged");
291
299
  }
292
- await writeFile(join(taskDirectory, "tests/test.patch"), repaired.stdout);
300
+ await writeFile(join2(taskDirectory, "tests/test.patch"), repaired.stdout);
293
301
  await writeFile(manifestPath, `${JSON.stringify({
294
302
  ...manifest,
295
303
  testPatchSha256: sha256(repaired.stdout),
@@ -13,7 +13,7 @@ var __export = (target, all) => {
13
13
  });
14
14
  };
15
15
 
16
- // src/sandbox-review.ts
16
+ // src/sandbox/programs/review.ts
17
17
  import { readFile, writeFile } from "node:fs/promises";
18
18
 
19
19
  // node_modules/zod/v4/classic/external.js
@@ -14443,7 +14443,7 @@ function isRecord(value) {
14443
14443
  return typeof value === "object" && value !== null && !Array.isArray(value);
14444
14444
  }
14445
14445
 
14446
- // src/sandbox-review.ts
14446
+ // src/sandbox/programs/review.ts
14447
14447
  var apiKey = process.env.OPENAI_API_KEY;
14448
14448
  var authJson = process.env.SELFBENCH_PI_AUTH_JSON;
14449
14449
  var outputPath = process.env.SELFBENCH_REVIEW_OUTPUT;