self-bench 0.3.2 → 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.
- package/.dockerignore +0 -1
- package/Dockerfile +2 -1
- package/Dockerfile.sandbox +1 -1
- package/README.md +114 -170
- package/bun.lock +60 -12
- package/compose.yaml +11 -5
- package/dist/agent-smoke-main.js +3 -2
- package/dist/agent-smoke-main.js.map +1 -1
- package/dist/agent-smoke.d.ts +2 -1
- package/dist/agent-smoke.d.ts.map +1 -1
- package/dist/agent-smoke.js +6 -1
- package/dist/agent-smoke.js.map +1 -1
- package/dist/api.d.ts +24 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +65 -20
- package/dist/api.js.map +1 -1
- package/dist/artifacts.d.ts +0 -1
- package/dist/artifacts.d.ts.map +1 -1
- package/dist/artifacts.js +0 -3
- package/dist/artifacts.js.map +1 -1
- package/dist/build-metadata.js +1 -1
- package/dist/cli.js +75 -11
- package/dist/cli.js.map +1 -1
- package/dist/codex-review.d.ts +2 -1
- package/dist/codex-review.d.ts.map +1 -1
- package/dist/codex-review.js +26 -22
- package/dist/codex-review.js.map +1 -1
- package/dist/config.d.ts +36 -11
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +89 -17
- package/dist/config.js.map +1 -1
- package/dist/contracts.d.ts +23 -3
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +31 -6
- package/dist/contracts.js.map +1 -1
- package/dist/eval-main.js +5 -4
- package/dist/eval-main.js.map +1 -1
- package/dist/evaluate.d.ts +2 -1
- package/dist/evaluate.d.ts.map +1 -1
- package/dist/evaluate.js +14 -8
- package/dist/evaluate.js.map +1 -1
- package/dist/harbor-environment.d.ts +2 -0
- package/dist/harbor-environment.d.ts.map +1 -0
- package/dist/harbor-environment.js +15 -0
- package/dist/harbor-environment.js.map +1 -0
- package/dist/harbor-results.d.ts.map +1 -1
- package/dist/harbor-results.js +2 -0
- package/dist/harbor-results.js.map +1 -1
- package/dist/process.d.ts +2 -1
- package/dist/process.d.ts.map +1 -1
- package/dist/process.js.map +1 -1
- package/dist/provenance.d.ts +0 -1
- package/dist/provenance.d.ts.map +1 -1
- package/dist/provenance.js.map +1 -1
- package/dist/providers.d.ts +8 -0
- package/dist/providers.d.ts.map +1 -0
- package/dist/providers.js +14 -0
- package/dist/providers.js.map +1 -0
- package/dist/reaudit-main.js +14 -11
- package/dist/reaudit-main.js.map +1 -1
- package/dist/repair-main.js +12 -9
- package/dist/repair-main.js.map +1 -1
- package/dist/review/assets/index-CZ3G759O.js +1568 -0
- package/dist/review/assets/index-DgSLzX8l.css +1 -0
- package/dist/review/assets/{mojo-Blby8dQK.js → mojo-DJz3ZmWd.js} +1 -1
- package/dist/review/assets/typst-BUadGCkm.js +1 -0
- package/dist/review/index.html +2 -2
- package/dist/sandbox-author.bundle.js +40 -6
- package/dist/sandbox-repair.bundle.js +8 -7
- package/dist/sandbox-repair.js +7 -7
- package/dist/sandbox-repair.js.map +1 -1
- package/dist/sandbox-review.bundle.js +29 -25
- package/dist/sandbox-review.js +5 -3
- package/dist/sandbox-review.js.map +1 -1
- package/dist/sandbox-timeout.d.ts +11 -0
- package/dist/sandbox-timeout.d.ts.map +1 -0
- package/dist/sandbox-timeout.js +41 -0
- package/dist/sandbox-timeout.js.map +1 -0
- package/dist/sandbox-validation-repair.bundle.js +49 -15
- package/dist/sandbox-validation-repair.js +11 -9
- package/dist/sandbox-validation-repair.js.map +1 -1
- package/dist/sandbox.d.ts +2 -2
- package/dist/sandbox.d.ts.map +1 -1
- package/dist/sandbox.js +10 -3
- package/dist/sandbox.js.map +1 -1
- package/dist/subscription-auth.d.ts +12 -1
- package/dist/subscription-auth.d.ts.map +1 -1
- package/dist/subscription-auth.js +16 -16
- package/dist/subscription-auth.js.map +1 -1
- package/dist/{activities.d.ts → temporal/activities.d.ts} +3 -4
- package/dist/temporal/activities.d.ts.map +1 -0
- package/dist/{activities.js → temporal/activities.js} +51 -34
- package/dist/temporal/activities.js.map +1 -0
- package/dist/{temporal.d.ts → temporal/connection.d.ts} +2 -2
- package/dist/temporal/connection.d.ts.map +1 -0
- package/dist/{temporal.js → temporal/connection.js} +1 -1
- package/dist/temporal/connection.js.map +1 -0
- package/dist/{worker-main.d.ts.map → temporal/worker-main.d.ts.map} +1 -1
- package/dist/{worker-main.js → temporal/worker-main.js} +6 -10
- package/dist/temporal/worker-main.js.map +1 -0
- package/dist/{workflow.d.ts → temporal/workflow.d.ts} +1 -1
- package/dist/temporal/workflow.d.ts.map +1 -0
- package/dist/temporal/workflow.js.map +1 -0
- package/dist/terminal-prompts.d.ts +26 -0
- package/dist/terminal-prompts.d.ts.map +1 -0
- package/dist/terminal-prompts.js +137 -0
- package/dist/terminal-prompts.js.map +1 -0
- package/dist/terminal-reporter.d.ts +30 -0
- package/dist/terminal-reporter.d.ts.map +1 -0
- package/dist/terminal-reporter.js +90 -0
- package/dist/terminal-reporter.js.map +1 -0
- package/dist/validate-main.js +8 -2
- package/dist/validate-main.js.map +1 -1
- package/dist/vercel-cli.d.ts +64 -0
- package/dist/vercel-cli.d.ts.map +1 -0
- package/dist/vercel-cli.js +303 -0
- package/dist/vercel-cli.js.map +1 -0
- package/dist/vercel-command.d.ts +14 -0
- package/dist/vercel-command.d.ts.map +1 -0
- package/dist/vercel-command.js +93 -0
- package/dist/vercel-command.js.map +1 -0
- package/dist/vercel-executor.d.ts +14 -0
- package/dist/vercel-executor.d.ts.map +1 -0
- package/dist/vercel-executor.js +356 -0
- package/dist/vercel-executor.js.map +1 -0
- package/dist/vercel-fetch.d.ts +6 -0
- package/dist/vercel-fetch.d.ts.map +1 -0
- package/dist/vercel-fetch.js +39 -0
- package/dist/vercel-fetch.js.map +1 -0
- package/dist/vercel-profile.d.ts +34 -0
- package/dist/vercel-profile.d.ts.map +1 -0
- package/dist/vercel-profile.js +244 -0
- package/dist/vercel-profile.js.map +1 -0
- package/dist/vercel-runtime-image.d.ts +51 -0
- package/dist/vercel-runtime-image.d.ts.map +1 -0
- package/dist/vercel-runtime-image.js +123 -0
- package/dist/vercel-runtime-image.js.map +1 -0
- package/dist/vercel-setup-probe.d.ts +49 -0
- package/dist/vercel-setup-probe.d.ts.map +1 -0
- package/dist/vercel-setup-probe.js +151 -0
- package/dist/vercel-setup-probe.js.map +1 -0
- package/dist/vercel-setup.d.ts +42 -0
- package/dist/vercel-setup.d.ts.map +1 -0
- package/dist/vercel-setup.js +280 -0
- package/dist/vercel-setup.js.map +1 -0
- package/docs/evaluations.md +15 -12
- package/docs/operations.md +134 -21
- package/package.json +8 -6
- package/src/agent-smoke-main.ts +3 -2
- package/src/agent-smoke.ts +8 -2
- package/src/api.ts +71 -20
- package/src/artifacts.ts +0 -4
- package/src/cli.ts +81 -11
- package/src/codex-review.ts +63 -54
- package/src/config.ts +150 -28
- package/src/contracts.ts +33 -11
- package/src/eval-main.ts +5 -4
- package/src/evaluate.ts +18 -11
- package/src/harbor-environment.ts +17 -0
- package/src/harbor-results.ts +2 -0
- package/src/process.ts +3 -1
- package/src/provenance.ts +0 -1
- package/src/providers.ts +22 -0
- package/src/reaudit-main.ts +17 -11
- package/src/repair-main.ts +15 -9
- package/src/sandbox-repair.ts +7 -11
- package/src/sandbox-review.ts +5 -3
- package/src/sandbox-timeout.ts +56 -0
- package/src/sandbox-validation-repair.ts +13 -10
- package/src/sandbox.ts +15 -5
- package/src/subscription-auth.ts +30 -17
- package/src/{activities.ts → temporal/activities.ts} +53 -42
- package/src/{temporal.ts → temporal/connection.ts} +1 -1
- package/src/{worker-main.ts → temporal/worker-main.ts} +6 -10
- package/src/{workflow.ts → temporal/workflow.ts} +10 -10
- package/src/terminal-prompts.ts +197 -0
- package/src/terminal-reporter.ts +126 -0
- package/src/validate-main.ts +9 -3
- package/src/vercel-cli.ts +403 -0
- package/src/vercel-command.ts +127 -0
- package/src/vercel-executor.ts +448 -0
- package/src/vercel-fetch.ts +45 -0
- package/src/vercel-profile.ts +319 -0
- package/src/vercel-runtime-image.ts +204 -0
- package/src/vercel-setup-probe.ts +229 -0
- package/src/vercel-setup.ts +419 -0
- package/dist/activities.d.ts.map +0 -1
- package/dist/activities.js.map +0 -1
- package/dist/extensions/review.d.ts +0 -3
- package/dist/extensions/review.d.ts.map +0 -1
- package/dist/extensions/review.js +0 -44
- package/dist/extensions/review.js.map +0 -1
- package/dist/review/assets/index-Dq-6DFzI.css +0 -1
- package/dist/review/assets/index-DurW_RD7.js +0 -1567
- package/dist/review/assets/typst-DHCkPAjA.js +0 -1
- package/dist/temporal.d.ts.map +0 -1
- package/dist/temporal.js.map +0 -1
- package/dist/worker-main.js.map +0 -1
- package/dist/workflow.d.ts.map +0 -1
- package/dist/workflow.js.map +0 -1
- package/src/extensions/review.ts +0 -54
- /package/dist/{worker-main.d.ts → temporal/worker-main.d.ts} +0 -0
- /package/dist/{workflow.js → temporal/workflow.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel-setup-probe.js","sourceRoot":"","sources":["../src/vercel-setup-probe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { VercelCredentials } from "./config.js";
|
|
2
|
+
import { type SetupPrompter } from "./terminal-prompts.js";
|
|
3
|
+
import { type SetupReporter } from "./terminal-reporter.js";
|
|
4
|
+
import { type VercelProject, type VercelTeam } from "./vercel-cli.js";
|
|
5
|
+
import { saveVercelProfile, type VercelProfile, type VercelProfileData } from "./vercel-profile.js";
|
|
6
|
+
import { type VercelRuntimeImageCli } from "./vercel-runtime-image.js";
|
|
7
|
+
import { type VercelCapability } from "./vercel-setup-probe.js";
|
|
8
|
+
export interface VercelSetupCli extends VercelRuntimeImageCli {
|
|
9
|
+
ensureAvailable(): Promise<void>;
|
|
10
|
+
ensureLoggedIn(): Promise<void>;
|
|
11
|
+
listTeams(): Promise<readonly VercelTeam[]>;
|
|
12
|
+
listProjects(teamSlug: string): Promise<readonly VercelProject[]>;
|
|
13
|
+
createProject(teamSlug: string, projectName: string): Promise<VercelProject>;
|
|
14
|
+
}
|
|
15
|
+
export interface VercelSetupServices {
|
|
16
|
+
readonly cli: VercelSetupCli;
|
|
17
|
+
readonly prompter: SetupPrompter;
|
|
18
|
+
readonly reporter: SetupReporter;
|
|
19
|
+
readonly interactive: boolean;
|
|
20
|
+
readonly loadProfiles: (directory: string) => Promise<VercelProfileData>;
|
|
21
|
+
readonly saveProfile: typeof saveVercelProfile;
|
|
22
|
+
readonly probe: (input: {
|
|
23
|
+
readonly credentials: VercelCredentials;
|
|
24
|
+
readonly image: string;
|
|
25
|
+
readonly signal?: AbortSignal;
|
|
26
|
+
}) => Promise<VercelCapability>;
|
|
27
|
+
readonly sleep: (delayMs: number) => Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
export interface VercelSetupResult {
|
|
30
|
+
readonly profileName: string;
|
|
31
|
+
readonly profile: VercelProfile;
|
|
32
|
+
readonly configDirectory: string;
|
|
33
|
+
readonly projectCreated: boolean;
|
|
34
|
+
readonly imagePublished: boolean;
|
|
35
|
+
}
|
|
36
|
+
export declare function setupVercel(options?: {
|
|
37
|
+
readonly profileName?: string;
|
|
38
|
+
readonly environment?: NodeJS.ProcessEnv;
|
|
39
|
+
readonly projectRoot?: string;
|
|
40
|
+
readonly verbose?: boolean;
|
|
41
|
+
}, providedServices?: VercelSetupServices): Promise<VercelSetupResult>;
|
|
42
|
+
//# sourceMappingURL=vercel-setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel-setup.d.ts","sourceRoot":"","sources":["../src/vercel-setup.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,KAAK,aAAa,EAAyB,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAa,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EAEL,iBAAiB,EAEjB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EAEvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAGL,KAAK,qBAAqB,EAE3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKvF,MAAM,WAAW,cAAe,SAAQ,qBAAqB;IAC3D,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,SAAS,IAAI,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAAC;IAC5C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,aAAa,EAAE,CAAC,CAAC;IAClE,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;CAC9E;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzE,QAAQ,CAAC,WAAW,EAAE,OAAO,iBAAiB,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE;QACtB,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAC;QACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;KAC/B,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAED,wBAAsB,WAAW,CAC/B,OAAO,GAAE;IACP,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CACvB,EACN,gBAAgB,CAAC,EAAE,mBAAmB,GACrC,OAAO,CAAC,iBAAiB,CAAC,CAiJ5B"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import { dirname, resolve } from "node:path";
|
|
2
|
+
import { setTimeout as delay } from "node:timers/promises";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
import { isInteractiveTerminal, SetupCanceledError, TerminalPrompter, } from "./terminal-prompts.js";
|
|
5
|
+
import { TerminalSetupReporter } from "./terminal-reporter.js";
|
|
6
|
+
import { VercelCli } from "./vercel-cli.js";
|
|
7
|
+
import { loadVercelProfileData, saveVercelProfile, selfBenchConfigDirectory, validateVercelProfileName, } from "./vercel-profile.js";
|
|
8
|
+
import { DEFAULT_VCR_REPOSITORY, ensureVercelRuntimeImage, vercelRuntimeFingerprint, } from "./vercel-runtime-image.js";
|
|
9
|
+
import { probeVercelCapability } from "./vercel-setup-probe.js";
|
|
10
|
+
const DEFAULT_PROFILE_NAME = "default";
|
|
11
|
+
const DEFAULT_PROJECT_NAME = "selfbench-sandbox";
|
|
12
|
+
export async function setupVercel(options = {}, providedServices) {
|
|
13
|
+
const services = providedServices ?? defaultServices(options.verbose ?? false);
|
|
14
|
+
if (!services.interactive) {
|
|
15
|
+
throw new Error("self-bench setup vercel requires an interactive terminal; unattended environments should set VERCEL_TOKEN, VERCEL_TEAM_ID, VERCEL_PROJECT_ID, SELFBENCH_VERCEL_IMAGE, and optionally SELFBENCH_VERCEL_TIMEOUT_CAP");
|
|
16
|
+
}
|
|
17
|
+
services.reporter.intro("Configure Vercel Sandbox");
|
|
18
|
+
const profileName = validateVercelProfileName(options.profileName ?? DEFAULT_PROFILE_NAME);
|
|
19
|
+
const environment = options.environment ?? process.env;
|
|
20
|
+
const configDirectory = selfBenchConfigDirectory(environment);
|
|
21
|
+
const projectRoot = resolve(options.projectRoot ?? defaultProjectRoot());
|
|
22
|
+
const existingData = await services.loadProfiles(configDirectory);
|
|
23
|
+
const existingProfile = existingData.profiles[profileName];
|
|
24
|
+
const existingToken = existingData.tokens[profileName];
|
|
25
|
+
const action = await chooseSetupAction(services.prompter, existingProfile, existingToken);
|
|
26
|
+
await services.cli.ensureAvailable();
|
|
27
|
+
await services.cli.ensureLoggedIn();
|
|
28
|
+
const teams = await services.cli.listTeams();
|
|
29
|
+
if (teams.length === 0) {
|
|
30
|
+
throw new Error("The Vercel account has no accessible team or personal scope");
|
|
31
|
+
}
|
|
32
|
+
let selected;
|
|
33
|
+
let projectCreated = false;
|
|
34
|
+
if (action === "change-project" || !existingProfile) {
|
|
35
|
+
const team = await chooseTeam(services.prompter, teams);
|
|
36
|
+
const projectSelection = await chooseProject(services, team);
|
|
37
|
+
selected = { team, project: projectSelection.project };
|
|
38
|
+
projectCreated = projectSelection.created;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
selected = await resolveExistingSelection(services.cli, teams, existingProfile);
|
|
42
|
+
}
|
|
43
|
+
const fingerprint = await vercelRuntimeFingerprint(projectRoot);
|
|
44
|
+
const imageResult = await ensureVercelRuntimeImage({
|
|
45
|
+
services: {
|
|
46
|
+
cli: services.cli,
|
|
47
|
+
prompter: services.prompter,
|
|
48
|
+
reporter: services.reporter,
|
|
49
|
+
sleep: services.sleep,
|
|
50
|
+
},
|
|
51
|
+
scope: { teamSlug: selected.team.slug, projectId: selected.project.id },
|
|
52
|
+
projectRoot,
|
|
53
|
+
fingerprint,
|
|
54
|
+
preferredRepository: action === "change-project" || !existingProfile
|
|
55
|
+
? DEFAULT_VCR_REPOSITORY
|
|
56
|
+
: existingProfile.vcrRepository,
|
|
57
|
+
});
|
|
58
|
+
const token = action === "revalidate" && existingToken
|
|
59
|
+
? existingToken
|
|
60
|
+
: await requestProjectToken(services, selected);
|
|
61
|
+
const credentials = {
|
|
62
|
+
token,
|
|
63
|
+
teamId: selected.team.id,
|
|
64
|
+
projectId: selected.project.id,
|
|
65
|
+
};
|
|
66
|
+
const controller = new AbortController();
|
|
67
|
+
const interrupt = () => controller.abort(new SetupCanceledError());
|
|
68
|
+
process.once("SIGINT", interrupt);
|
|
69
|
+
let capability;
|
|
70
|
+
try {
|
|
71
|
+
capability = await services.reporter.task({
|
|
72
|
+
pending: "Verifying Sandbox access and detecting the timeout cap",
|
|
73
|
+
success: "Sandbox access verified",
|
|
74
|
+
failure: "Sandbox verification failed",
|
|
75
|
+
}, async () => {
|
|
76
|
+
try {
|
|
77
|
+
return await services.probe({
|
|
78
|
+
credentials,
|
|
79
|
+
image: imageResult.image,
|
|
80
|
+
signal: controller.signal,
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
if (controller.signal.aborted) {
|
|
85
|
+
throw controller.signal.reason;
|
|
86
|
+
}
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
if (controller.signal.aborted) {
|
|
93
|
+
throw controller.signal.reason;
|
|
94
|
+
}
|
|
95
|
+
throw new Error(`Vercel Sandbox verification failed: ${errorMessage(error)}. If the access token expired or has the wrong project scope, rerun setup and paste a new project-scoped token; choose Replace the access token when revalidating an existing profile.`, { cause: error });
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
98
|
+
process.removeListener("SIGINT", interrupt);
|
|
99
|
+
}
|
|
100
|
+
if (capability.timeoutClass === "45m") {
|
|
101
|
+
services.reporter.warn("This Vercel scope enforces a 45-minute Sandbox limit. SelfBench will cap longer authoring and repair stages at 45 minutes; accepted tasks remain fully validated, but slow candidates may time out and be rejected.");
|
|
102
|
+
services.reporter.warn("Vercel Hobby usage is intended for personal, non-commercial work. Use a paid team for commercial SelfBench runs.");
|
|
103
|
+
if (!(await services.prompter.confirm("Continue with the 45-minute compatibility cap?", true))) {
|
|
104
|
+
services.reporter.cancel("Vercel setup canceled before profile activation.");
|
|
105
|
+
throw new SetupCanceledError("Vercel setup canceled before profile activation");
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
const profile = {
|
|
109
|
+
teamId: selected.team.id,
|
|
110
|
+
teamSlug: selected.team.slug,
|
|
111
|
+
teamName: selected.team.name,
|
|
112
|
+
projectId: selected.project.id,
|
|
113
|
+
projectName: selected.project.name,
|
|
114
|
+
vcrRepository: imageResult.repository,
|
|
115
|
+
image: imageResult.image,
|
|
116
|
+
runtimeFingerprint: fingerprint,
|
|
117
|
+
timeoutCapMs: capability.timeoutCapMs,
|
|
118
|
+
capabilityCheckedAt: capability.checkedAt,
|
|
119
|
+
};
|
|
120
|
+
await services.saveProfile({ directory: configDirectory, profileName, profile, token });
|
|
121
|
+
services.reporter.finish(`Saved Vercel profile "${profileName}"`, [
|
|
122
|
+
`Location: ${configDirectory}`,
|
|
123
|
+
`Project: ${profile.teamSlug}/${profile.projectName}`,
|
|
124
|
+
`Runtime image: ${imageRepository(profile.image)}`,
|
|
125
|
+
"Digest:",
|
|
126
|
+
` ${imageDigest(profile.image)}`,
|
|
127
|
+
`Vercel tier: ${timeoutTier(capability.timeoutClass)}`,
|
|
128
|
+
`Timeout cap: ${formatDuration(profile.timeoutCapMs)}`,
|
|
129
|
+
"Resources: Project and runtime image remain reusable after self-bench down.",
|
|
130
|
+
]);
|
|
131
|
+
return {
|
|
132
|
+
profileName,
|
|
133
|
+
profile,
|
|
134
|
+
configDirectory,
|
|
135
|
+
projectCreated,
|
|
136
|
+
imagePublished: imageResult.published,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
function defaultServices(verbose) {
|
|
140
|
+
const reporter = new TerminalSetupReporter({ verbose });
|
|
141
|
+
return {
|
|
142
|
+
cli: new VercelCli(),
|
|
143
|
+
prompter: new TerminalPrompter(),
|
|
144
|
+
reporter,
|
|
145
|
+
interactive: isInteractiveTerminal(),
|
|
146
|
+
loadProfiles: loadVercelProfileData,
|
|
147
|
+
saveProfile: saveVercelProfile,
|
|
148
|
+
probe: probeVercelCapability,
|
|
149
|
+
sleep: async (delayMs) => await delay(delayMs),
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
async function chooseSetupAction(prompter, profile, token) {
|
|
153
|
+
if (!profile) {
|
|
154
|
+
return "change-project";
|
|
155
|
+
}
|
|
156
|
+
const choices = [
|
|
157
|
+
...(token
|
|
158
|
+
? [
|
|
159
|
+
{
|
|
160
|
+
value: "revalidate",
|
|
161
|
+
label: `Revalidate ${profile.teamSlug}/${profile.projectName}`,
|
|
162
|
+
hint: "Recommended",
|
|
163
|
+
},
|
|
164
|
+
]
|
|
165
|
+
: []),
|
|
166
|
+
{ value: "replace-token", label: "Replace the access token" },
|
|
167
|
+
{ value: "change-project", label: "Choose another team or project" },
|
|
168
|
+
];
|
|
169
|
+
const selected = await prompter.select(`Vercel profile is already configured for ${profile.teamSlug}/${profile.projectName}`, choices, token ? "revalidate" : "replace-token");
|
|
170
|
+
if (selected !== "revalidate" && selected !== "replace-token" && selected !== "change-project") {
|
|
171
|
+
throw new Error(`Unsupported Vercel setup action: ${selected}`);
|
|
172
|
+
}
|
|
173
|
+
return selected;
|
|
174
|
+
}
|
|
175
|
+
async function chooseTeam(prompter, teams) {
|
|
176
|
+
const selectedId = await prompter.search("Choose a Vercel team or personal scope", teams.map((team) => ({
|
|
177
|
+
value: team.id,
|
|
178
|
+
label: team.name,
|
|
179
|
+
hint: [
|
|
180
|
+
team.slug,
|
|
181
|
+
team.id.startsWith("team_") ? undefined : "personal scope",
|
|
182
|
+
team.current ? "current" : undefined,
|
|
183
|
+
]
|
|
184
|
+
.filter(Boolean)
|
|
185
|
+
.join(" · "),
|
|
186
|
+
})), teams.find(({ current }) => current)?.id);
|
|
187
|
+
return teams.find(({ id }) => id === selectedId) ?? fail("selected Vercel team disappeared");
|
|
188
|
+
}
|
|
189
|
+
async function chooseProject(services, team) {
|
|
190
|
+
let projects = await services.cli.listProjects(team.slug);
|
|
191
|
+
const modes = [
|
|
192
|
+
...(projects.length > 0 ? [{ value: "existing", label: "Select an existing project" }] : []),
|
|
193
|
+
{ value: "create", label: "Create a dedicated project", hint: "Recommended" },
|
|
194
|
+
];
|
|
195
|
+
const mode = await services.prompter.select("Choose how to configure the Vercel project", modes, "create");
|
|
196
|
+
if (mode === "existing") {
|
|
197
|
+
const projectId = await services.prompter.search("Choose an existing project", projects.map((project) => ({
|
|
198
|
+
value: project.id,
|
|
199
|
+
label: project.name,
|
|
200
|
+
hint: project.id,
|
|
201
|
+
})));
|
|
202
|
+
return {
|
|
203
|
+
project: projects.find(({ id }) => id === projectId) ?? fail("selected Vercel project disappeared"),
|
|
204
|
+
created: false,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
for (;;) {
|
|
208
|
+
const name = (await services.prompter.text("New project name", DEFAULT_PROJECT_NAME)).trim();
|
|
209
|
+
if (!isValidProjectName(name)) {
|
|
210
|
+
services.reporter.warn("Project names must use 1-100 lowercase letters, digits, dots, underscores, or hyphens and cannot contain three consecutive hyphens.");
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
if (projects.some((project) => project.name.toLowerCase() === name.toLowerCase())) {
|
|
214
|
+
services.reporter.warn(`Project name "${name}" is already in use. Choose another name.`);
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
try {
|
|
218
|
+
return { project: await services.cli.createProject(team.slug, name), created: true };
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
projects = await services.cli.listProjects(team.slug);
|
|
222
|
+
if (projects.some((project) => project.name.toLowerCase() === name.toLowerCase())) {
|
|
223
|
+
services.reporter.warn(`Project name "${name}" became unavailable. Choose another name.`);
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
throw new Error(`Unable to create project "${name}": ${errorMessage(error)}`, {
|
|
227
|
+
cause: error,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
async function resolveExistingSelection(cli, teams, profile) {
|
|
233
|
+
const team = teams.find(({ id }) => id === profile.teamId);
|
|
234
|
+
if (!team) {
|
|
235
|
+
throw new Error(`Saved Vercel team ${profile.teamSlug} is no longer accessible; rerun setup and choose another team`);
|
|
236
|
+
}
|
|
237
|
+
const project = (await cli.listProjects(team.slug)).find(({ id }) => id === profile.projectId);
|
|
238
|
+
if (!project) {
|
|
239
|
+
throw new Error(`Saved Vercel project ${profile.projectName} is no longer accessible; rerun setup and choose another project`);
|
|
240
|
+
}
|
|
241
|
+
return { team, project };
|
|
242
|
+
}
|
|
243
|
+
async function requestProjectToken(services, selected) {
|
|
244
|
+
services.reporter.message("");
|
|
245
|
+
services.reporter.message(`Create a Vercel access token for team ${selected.team.name} and restrict it to project ${selected.project.name}:`);
|
|
246
|
+
services.reporter.message("https://vercel.com/account/settings/tokens");
|
|
247
|
+
services.reporter.message('A descriptive token name such as "selfbench-local" is recommended.');
|
|
248
|
+
const token = (await services.prompter.secret("Paste the project-scoped access token")).trim();
|
|
249
|
+
if (!token) {
|
|
250
|
+
throw new Error("Vercel access token must not be blank");
|
|
251
|
+
}
|
|
252
|
+
return token;
|
|
253
|
+
}
|
|
254
|
+
function isValidProjectName(value) {
|
|
255
|
+
return /^[a-z0-9._-]{1,100}$/.test(value) && !value.includes("---");
|
|
256
|
+
}
|
|
257
|
+
function formatDuration(timeoutMs) {
|
|
258
|
+
return timeoutMs % (60 * 60 * 1_000) === 0
|
|
259
|
+
? `${timeoutMs / (60 * 60 * 1_000)}h`
|
|
260
|
+
: `${timeoutMs / (60 * 1_000)}m`;
|
|
261
|
+
}
|
|
262
|
+
function timeoutTier(timeoutClass) {
|
|
263
|
+
return timeoutClass === "45m" ? "Hobby-compatible" : "Pro/Enterprise-compatible";
|
|
264
|
+
}
|
|
265
|
+
function imageRepository(image) {
|
|
266
|
+
return image.slice(0, image.lastIndexOf("@"));
|
|
267
|
+
}
|
|
268
|
+
function imageDigest(image) {
|
|
269
|
+
return image.slice(image.lastIndexOf("@") + 1);
|
|
270
|
+
}
|
|
271
|
+
function defaultProjectRoot() {
|
|
272
|
+
return resolve(dirname(fileURLToPath(import.meta.url)), "..");
|
|
273
|
+
}
|
|
274
|
+
function errorMessage(error) {
|
|
275
|
+
return error instanceof Error ? error.message : String(error);
|
|
276
|
+
}
|
|
277
|
+
function fail(message) {
|
|
278
|
+
throw new Error(message);
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=vercel-setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vercel-setup.js","sourceRoot":"","sources":["../src/vercel-setup.ts"],"names":[],"mappings":"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"}
|
package/docs/evaluations.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Running
|
|
1
|
+
# Running self-bench evaluations
|
|
2
2
|
|
|
3
|
-
A
|
|
3
|
+
A self-bench export contains a manifest and one archive per accepted Harbor task:
|
|
4
4
|
|
|
5
5
|
```text
|
|
6
6
|
manifest.json
|
|
@@ -16,6 +16,8 @@ tasks/
|
|
|
16
16
|
|
|
17
17
|
Exports include repository snapshots, held-out tests, and reference solutions. They are sensitive and unencrypted; keep them private.
|
|
18
18
|
|
|
19
|
+
The provider that generated an export does not constrain where Harbor runs it. Every task has the same provider-neutral Harbor layout, and `manifest.json` records the generation backend and the Harbor environment used for self-bench's nop/oracle gates. For later coding-agent trials, independently choose `--environment docker` or `--environment modal`. Harbor does not currently provide a Vercel environment; Vercel Sandbox is used only during benchmark generation.
|
|
20
|
+
|
|
19
21
|
## Run one task
|
|
20
22
|
|
|
21
23
|
Extract the export and select a task:
|
|
@@ -28,14 +30,13 @@ TASK_ID="$(jq -r '.tasks[0].taskId' ./export/manifest.json)"
|
|
|
28
30
|
tar -xzf "./export/tasks/$TASK_ID.tar.gz" -C ./selected-task
|
|
29
31
|
```
|
|
30
32
|
|
|
31
|
-
Install Harbor and run Codex against it:
|
|
33
|
+
Install Harbor and run Codex against it with API-key authentication:
|
|
32
34
|
|
|
33
35
|
```bash
|
|
34
36
|
uv tool install --python 3.12 'harbor[modal]==0.20.1.dev202608040148'
|
|
35
37
|
|
|
36
|
-
export
|
|
37
|
-
|
|
38
|
-
env -u OPENAI_API_KEY harbor run \
|
|
38
|
+
export OPENAI_API_KEY=...
|
|
39
|
+
harbor run \
|
|
39
40
|
--path ./selected-task/harbor-task \
|
|
40
41
|
--agent codex \
|
|
41
42
|
--model gpt-5.6-sol \
|
|
@@ -50,18 +51,20 @@ The `solution/` directory is used only for explicit oracle validation and is nev
|
|
|
50
51
|
|
|
51
52
|
## Run the model matrix
|
|
52
53
|
|
|
53
|
-
The included matrix runner evaluates every exported task with `gpt-5.6-sol`, `gpt-5.6-terra`, and `gpt-5.6-luna
|
|
54
|
+
The included matrix runner evaluates every exported task with `gpt-5.6-sol`, `gpt-5.6-terra`, and `gpt-5.6-luna`, all at high reasoning. It reuses completed Harbor jobs after a restart.
|
|
54
55
|
|
|
55
|
-
From the
|
|
56
|
+
From the self-bench checkout:
|
|
56
57
|
|
|
57
58
|
```bash
|
|
58
|
-
|
|
59
|
+
export OPENAI_API_KEY=...
|
|
60
|
+
node dist/eval-main.js \
|
|
59
61
|
--export ./my-evals.tar.gz \
|
|
60
62
|
--jobs ./matrix-jobs \
|
|
61
63
|
--harbor harbor \
|
|
62
64
|
--environment modal \
|
|
63
|
-
--concurrency 20
|
|
64
|
-
--auth "$HOME/.codex/auth.json"
|
|
65
|
+
--concurrency 20
|
|
65
66
|
```
|
|
66
67
|
|
|
67
|
-
The
|
|
68
|
+
The runner writes per-task Harbor jobs and a combined `./matrix-jobs/summary.json`.
|
|
69
|
+
|
|
70
|
+
ChatGPT subscription authentication remains supported for existing deployments: omit `OPENAI_API_KEY` and pass `--auth /path/to/codex-auth.json`.
|