agent-hitch 0.2.3 → 0.2.5
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/dist/src/adapters/providers/deepseek.js +3 -1
- package/dist/src/adapters/providers/deepseek.js.map +1 -1
- package/dist/src/adapters/providers/shared.js +3 -2
- package/dist/src/adapters/providers/shared.js.map +1 -1
- package/dist/src/backends/harbor/backend.js +100 -36
- package/dist/src/backends/harbor/backend.js.map +1 -1
- package/dist/src/backends/harbor/dataset-config.js +36 -0
- package/dist/src/backends/harbor/dataset-config.js.map +1 -0
- package/dist/src/cli/commands/eval.js +39 -3
- package/dist/src/cli/commands/eval.js.map +1 -1
- package/dist/src/cli/output.js +4 -1
- package/dist/src/cli/output.js.map +1 -1
- package/dist/src/evals/harbor-bridge-error.js +44 -0
- package/dist/src/evals/harbor-bridge-error.js.map +1 -0
- package/dist/src/evals/index.js +4 -2
- package/dist/src/evals/index.js.map +1 -1
- package/dist/src/evals/progress.js +198 -0
- package/dist/src/evals/progress.js.map +1 -0
- package/dist/src/evals/request.js +37 -1
- package/dist/src/evals/request.js.map +1 -1
- package/dist/src/evals/rerun-slots.js +95 -0
- package/dist/src/evals/rerun-slots.js.map +1 -0
- package/dist/src/evals/rerun.js +417 -0
- package/dist/src/evals/rerun.js.map +1 -0
- package/dist/src/evals/service.js +193 -44
- package/dist/src/evals/service.js.map +1 -1
- package/dist/src/evals/trial-import.js +130 -60
- package/dist/src/evals/trial-import.js.map +1 -1
- package/docs/schemas/eval-progress.schema.json +61 -0
- package/integrations/harbor/hitch_harbor_agent.py +270 -30
- package/package.json +1 -1
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { atomicWriteJSON, readJSON } from "../foundation/index.js";
|
|
3
|
+
const EVAL_ID = /^eval_[a-f0-9]{32}$/;
|
|
4
|
+
const RUN_ID = /^run_[a-f0-9]{32}$/;
|
|
5
|
+
export function createEvalProgress(input) {
|
|
6
|
+
if (!EVAL_ID.test(input.evalId))
|
|
7
|
+
throw new TypeError("eval progress eval_id is invalid");
|
|
8
|
+
if (!input.benchmarkId || !input.benchmarkRevision)
|
|
9
|
+
throw new TypeError("eval progress benchmark identity is invalid");
|
|
10
|
+
if (!Number.isFinite(Date.parse(input.startedAt)))
|
|
11
|
+
throw new TypeError("eval progress started_at is invalid");
|
|
12
|
+
return {
|
|
13
|
+
schema_version: "1",
|
|
14
|
+
eval_id: input.evalId,
|
|
15
|
+
benchmark_id: input.benchmarkId,
|
|
16
|
+
benchmark_revision: input.benchmarkRevision,
|
|
17
|
+
status: "running",
|
|
18
|
+
generation: 0,
|
|
19
|
+
planned_tasks: input.plannedTasks ?? null,
|
|
20
|
+
planned_trials: input.plannedTrials ?? null,
|
|
21
|
+
trials: [],
|
|
22
|
+
summary: { settled_trials: 0, valid_trials: 0, invalid_trials: 0 },
|
|
23
|
+
started_at: input.startedAt,
|
|
24
|
+
updated_at: input.startedAt,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export async function readEvalProgress(evalDirectory) {
|
|
28
|
+
const value = await readJSON(path.join(evalDirectory, "progress.json"), null);
|
|
29
|
+
return value === null ? null : parseEvalProgress(value);
|
|
30
|
+
}
|
|
31
|
+
export async function writeEvalProgress(evalDirectory, progress) {
|
|
32
|
+
await atomicWriteJSON(path.join(evalDirectory, "progress.json"), parseEvalProgress(progress));
|
|
33
|
+
}
|
|
34
|
+
export function mergeEvalProgressTrial(progress, trial, now = new Date().toISOString()) {
|
|
35
|
+
const parsed = parseTrial(trial, "eval progress trial");
|
|
36
|
+
const byTrial = progress.trials.find((item) => item.trial_id === parsed.trial_id);
|
|
37
|
+
if (byTrial !== undefined) {
|
|
38
|
+
if (JSON.stringify(byTrial) !== JSON.stringify(parsed))
|
|
39
|
+
throw new TypeError(`eval progress trial identity conflict: ${parsed.trial_id}`);
|
|
40
|
+
return progress;
|
|
41
|
+
}
|
|
42
|
+
if (progress.trials.some((item) => item.run_id === parsed.run_id)) {
|
|
43
|
+
throw new TypeError(`eval progress run identity conflict: ${parsed.run_id}`);
|
|
44
|
+
}
|
|
45
|
+
if (progress.trials.some((item) => evalTrialKey(item) === evalTrialKey(parsed))) {
|
|
46
|
+
throw new TypeError(`eval progress logical trial conflict: ${parsed.task_id} attempt ${parsed.attempt}`);
|
|
47
|
+
}
|
|
48
|
+
const trials = [...progress.trials, parsed].sort((left, right) => left.task_id.localeCompare(right.task_id)
|
|
49
|
+
|| left.attempt - right.attempt
|
|
50
|
+
|| left.trial_id.localeCompare(right.trial_id));
|
|
51
|
+
const valid = trials.filter((item) => item.observation_status === "valid").length;
|
|
52
|
+
return parseEvalProgress({
|
|
53
|
+
...progress,
|
|
54
|
+
generation: progress.generation + 1,
|
|
55
|
+
trials,
|
|
56
|
+
summary: {
|
|
57
|
+
settled_trials: trials.length,
|
|
58
|
+
valid_trials: valid,
|
|
59
|
+
invalid_trials: trials.length - valid,
|
|
60
|
+
},
|
|
61
|
+
updated_at: now,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
export function evalTrialKey(trial) {
|
|
65
|
+
return `${trial.task_id}\u0000${trial.attempt}`;
|
|
66
|
+
}
|
|
67
|
+
/** Replace one invalid logical trial, or fill a missing slot, with a valid verifier result. */
|
|
68
|
+
export function replaceInvalidEvalProgressTrial(progress, trial, now = new Date().toISOString()) {
|
|
69
|
+
const parsed = parseTrial(trial, "eval rerun trial");
|
|
70
|
+
if (parsed.observation_status !== "valid")
|
|
71
|
+
throw new TypeError("eval rerun replacement must be valid");
|
|
72
|
+
const key = evalTrialKey(parsed);
|
|
73
|
+
const existing = progress.trials.find((item) => evalTrialKey(item) === key);
|
|
74
|
+
if (existing?.observation_status === "valid") {
|
|
75
|
+
if (JSON.stringify(existing) === JSON.stringify(parsed))
|
|
76
|
+
return progress;
|
|
77
|
+
throw new TypeError(`eval rerun cannot replace valid task: ${parsed.task_id}`);
|
|
78
|
+
}
|
|
79
|
+
if (progress.trials.some((item) => item.run_id === parsed.run_id && evalTrialKey(item) !== key)) {
|
|
80
|
+
throw new TypeError(`eval progress run identity conflict: ${parsed.run_id}`);
|
|
81
|
+
}
|
|
82
|
+
if (progress.trials.some((item) => item.trial_id === parsed.trial_id && evalTrialKey(item) !== key)) {
|
|
83
|
+
throw new TypeError(`eval progress trial identity conflict: ${parsed.trial_id}`);
|
|
84
|
+
}
|
|
85
|
+
const trials = [...progress.trials.filter((item) => evalTrialKey(item) !== key), parsed].sort((left, right) => left.task_id.localeCompare(right.task_id)
|
|
86
|
+
|| left.attempt - right.attempt
|
|
87
|
+
|| left.trial_id.localeCompare(right.trial_id));
|
|
88
|
+
const valid = trials.filter((item) => item.observation_status === "valid").length;
|
|
89
|
+
return parseEvalProgress({
|
|
90
|
+
...progress,
|
|
91
|
+
generation: progress.generation + 1,
|
|
92
|
+
trials,
|
|
93
|
+
summary: {
|
|
94
|
+
settled_trials: trials.length,
|
|
95
|
+
valid_trials: valid,
|
|
96
|
+
invalid_trials: trials.length - valid,
|
|
97
|
+
},
|
|
98
|
+
updated_at: now,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
export function parseEvalProgress(value) {
|
|
102
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
103
|
+
throw new TypeError("eval progress must be an object");
|
|
104
|
+
const record = value;
|
|
105
|
+
if (record.schema_version !== "1" || typeof record.eval_id !== "string" || !EVAL_ID.test(record.eval_id)) {
|
|
106
|
+
throw new TypeError("eval progress identity is invalid");
|
|
107
|
+
}
|
|
108
|
+
if (typeof record.benchmark_id !== "string" || !record.benchmark_id
|
|
109
|
+
|| typeof record.benchmark_revision !== "string" || !record.benchmark_revision
|
|
110
|
+
|| record.status !== "running")
|
|
111
|
+
throw new TypeError("eval progress benchmark/status is invalid");
|
|
112
|
+
if (!Number.isSafeInteger(record.generation) || record.generation < 0)
|
|
113
|
+
throw new TypeError("eval progress generation is invalid");
|
|
114
|
+
for (const name of ["planned_tasks", "planned_trials"]) {
|
|
115
|
+
const planned = record[name];
|
|
116
|
+
if (planned !== null && (!Number.isSafeInteger(planned) || planned < 0))
|
|
117
|
+
throw new TypeError(`eval progress ${name} is invalid`);
|
|
118
|
+
}
|
|
119
|
+
if (!Array.isArray(record.trials))
|
|
120
|
+
throw new TypeError("eval progress trials are invalid");
|
|
121
|
+
const trials = record.trials.map((trial, index) => parseTrial(trial, `eval progress trial ${index}`));
|
|
122
|
+
if (new Set(trials.map((trial) => trial.trial_id)).size !== trials.length
|
|
123
|
+
|| new Set(trials.map((trial) => trial.run_id)).size !== trials.length)
|
|
124
|
+
throw new TypeError("eval progress trial identities are duplicated");
|
|
125
|
+
const sorted = [...trials].sort((left, right) => left.task_id.localeCompare(right.task_id)
|
|
126
|
+
|| left.attempt - right.attempt
|
|
127
|
+
|| left.trial_id.localeCompare(right.trial_id));
|
|
128
|
+
if (sorted.some((trial, index) => trial !== trials[index]))
|
|
129
|
+
throw new TypeError("eval progress trials are not canonically sorted");
|
|
130
|
+
const summary = record.summary;
|
|
131
|
+
if (!summary || typeof summary !== "object" || Array.isArray(summary))
|
|
132
|
+
throw new TypeError("eval progress summary is invalid");
|
|
133
|
+
const summaryRecord = summary;
|
|
134
|
+
const valid = trials.filter((trial) => trial.observation_status === "valid").length;
|
|
135
|
+
if (record.planned_trials !== null && trials.length > record.planned_trials) {
|
|
136
|
+
throw new TypeError("eval progress has more settled than planned trials");
|
|
137
|
+
}
|
|
138
|
+
if (record.planned_tasks !== null && new Set(trials.map((trial) => trial.task_id)).size > record.planned_tasks) {
|
|
139
|
+
throw new TypeError("eval progress has more settled than planned tasks");
|
|
140
|
+
}
|
|
141
|
+
if (summaryRecord.settled_trials !== trials.length || summaryRecord.valid_trials !== valid
|
|
142
|
+
|| summaryRecord.invalid_trials !== trials.length - valid)
|
|
143
|
+
throw new TypeError("eval progress summary does not match trials");
|
|
144
|
+
if (typeof record.started_at !== "string" || !Number.isFinite(Date.parse(record.started_at))
|
|
145
|
+
|| typeof record.updated_at !== "string" || !Number.isFinite(Date.parse(record.updated_at))) {
|
|
146
|
+
throw new TypeError("eval progress timestamps are invalid");
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
schema_version: "1",
|
|
150
|
+
eval_id: record.eval_id,
|
|
151
|
+
benchmark_id: record.benchmark_id,
|
|
152
|
+
benchmark_revision: record.benchmark_revision,
|
|
153
|
+
status: "running",
|
|
154
|
+
generation: record.generation,
|
|
155
|
+
planned_tasks: record.planned_tasks,
|
|
156
|
+
planned_trials: record.planned_trials,
|
|
157
|
+
trials,
|
|
158
|
+
summary: {
|
|
159
|
+
settled_trials: trials.length,
|
|
160
|
+
valid_trials: valid,
|
|
161
|
+
invalid_trials: trials.length - valid,
|
|
162
|
+
},
|
|
163
|
+
started_at: record.started_at,
|
|
164
|
+
updated_at: record.updated_at,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
function parseTrial(value, label) {
|
|
168
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
169
|
+
throw new TypeError(`${label} must be an object`);
|
|
170
|
+
const trial = value;
|
|
171
|
+
if (typeof trial.trial_id !== "string" || !trial.trial_id
|
|
172
|
+
|| typeof trial.run_id !== "string" || !RUN_ID.test(trial.run_id)
|
|
173
|
+
|| typeof trial.task_id !== "string" || !trial.task_id
|
|
174
|
+
|| !Number.isSafeInteger(trial.attempt) || trial.attempt < 1
|
|
175
|
+
|| (trial.observation_status !== "valid" && trial.observation_status !== "invalid")) {
|
|
176
|
+
throw new TypeError(`${label} identity is invalid`);
|
|
177
|
+
}
|
|
178
|
+
if (trial.observation_status === "valid" && (typeof trial.reward !== "number" || !Number.isFinite(trial.reward))) {
|
|
179
|
+
throw new TypeError(`${label} valid reward is invalid`);
|
|
180
|
+
}
|
|
181
|
+
if (trial.observation_status === "invalid" && (typeof trial.invalid_reason !== "string" || !trial.invalid_reason)) {
|
|
182
|
+
throw new TypeError(`${label} invalid reason is missing`);
|
|
183
|
+
}
|
|
184
|
+
if (trial.verifier_result_ref !== undefined && (typeof trial.verifier_result_ref !== "string" || !trial.verifier_result_ref)) {
|
|
185
|
+
throw new TypeError(`${label} verifier ref is invalid`);
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
trial_id: trial.trial_id,
|
|
189
|
+
run_id: trial.run_id,
|
|
190
|
+
task_id: trial.task_id,
|
|
191
|
+
attempt: trial.attempt,
|
|
192
|
+
observation_status: trial.observation_status,
|
|
193
|
+
...(trial.reward === undefined ? {} : { reward: trial.reward }),
|
|
194
|
+
...(trial.verifier_result_ref === undefined ? {} : { verifier_result_ref: trial.verifier_result_ref }),
|
|
195
|
+
...(trial.invalid_reason === undefined ? {} : { invalid_reason: trial.invalid_reason }),
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../src/evals/progress.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,11 @@ const HARBOR_EVAL_BYPASS_ARG = {
|
|
|
7
7
|
export function newEvalId() {
|
|
8
8
|
return `eval_${randomUUID().replaceAll("-", "")}`;
|
|
9
9
|
}
|
|
10
|
+
export function validateEvalId(value) {
|
|
11
|
+
if (!/^eval_[a-f0-9]{32}$/.test(value))
|
|
12
|
+
throw invalidInput(`invalid eval ID: ${value}`);
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
10
15
|
export async function validateEvalRequest(input) {
|
|
11
16
|
if (!input || typeof input !== "object" || Array.isArray(input))
|
|
12
17
|
throw invalidInput("eval request must be a JSON object");
|
|
@@ -88,6 +93,37 @@ export async function resolveBenchmarkReference(dataset) {
|
|
|
88
93
|
throw invalidInput("dataset revision cannot be latest");
|
|
89
94
|
return { benchmark_id: benchmarkId, benchmark_revision: revision };
|
|
90
95
|
}
|
|
96
|
+
export async function resolveLocalDatasetTaskIds(dataset) {
|
|
97
|
+
const local = path.resolve(dataset.trim());
|
|
98
|
+
try {
|
|
99
|
+
if (!(await stat(local)).isDirectory())
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
if (error.code === "ENOENT")
|
|
104
|
+
return null;
|
|
105
|
+
throw error;
|
|
106
|
+
}
|
|
107
|
+
if (await isRegularFile(path.join(local, "task.toml")))
|
|
108
|
+
return [path.basename(local)];
|
|
109
|
+
const entries = await readdir(local, { withFileTypes: true });
|
|
110
|
+
const tasks = [];
|
|
111
|
+
for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {
|
|
112
|
+
if (entry.isDirectory() && await isRegularFile(path.join(local, entry.name, "task.toml")))
|
|
113
|
+
tasks.push(entry.name);
|
|
114
|
+
}
|
|
115
|
+
return tasks;
|
|
116
|
+
}
|
|
117
|
+
async function isRegularFile(file) {
|
|
118
|
+
try {
|
|
119
|
+
return (await stat(file)).isFile();
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
if (error.code === "ENOENT")
|
|
123
|
+
return false;
|
|
124
|
+
throw error;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
91
127
|
function positiveInteger(value, name) {
|
|
92
128
|
const parsed = Number(value);
|
|
93
129
|
if (!Number.isInteger(parsed) || parsed <= 0)
|
|
@@ -101,7 +137,7 @@ function nonNegativeNumber(value, name) {
|
|
|
101
137
|
return parsed;
|
|
102
138
|
}
|
|
103
139
|
import { randomUUID } from "node:crypto";
|
|
104
|
-
import { stat } from "node:fs/promises";
|
|
140
|
+
import { readdir, stat } from "node:fs/promises";
|
|
105
141
|
import path from "node:path";
|
|
106
142
|
import { SCHEMA_VERSION, invalidInput } from "../foundation/index.js";
|
|
107
143
|
import { assertExactLocalGitEvalReference, parseHarnessReference } from "../revisions/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/evals/request.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../../src/evals/request.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { HitchError, invalidInput } from "../foundation/index.js";
|
|
2
|
+
import { evalTrialKey } from "./progress.js";
|
|
3
|
+
export function selectRerunTasks(tasks, progress, selector, attempts = 1) {
|
|
4
|
+
return uniqueTasks(selectRerunTrialSlots(tasks, attempts, progress, selector));
|
|
5
|
+
}
|
|
6
|
+
export function selectRerunTrialSlots(tasks, attempts, progress, selector) {
|
|
7
|
+
const planned = new Set(tasks);
|
|
8
|
+
if (planned.size !== tasks.length || tasks.some((task) => typeof task !== "string" || task.length === 0)) {
|
|
9
|
+
throw unavailable("eval task plan is invalid");
|
|
10
|
+
}
|
|
11
|
+
if (!Number.isSafeInteger(attempts) || attempts < 1)
|
|
12
|
+
throw unavailable("eval attempts plan is invalid");
|
|
13
|
+
const invalid = invalidTrialSlots(tasks, attempts, progress);
|
|
14
|
+
if (selector.mode === "invalid")
|
|
15
|
+
return invalid;
|
|
16
|
+
const requested = [...new Set(selector.taskNames)].sort();
|
|
17
|
+
if (requested.length === 0)
|
|
18
|
+
throw invalidInput("eval rerun requires at least one --task");
|
|
19
|
+
for (const task of requested) {
|
|
20
|
+
if (!planned.has(task))
|
|
21
|
+
throw new HitchError(`eval task is not in the plan: ${task}`, { code: "eval_rerun_unknown_task", exitCode: 2 });
|
|
22
|
+
if (!invalid.some((slot) => slot.task_id === task)) {
|
|
23
|
+
throw new HitchError(`eval task is already valid: ${task}`, { code: "eval_task_already_valid", exitCode: 2 });
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const requestedSet = new Set(requested);
|
|
27
|
+
return invalid.filter((slot) => requestedSet.has(slot.task_id));
|
|
28
|
+
}
|
|
29
|
+
export function invalidTrialSlots(tasks, attempts, progress) {
|
|
30
|
+
const byKey = new Map();
|
|
31
|
+
for (const trial of progress.trials) {
|
|
32
|
+
const key = evalTrialKey(trial);
|
|
33
|
+
if (byKey.has(key))
|
|
34
|
+
throw unavailable(`eval has duplicate logical trial: ${trial.task_id} attempt ${trial.attempt}`);
|
|
35
|
+
byKey.set(key, trial);
|
|
36
|
+
}
|
|
37
|
+
const invalid = [];
|
|
38
|
+
for (const task of tasks) {
|
|
39
|
+
for (let attempt = 1; attempt <= attempts; attempt += 1) {
|
|
40
|
+
if (byKey.get(slotKey({ task_id: task, attempt }))?.observation_status !== "valid") {
|
|
41
|
+
invalid.push({ task_id: task, attempt });
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return sortSlots(invalid);
|
|
46
|
+
}
|
|
47
|
+
export function validateProgressPlan(progress, plan, request, evalId) {
|
|
48
|
+
if (progress.eval_id !== evalId)
|
|
49
|
+
throw unavailable("eval progress identity is invalid");
|
|
50
|
+
if (progress.benchmark_id !== request.benchmark_id || progress.benchmark_revision !== request.benchmark_revision) {
|
|
51
|
+
throw unavailable("eval progress benchmark identity changed");
|
|
52
|
+
}
|
|
53
|
+
if (progress.planned_tasks !== plan.tasks.length || progress.planned_trials !== plan.tasks.length * plan.attempts) {
|
|
54
|
+
throw unavailable("eval progress does not match the frozen task/attempt plan");
|
|
55
|
+
}
|
|
56
|
+
const planned = new Set(plan.tasks);
|
|
57
|
+
for (const trial of progress.trials) {
|
|
58
|
+
if (trial.attempt > plan.attempts || !planned.has(trial.task_id)) {
|
|
59
|
+
throw unavailable(`eval progress contains an unplanned trial: ${trial.task_id} attempt ${trial.attempt}`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
invalidTrialSlots(plan.tasks, plan.attempts, progress);
|
|
63
|
+
}
|
|
64
|
+
export function slotKey(slot) {
|
|
65
|
+
return `${slot.task_id}\u0000${slot.attempt}`;
|
|
66
|
+
}
|
|
67
|
+
export function sortSlots(slots) {
|
|
68
|
+
return [...slots]
|
|
69
|
+
.map((slot) => ({ task_id: slot.task_id, attempt: slot.attempt }))
|
|
70
|
+
.sort((left, right) => left.task_id.localeCompare(right.task_id) || left.attempt - right.attempt);
|
|
71
|
+
}
|
|
72
|
+
export function uniqueTasks(slots) {
|
|
73
|
+
return [...new Set(slots.map((slot) => slot.task_id))].sort();
|
|
74
|
+
}
|
|
75
|
+
export function groupSlotsByAttempt(slots) {
|
|
76
|
+
const grouped = new Map();
|
|
77
|
+
for (const slot of slots) {
|
|
78
|
+
const current = grouped.get(slot.attempt) ?? [];
|
|
79
|
+
current.push(slot);
|
|
80
|
+
grouped.set(slot.attempt, current);
|
|
81
|
+
}
|
|
82
|
+
return [...grouped.entries()]
|
|
83
|
+
.sort(([left], [right]) => left - right)
|
|
84
|
+
.map(([attempt, values]) => [attempt, sortSlots(values)]);
|
|
85
|
+
}
|
|
86
|
+
export function attemptDirectoryName(attempt) {
|
|
87
|
+
return `attempt-${String(attempt).padStart(4, "0")}`;
|
|
88
|
+
}
|
|
89
|
+
export function formatSlot(slot) {
|
|
90
|
+
return `${slot.task_id}#${slot.attempt}`;
|
|
91
|
+
}
|
|
92
|
+
function unavailable(message) {
|
|
93
|
+
return new HitchError(message, { code: "eval_rerun_unavailable", exitCode: 2 });
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=rerun-slots.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rerun-slots.js","sourceRoot":"","sources":["../../../src/evals/rerun-slots.ts"],"names":[],"mappings":"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"}
|