agent-hitch 0.2.10 → 0.2.11
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/README.md +12 -11
- package/README.zh-CN.md +10 -9
- package/dist/src/cli/commands/capabilities.js +1 -0
- package/dist/src/cli/commands/capabilities.js.map +1 -1
- package/dist/src/cli/commands/verifier.js +54 -3
- package/dist/src/cli/commands/verifier.js.map +1 -1
- package/dist/src/cli/output.js +2 -0
- package/dist/src/cli/output.js.map +1 -1
- package/dist/src/evals/index.js +1 -0
- package/dist/src/evals/index.js.map +1 -1
- package/dist/src/evals/verifier-artifacts.js +98 -153
- package/dist/src/evals/verifier-artifacts.js.map +1 -1
- package/dist/src/evals/verifier-diagnostic-repair.js +276 -0
- package/dist/src/evals/verifier-diagnostic-repair.js.map +1 -0
- package/dist/src/runs/index.js +3 -2
- package/dist/src/runs/index.js.map +1 -1
- package/dist/src/runs/verifier-diagnostic-storage.js +237 -0
- package/dist/src/runs/verifier-diagnostic-storage.js.map +1 -0
- package/dist/src/runs/verifier-diagnostic-supplement.js +228 -0
- package/dist/src/runs/verifier-diagnostic-supplement.js.map +1 -0
- package/dist/src/runs/verifier-evidence.js +119 -118
- package/dist/src/runs/verifier-evidence.js.map +1 -1
- package/dist/src/trajectories/providers/deepseek.js +52 -38
- package/dist/src/trajectories/providers/deepseek.js.map +1 -1
- package/dist/src/trajectories/store.js +17 -0
- package/dist/src/trajectories/store.js.map +1 -1
- package/docs/schemas/verifier-diagnostic-page.schema.json +97 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verifier-artifacts.js","sourceRoot":"","sources":["../../../src/evals/verifier-artifacts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verifier-artifacts.js","sourceRoot":"","sources":["../../../src/evals/verifier-artifacts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
import { lstat, mkdir, mkdtemp, realpath, rename, rm, stat } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { validateRelativePath } from "../domain/index.js";
|
|
4
|
+
import { HitchError, PROVIDER_ENVIRONMENT_NAMES, atomicWriteJSON, credentialValuesFromEnv, ensureDir, openContainedRegularFile, sha256Bytes, statePaths, withFileLock } from "../foundation/index.js";
|
|
5
|
+
import { legacyIndexNeedsDiagnosticRepair, loadRunRecord, loadVerifierDiagnosticSupplement, loadVerifierEvidence, sourceIdentitiesFromLegacyIndex, verifierDiagnosticSupplementRelative, verifyResultBundleIndex, } from "../runs/index.js";
|
|
6
|
+
import { captureVerifierDiagnostics } from "./verifier-artifacts.js";
|
|
7
|
+
const DIAGNOSTICS_INDEX_REF = "verifier/diagnostics.json";
|
|
8
|
+
const MAX_INDEX_BYTES = 16 * 1024 * 1024;
|
|
9
|
+
export async function repairVerifierDiagnostics(options) {
|
|
10
|
+
const { root, runId } = options;
|
|
11
|
+
if (!/^run_[a-f0-9]{32}$/.test(runId))
|
|
12
|
+
throw new TypeError(`invalid run ID: ${runId}`);
|
|
13
|
+
const stateRoot = await canonicalStateRoot(root);
|
|
14
|
+
const runDirectory = path.join(statePaths(stateRoot).runs, runId);
|
|
15
|
+
const runRoot = await safeDirectory(runDirectory, "run");
|
|
16
|
+
const loaded = await loadRunRecord(runRoot, { verifyTrajectory: false });
|
|
17
|
+
const parent = loaded.record.parent;
|
|
18
|
+
if (!parent || !/^eval_[a-f0-9]{32}$/.test(parent.eval_id) || loaded.record.context.kind !== "benchmark_task") {
|
|
19
|
+
throw repairError("run has no supported Harbor eval parent", "verifier_diagnostic_repair_unsupported");
|
|
20
|
+
}
|
|
21
|
+
const evidence = await loadVerifierEvidence(stateRoot, runId, { env: options.env ?? process.env });
|
|
22
|
+
if (evidence.verifier.status === "corrupt") {
|
|
23
|
+
throw repairError("run verifier evidence is corrupt", "verifier_evidence_corrupt");
|
|
24
|
+
}
|
|
25
|
+
const bundle = await verifyResultBundleIndex(runRoot);
|
|
26
|
+
const bundleIndexSha256 = sha256Bytes(await readContained(runRoot, "bundle.index.json", MAX_INDEX_BYTES));
|
|
27
|
+
const originalIndexBytes = await readContained(runRoot, DIAGNOSTICS_INDEX_REF, MAX_INDEX_BYTES).catch((error) => {
|
|
28
|
+
if (error.code === "ENOENT") {
|
|
29
|
+
throw repairError("run has no indexed verifier diagnostics", "verifier_diagnostic_repair_unsupported");
|
|
30
|
+
}
|
|
31
|
+
throw error;
|
|
32
|
+
});
|
|
33
|
+
const originalIndex = JSON.parse(originalIndexBytes.toString("utf8"));
|
|
34
|
+
if (!legacyIndexNeedsDiagnosticRepair(originalIndex)) {
|
|
35
|
+
if (hasExplicitV2Losses(originalIndex)) {
|
|
36
|
+
throw repairError("version 2 diagnostics contain explicit source loss and cannot be safely reconstructed", "verifier_diagnostic_repair_source_unavailable");
|
|
37
|
+
}
|
|
38
|
+
return { schema_version: "1", kind: "verifier-diagnostics-repair-result", run_id: runId, status: "not_needed" };
|
|
39
|
+
}
|
|
40
|
+
if (hasRetiredCredentialRedactions(originalIndex)) {
|
|
41
|
+
throw repairError("legacy diagnostics used credential-value redaction that cannot be safely reproduced", "verifier_diagnostic_repair_credentials_required");
|
|
42
|
+
}
|
|
43
|
+
const originalIndexSha256 = sha256Bytes(originalIndexBytes);
|
|
44
|
+
const existing = await loadVerifierDiagnosticSupplement(stateRoot, runRoot, runId).catch((error) => {
|
|
45
|
+
throw repairError("existing verifier diagnostic repair is corrupt", "verifier_diagnostic_repair_conflict", error);
|
|
46
|
+
});
|
|
47
|
+
if (existing)
|
|
48
|
+
return {
|
|
49
|
+
schema_version: "1", kind: "verifier-diagnostics-repair-result", run_id: runId,
|
|
50
|
+
status: "already_repaired", repair_sha256: existing.repair_sha256,
|
|
51
|
+
diagnostics_index_sha256: existing.manifest.repaired.diagnostics_index_sha256,
|
|
52
|
+
};
|
|
53
|
+
const sourceIdentities = sourceIdentitiesFromLegacyIndex(originalIndex);
|
|
54
|
+
const evalDirectory = path.join(statePaths(stateRoot).evals, parent.eval_id);
|
|
55
|
+
const relativeSource = await resolveSource(evalDirectory, parent.trial_id, parent.attempt, options.source);
|
|
56
|
+
const sourceDirectory = await safeRelativeDirectory(evalDirectory, relativeSource);
|
|
57
|
+
const temporaryRoot = await ensureSafeRelativeDirectory(stateRoot, "tmp");
|
|
58
|
+
const temporaryParent = await mkdtemp(path.join(temporaryRoot, "verifier-diagnostics-repair-"));
|
|
59
|
+
const staging = path.join(temporaryParent, "supplement");
|
|
60
|
+
await ensureDir(staging);
|
|
61
|
+
try {
|
|
62
|
+
const request = JSON.parse((await readContained(runRoot, loaded.record.request_ref, MAX_INDEX_BYTES)).toString("utf8"));
|
|
63
|
+
const credentialNames = Array.isArray(request.credential_names)
|
|
64
|
+
? request.credential_names.filter((entry) => typeof entry === "string") : [];
|
|
65
|
+
const credentialValues = credentialValuesFromEnv([...PROVIDER_ENVIRONMENT_NAMES, ...credentialNames], options.env ?? process.env);
|
|
66
|
+
const captured = await captureVerifierDiagnostics(sourceDirectory, staging, {
|
|
67
|
+
credentialValues,
|
|
68
|
+
...(options.signal ? { signal: options.signal } : {}),
|
|
69
|
+
});
|
|
70
|
+
if (!captured || captured.losses.length > 0) {
|
|
71
|
+
throw repairError("Harbor verifier diagnostics cannot be fully persisted", "verifier_diagnostic_repair_source_unavailable");
|
|
72
|
+
}
|
|
73
|
+
const capturedSources = captured.artifacts.map((artifact) => ({
|
|
74
|
+
name: artifact.name, bytes: artifact.source_bytes, sha256: artifact.source_sha256,
|
|
75
|
+
})).sort((left, right) => left.name.localeCompare(right.name));
|
|
76
|
+
if (JSON.stringify(capturedSources) !== JSON.stringify(sourceIdentities)) {
|
|
77
|
+
throw repairError("Harbor verifier diagnostics do not match the sealed source digests", "verifier_diagnostic_repair_source_mismatch");
|
|
78
|
+
}
|
|
79
|
+
const repairedIndexSha256 = sha256Bytes(await readContained(staging, DIAGNOSTICS_INDEX_REF, MAX_INDEX_BYTES));
|
|
80
|
+
const currentBundle = await verifyResultBundleIndex(runRoot);
|
|
81
|
+
const currentBundleIndexSha256 = sha256Bytes(await readContained(runRoot, "bundle.index.json", MAX_INDEX_BYTES));
|
|
82
|
+
const currentOriginalIndexSha256 = sha256Bytes(await readContained(runRoot, DIAGNOSTICS_INDEX_REF, MAX_INDEX_BYTES));
|
|
83
|
+
if (currentBundle.bundle_digest !== bundle.bundle_digest || currentBundleIndexSha256 !== bundleIndexSha256
|
|
84
|
+
|| currentOriginalIndexSha256 !== originalIndexSha256) {
|
|
85
|
+
throw repairError("sealed verifier evidence changed during repair", "verifier_diagnostic_repair_conflict");
|
|
86
|
+
}
|
|
87
|
+
const manifest = {
|
|
88
|
+
schema_version: "1",
|
|
89
|
+
kind: "verifier-diagnostics-repair",
|
|
90
|
+
run_id: runId,
|
|
91
|
+
parent: {
|
|
92
|
+
eval_id: parent.eval_id,
|
|
93
|
+
trial_id: parent.trial_id,
|
|
94
|
+
attempt: parent.attempt,
|
|
95
|
+
task_id: loaded.record.context.task_id,
|
|
96
|
+
},
|
|
97
|
+
original: {
|
|
98
|
+
bundle_digest: bundle.bundle_digest,
|
|
99
|
+
bundle_index_sha256: bundleIndexSha256,
|
|
100
|
+
diagnostics_index_sha256: originalIndexSha256,
|
|
101
|
+
},
|
|
102
|
+
source: {
|
|
103
|
+
kind: "harbor-trial",
|
|
104
|
+
relative_trial_directory: relativeSource,
|
|
105
|
+
artifacts: sourceIdentities,
|
|
106
|
+
},
|
|
107
|
+
repaired: { diagnostics_index_sha256: repairedIndexSha256 },
|
|
108
|
+
created_at: new Date().toISOString(),
|
|
109
|
+
};
|
|
110
|
+
await atomicWriteJSON(path.join(staging, "repair.json"), manifest);
|
|
111
|
+
const relativeDestination = verifierDiagnosticSupplementRelative(runId, originalIndexSha256);
|
|
112
|
+
const destinationParent = await ensureSafeRelativeDirectory(stateRoot, path.posix.join("derived", "verifier-diagnostics", runId));
|
|
113
|
+
const destination = path.join(destinationParent, path.basename(relativeDestination));
|
|
114
|
+
const lockDirectory = await ensureSafeRelativeDirectory(stateRoot, path.posix.join("locks", "verifier-diagnostics"));
|
|
115
|
+
const result = await withFileLock(lockDirectory, runId, async () => {
|
|
116
|
+
const already = await loadVerifierDiagnosticSupplement(stateRoot, runRoot, runId).catch((error) => {
|
|
117
|
+
throw repairError("existing verifier diagnostic repair is corrupt", "verifier_diagnostic_repair_conflict", error);
|
|
118
|
+
});
|
|
119
|
+
if (already)
|
|
120
|
+
return {
|
|
121
|
+
schema_version: "1", kind: "verifier-diagnostics-repair-result", run_id: runId,
|
|
122
|
+
status: "already_repaired", repair_sha256: already.repair_sha256,
|
|
123
|
+
diagnostics_index_sha256: already.manifest.repaired.diagnostics_index_sha256,
|
|
124
|
+
};
|
|
125
|
+
try {
|
|
126
|
+
await stat(destination);
|
|
127
|
+
throw repairError("verifier diagnostic repair destination already exists", "verifier_diagnostic_repair_conflict");
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
if (error.code !== "ENOENT")
|
|
131
|
+
throw error;
|
|
132
|
+
}
|
|
133
|
+
await rename(staging, destination);
|
|
134
|
+
const published = await loadVerifierDiagnosticSupplement(stateRoot, runRoot, runId);
|
|
135
|
+
if (!published)
|
|
136
|
+
throw repairError("verifier diagnostic repair publication is missing", "verifier_diagnostic_repair_conflict");
|
|
137
|
+
return {
|
|
138
|
+
schema_version: "1", kind: "verifier-diagnostics-repair-result", run_id: runId,
|
|
139
|
+
status: "repaired", repair_sha256: published.repair_sha256,
|
|
140
|
+
diagnostics_index_sha256: published.manifest.repaired.diagnostics_index_sha256,
|
|
141
|
+
};
|
|
142
|
+
}, { timeoutCode: "verifier_diagnostic_repair_locked", timeoutExitCode: 12, ...(options.signal ? { signal: options.signal } : {}) });
|
|
143
|
+
return result;
|
|
144
|
+
}
|
|
145
|
+
finally {
|
|
146
|
+
await rm(temporaryParent, { recursive: true, force: true });
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
async function canonicalStateRoot(root) {
|
|
150
|
+
const resolved = path.resolve(root);
|
|
151
|
+
const info = await lstat(resolved);
|
|
152
|
+
if (info.isSymbolicLink() || !info.isDirectory())
|
|
153
|
+
throw new TypeError("Hitch state root is unsafe");
|
|
154
|
+
const canonical = await realpath(resolved);
|
|
155
|
+
const canonicalInfo = await lstat(canonical);
|
|
156
|
+
if (canonicalInfo.isSymbolicLink() || !canonicalInfo.isDirectory())
|
|
157
|
+
throw new TypeError("Hitch state root is unsafe");
|
|
158
|
+
return canonical;
|
|
159
|
+
}
|
|
160
|
+
function hasExplicitV2Losses(value) {
|
|
161
|
+
return Boolean(value && typeof value === "object" && !Array.isArray(value)
|
|
162
|
+
&& value.schema_version === "2"
|
|
163
|
+
&& Array.isArray(value.losses)
|
|
164
|
+
&& value.losses.length > 0);
|
|
165
|
+
}
|
|
166
|
+
function hasRetiredCredentialRedactions(value) {
|
|
167
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
168
|
+
return true;
|
|
169
|
+
const redactions = value.redactions;
|
|
170
|
+
if (!Array.isArray(redactions))
|
|
171
|
+
return true;
|
|
172
|
+
return redactions.some((entry) => Boolean(entry && typeof entry === "object" && !Array.isArray(entry)
|
|
173
|
+
&& entry.rule_id === "known-credential-value-v1"));
|
|
174
|
+
}
|
|
175
|
+
async function resolveSource(evalDirectory, trialId, attempt, requested) {
|
|
176
|
+
const candidates = [
|
|
177
|
+
path.posix.join("harbor", "job", trialId),
|
|
178
|
+
path.posix.join("harbor", `attempt-${String(attempt).padStart(4, "0")}`, "job", trialId),
|
|
179
|
+
];
|
|
180
|
+
if (requested !== undefined) {
|
|
181
|
+
const normalized = validateRelativePath(requested, "verifier repair source");
|
|
182
|
+
if (!candidates.includes(normalized)) {
|
|
183
|
+
throw repairError("verifier repair source is outside the run's known Harbor trial paths", "verifier_diagnostic_repair_source_mismatch");
|
|
184
|
+
}
|
|
185
|
+
await safeRelativeDirectory(evalDirectory, normalized).catch((error) => {
|
|
186
|
+
if (error.code === "ENOENT") {
|
|
187
|
+
throw repairError("Harbor verifier diagnostic source is missing", "verifier_diagnostic_repair_source_unavailable");
|
|
188
|
+
}
|
|
189
|
+
throw error;
|
|
190
|
+
});
|
|
191
|
+
return normalized;
|
|
192
|
+
}
|
|
193
|
+
const available = [];
|
|
194
|
+
for (const candidate of candidates) {
|
|
195
|
+
try {
|
|
196
|
+
await safeRelativeDirectory(evalDirectory, candidate);
|
|
197
|
+
available.push(candidate);
|
|
198
|
+
}
|
|
199
|
+
catch (error) {
|
|
200
|
+
if (error.code !== "ENOENT")
|
|
201
|
+
throw error;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
if (available.length === 0)
|
|
205
|
+
throw repairError("Harbor verifier diagnostic source is missing", "verifier_diagnostic_repair_source_unavailable");
|
|
206
|
+
if (available.length > 1)
|
|
207
|
+
throw repairError("Harbor verifier diagnostic source is ambiguous", "verifier_diagnostic_repair_source_ambiguous");
|
|
208
|
+
return available[0];
|
|
209
|
+
}
|
|
210
|
+
async function safeRelativeDirectory(root, relative) {
|
|
211
|
+
const normalized = validateRelativePath(relative, "verifier repair source");
|
|
212
|
+
const canonicalRoot = await safeDirectory(root, "eval");
|
|
213
|
+
let current = canonicalRoot;
|
|
214
|
+
for (const segment of normalized.split("/")) {
|
|
215
|
+
current = path.join(current, segment);
|
|
216
|
+
const info = await lstat(current);
|
|
217
|
+
if (info.isSymbolicLink() || !info.isDirectory())
|
|
218
|
+
throw new TypeError("verifier repair source path is unsafe");
|
|
219
|
+
if (await realpath(current) !== path.resolve(current))
|
|
220
|
+
throw new TypeError("verifier repair source path is unsafe");
|
|
221
|
+
}
|
|
222
|
+
return current;
|
|
223
|
+
}
|
|
224
|
+
async function safeDirectory(directory, label) {
|
|
225
|
+
const info = await lstat(directory);
|
|
226
|
+
if (info.isSymbolicLink() || !info.isDirectory())
|
|
227
|
+
throw new TypeError(`${label} directory is unsafe`);
|
|
228
|
+
const canonical = await realpath(directory);
|
|
229
|
+
if (canonical !== path.resolve(directory))
|
|
230
|
+
throw new TypeError(`${label} directory is unsafe`);
|
|
231
|
+
return canonical;
|
|
232
|
+
}
|
|
233
|
+
async function ensureSafeRelativeDirectory(root, relative) {
|
|
234
|
+
const normalized = validateRelativePath(relative, "Hitch state directory");
|
|
235
|
+
let current = await safeDirectory(root, "Hitch state root");
|
|
236
|
+
for (const segment of normalized.split("/")) {
|
|
237
|
+
current = path.join(current, segment);
|
|
238
|
+
try {
|
|
239
|
+
await mkdir(current, { mode: 0o700 });
|
|
240
|
+
}
|
|
241
|
+
catch (error) {
|
|
242
|
+
if (error.code !== "EEXIST")
|
|
243
|
+
throw error;
|
|
244
|
+
}
|
|
245
|
+
const info = await lstat(current);
|
|
246
|
+
if (info.isSymbolicLink() || !info.isDirectory() || await realpath(current) !== path.resolve(current)) {
|
|
247
|
+
throw new TypeError("Hitch state directory is unsafe");
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return current;
|
|
251
|
+
}
|
|
252
|
+
async function readContained(root, relative, maximumBytes) {
|
|
253
|
+
const opened = await openContainedRegularFile(root, relative, maximumBytes);
|
|
254
|
+
try {
|
|
255
|
+
const bytes = Buffer.allocUnsafe(opened.size);
|
|
256
|
+
let position = 0;
|
|
257
|
+
while (position < bytes.length) {
|
|
258
|
+
const read = await opened.handle.read(bytes, position, bytes.length - position, position);
|
|
259
|
+
if (read.bytesRead === 0)
|
|
260
|
+
throw new TypeError("verifier diagnostic repair evidence changed while being read");
|
|
261
|
+
position += read.bytesRead;
|
|
262
|
+
}
|
|
263
|
+
if ((await opened.handle.read(Buffer.allocUnsafe(1), 0, 1, bytes.length)).bytesRead !== 0) {
|
|
264
|
+
throw new TypeError("verifier diagnostic repair evidence changed while being read");
|
|
265
|
+
}
|
|
266
|
+
await opened.assertUnchanged();
|
|
267
|
+
return bytes;
|
|
268
|
+
}
|
|
269
|
+
finally {
|
|
270
|
+
await opened.handle.close();
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
function repairError(message, code, cause) {
|
|
274
|
+
return new HitchError(message, { code, exitCode: 12, ...(cause === undefined ? {} : { cause }) });
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=verifier-diagnostic-repair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifier-diagnostic-repair.js","sourceRoot":"","sources":["../../../src/evals/verifier-diagnostic-repair.ts"],"names":[],"mappings":"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"}
|
package/dist/src/runs/index.js
CHANGED
|
@@ -5,8 +5,9 @@ export { sealTerminalManifest } from "./finalizer.js";
|
|
|
5
5
|
export { executeRun } from "./executor.js";
|
|
6
6
|
export { createQueuedRun } from "./queued.js";
|
|
7
7
|
export { canonicalJSON, isTerminal, loadRunRecord, projectRunRecord, sha256Bytes, sha256JSON, trajectoryRefV2 } from "./records.js";
|
|
8
|
-
export { loadVerifierEvidence, MAX_VERIFIER_ARTIFACT_OUTPUT_BYTES, MAX_VERIFIER_RESULT_BYTES } from "./verifier-evidence.js";
|
|
9
|
-
export { sanitizeVerifierJson } from "./verifier-evidence-redaction.js";
|
|
8
|
+
export { loadVerifierDiagnosticPage, loadVerifierEvidence, MAX_VERIFIER_ARTIFACT_OUTPUT_BYTES, MAX_VERIFIER_DIAGNOSTIC_PAGE_BYTES, MAX_VERIFIER_RESULT_BYTES } from "./verifier-evidence.js";
|
|
9
|
+
export { sanitizeVerifierJson, sanitizeVerifierText } from "./verifier-evidence-redaction.js";
|
|
10
|
+
export { legacyIndexNeedsDiagnosticRepair, loadVerifierDiagnosticSupplement, sourceIdentitiesFromLegacyIndex, verifierDiagnosticSupplementBase, verifierDiagnosticSupplementRelative } from "./verifier-diagnostic-supplement.js";
|
|
10
11
|
export { benchmarkTaskDigest, benchmarkVerifierIdentity, defaultModelIdentity, inferModelProvider, looksImmutableModelId } from "./identity.js";
|
|
11
12
|
export { queryRuns, rebuildRunIndexes } from "./query.js";
|
|
12
13
|
export { compareRunRecords, compareRuns } from "./compare.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAErF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpI,OAAO,EAAE,oBAAoB,EAAE,kCAAkC,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAErF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpI,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,kCAAkC,EAAE,kCAAkC,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAE7L,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AAC9F,OAAO,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,+BAA+B,EAAE,gCAAgC,EAAE,oCAAoC,EAAE,MAAM,qCAAqC,CAAC;AAElO,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAChJ,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACtG,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,2BAA2B,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAElG,OAAO,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAEhH,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { lstat } from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { validateRelativePath } from "../domain/index.js";
|
|
4
|
+
import { openContainedRegularFile, sha256Bytes } from "../foundation/index.js";
|
|
5
|
+
import { sanitizeVerifierJson, sanitizeVerifierText } from "./verifier-evidence-redaction.js";
|
|
6
|
+
export const VERIFIER_DIAGNOSTICS_INDEX_REF = "verifier/diagnostics.json";
|
|
7
|
+
export const VERIFIER_DIAGNOSTIC_ARTIFACT_NAMES = [
|
|
8
|
+
"ctrf.json", "test-stdout.txt", "test-stderr.txt", "stdout.txt", "stderr.txt",
|
|
9
|
+
];
|
|
10
|
+
const MAX_DIAGNOSTICS_INDEX_BYTES = 1024 * 1024;
|
|
11
|
+
const MAX_PERSISTED_VERIFIER_ARTIFACT_BYTES = 16 * 1024 * 1024;
|
|
12
|
+
/** Reads and validates one diagnostic store for both inspect previews and page delivery. */
|
|
13
|
+
export async function readVerifierDiagnosticStorage(runRoot, credentialValues) {
|
|
14
|
+
const indexFile = path.join(runRoot, ...VERIFIER_DIAGNOSTICS_INDEX_REF.split("/"));
|
|
15
|
+
return await exists(indexFile)
|
|
16
|
+
? await readIndexedStorage(runRoot, credentialValues)
|
|
17
|
+
: await readLegacyStorage(runRoot, credentialValues);
|
|
18
|
+
}
|
|
19
|
+
async function readIndexedStorage(runRoot, credentialValues) {
|
|
20
|
+
const indexBytes = await secureRead(runRoot, VERIFIER_DIAGNOSTICS_INDEX_REF, MAX_DIAGNOSTICS_INDEX_BYTES);
|
|
21
|
+
const index = asRecord(JSON.parse(indexBytes.toString("utf8")), "verifier diagnostics index");
|
|
22
|
+
const version = index.schema_version;
|
|
23
|
+
if ((version !== "1" && version !== "2") || index.kind !== "verifier-diagnostics"
|
|
24
|
+
|| !Array.isArray(index.artifacts) || !Array.isArray(index.redactions)
|
|
25
|
+
|| version === "2" && (!Array.isArray(index.losses)
|
|
26
|
+
|| !Number.isSafeInteger(index.hard_cap_bytes) || Number(index.hard_cap_bytes) <= 0
|
|
27
|
+
|| Number(index.hard_cap_bytes) > MAX_PERSISTED_VERIFIER_ARTIFACT_BYTES)) {
|
|
28
|
+
throw new TypeError("verifier diagnostics index is invalid");
|
|
29
|
+
}
|
|
30
|
+
const redactions = new Map();
|
|
31
|
+
const seen = new Set();
|
|
32
|
+
for (const raw of index.redactions) {
|
|
33
|
+
const rule = asRecord(raw, "verifier diagnostics redaction");
|
|
34
|
+
exactFields(rule, ["rule_id", "count"], "verifier diagnostics redaction");
|
|
35
|
+
if (typeof rule.rule_id !== "string" || !/^[a-z0-9][a-z0-9._-]{0,127}$/.test(rule.rule_id)
|
|
36
|
+
|| !Number.isSafeInteger(rule.count) || Number(rule.count) < 1
|
|
37
|
+
|| seen.has(`redaction:${rule.rule_id}`)) {
|
|
38
|
+
throw new TypeError("verifier diagnostics redaction is invalid");
|
|
39
|
+
}
|
|
40
|
+
seen.add(`redaction:${rule.rule_id}`);
|
|
41
|
+
increment(redactions, rule.rule_id, Number(rule.count));
|
|
42
|
+
}
|
|
43
|
+
const artifacts = [];
|
|
44
|
+
for (const raw of index.artifacts) {
|
|
45
|
+
const artifact = asRecord(raw, "verifier diagnostic artifact");
|
|
46
|
+
exactFields(artifact, [
|
|
47
|
+
"name", "ref", "media_type", "source_bytes", "source_sha256", "bytes", "sha256",
|
|
48
|
+
"stored_bytes", "stored_sha256", "truncated",
|
|
49
|
+
], "verifier diagnostic artifact");
|
|
50
|
+
const name = artifact.name;
|
|
51
|
+
if (!VERIFIER_DIAGNOSTIC_ARTIFACT_NAMES.includes(name) || seen.has(name) || artifact.ref !== `verifier/${name}`) {
|
|
52
|
+
throw new TypeError("verifier diagnostic artifact identity is invalid");
|
|
53
|
+
}
|
|
54
|
+
seen.add(name);
|
|
55
|
+
const mediaType = mediaTypeFor(name);
|
|
56
|
+
if (artifact.media_type !== mediaType)
|
|
57
|
+
throw new TypeError("verifier diagnostic artifact media type is invalid");
|
|
58
|
+
const availableBytes = nonNegativeInteger(artifact.bytes, "verifier diagnostic bytes");
|
|
59
|
+
const availableDigest = sha256Value(artifact.sha256, "verifier diagnostic digest");
|
|
60
|
+
nonNegativeInteger(artifact.source_bytes, "source verifier diagnostic bytes");
|
|
61
|
+
sha256Value(artifact.source_sha256, "source verifier diagnostic digest");
|
|
62
|
+
const storedBytes = nonNegativeInteger(artifact.stored_bytes, "stored verifier diagnostic bytes");
|
|
63
|
+
const storedDigest = sha256Value(artifact.stored_sha256, "stored verifier diagnostic digest");
|
|
64
|
+
if (typeof artifact.truncated !== "boolean" || version === "2" && artifact.truncated !== false
|
|
65
|
+
|| storedBytes > MAX_PERSISTED_VERIFIER_ARTIFACT_BYTES) {
|
|
66
|
+
throw new TypeError("stored verifier diagnostic exceeds its persistence limit");
|
|
67
|
+
}
|
|
68
|
+
const stored = await secureRead(runRoot, String(artifact.ref), MAX_PERSISTED_VERIFIER_ARTIFACT_BYTES);
|
|
69
|
+
if (stored.length !== storedBytes || sha256Bytes(stored) !== storedDigest) {
|
|
70
|
+
throw new TypeError("stored verifier diagnostic integrity mismatch");
|
|
71
|
+
}
|
|
72
|
+
if (artifact.truncated === false && (availableBytes !== storedBytes || availableDigest !== storedDigest)) {
|
|
73
|
+
throw new TypeError("complete verifier diagnostic metadata mismatch");
|
|
74
|
+
}
|
|
75
|
+
const bytes = sanitizeArtifact(stored, mediaType, artifact.truncated === false, credentialValues, redactions);
|
|
76
|
+
artifacts.push({
|
|
77
|
+
name,
|
|
78
|
+
mediaType,
|
|
79
|
+
bytes,
|
|
80
|
+
sha256: sha256Bytes(bytes),
|
|
81
|
+
sourceComplete: artifact.truncated === false,
|
|
82
|
+
...(artifact.truncated === true ? { lossReason: "legacy_truncated" } : {}),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
if (version === "2") {
|
|
86
|
+
for (const raw of index.losses) {
|
|
87
|
+
const loss = asRecord(raw, "unavailable verifier diagnostic");
|
|
88
|
+
exactFields(loss, [
|
|
89
|
+
"name", "media_type", "source_bytes", ...(loss.source_sha256 === undefined ? [] : ["source_sha256"]),
|
|
90
|
+
"loss_reason", "persistence_limit_bytes",
|
|
91
|
+
], "unavailable verifier diagnostic");
|
|
92
|
+
const name = loss.name;
|
|
93
|
+
if (!VERIFIER_DIAGNOSTIC_ARTIFACT_NAMES.includes(name) || seen.has(name)) {
|
|
94
|
+
throw new TypeError("unavailable verifier diagnostic identity is invalid");
|
|
95
|
+
}
|
|
96
|
+
seen.add(name);
|
|
97
|
+
const mediaType = mediaTypeFor(name);
|
|
98
|
+
if (loss.media_type !== mediaType
|
|
99
|
+
|| (loss.loss_reason !== "persistence_limit_exceeded" && loss.loss_reason !== "invalid_json")) {
|
|
100
|
+
throw new TypeError("unavailable verifier diagnostic metadata is invalid");
|
|
101
|
+
}
|
|
102
|
+
nonNegativeInteger(loss.source_bytes, "unavailable verifier diagnostic source bytes");
|
|
103
|
+
if (loss.source_sha256 !== undefined) {
|
|
104
|
+
sha256Value(loss.source_sha256, "unavailable verifier diagnostic source digest");
|
|
105
|
+
}
|
|
106
|
+
const persistenceLimit = nonNegativeInteger(loss.persistence_limit_bytes, "verifier diagnostic persistence limit");
|
|
107
|
+
if (persistenceLimit < 1 || persistenceLimit > MAX_PERSISTED_VERIFIER_ARTIFACT_BYTES) {
|
|
108
|
+
throw new TypeError("unavailable verifier diagnostic persistence limit is invalid");
|
|
109
|
+
}
|
|
110
|
+
const bytes = Buffer.alloc(0);
|
|
111
|
+
artifacts.push({
|
|
112
|
+
name,
|
|
113
|
+
mediaType,
|
|
114
|
+
bytes,
|
|
115
|
+
sha256: sha256Bytes(bytes),
|
|
116
|
+
sourceComplete: false,
|
|
117
|
+
lossReason: loss.loss_reason,
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return { artifacts, redactions };
|
|
122
|
+
}
|
|
123
|
+
async function readLegacyStorage(runRoot, credentialValues) {
|
|
124
|
+
const artifacts = [];
|
|
125
|
+
const redactions = new Map();
|
|
126
|
+
for (const name of VERIFIER_DIAGNOSTIC_ARTIFACT_NAMES) {
|
|
127
|
+
const ref = `verifier/${name}`;
|
|
128
|
+
if (!await exists(path.join(runRoot, ...ref.split("/"))))
|
|
129
|
+
continue;
|
|
130
|
+
const mediaType = mediaTypeFor(name);
|
|
131
|
+
let raw;
|
|
132
|
+
try {
|
|
133
|
+
raw = await secureRead(runRoot, ref, MAX_PERSISTED_VERIFIER_ARTIFACT_BYTES);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
if (error?.message !== "contained file exceeds its limit")
|
|
137
|
+
throw error;
|
|
138
|
+
const bytes = Buffer.alloc(0);
|
|
139
|
+
artifacts.push({
|
|
140
|
+
name, mediaType, bytes, sha256: sha256Bytes(bytes), sourceComplete: false,
|
|
141
|
+
lossReason: "persistence_limit_exceeded",
|
|
142
|
+
});
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
const bytes = sanitizeArtifact(raw, mediaType, mediaType === "application/json", credentialValues, redactions);
|
|
146
|
+
artifacts.push({ name, mediaType, bytes, sha256: sha256Bytes(bytes), sourceComplete: true });
|
|
147
|
+
}
|
|
148
|
+
return { artifacts, redactions };
|
|
149
|
+
}
|
|
150
|
+
function sanitizeArtifact(stored, mediaType, parseJson, credentials, redactions) {
|
|
151
|
+
if (mediaType === "application/json" && parseJson) {
|
|
152
|
+
const parsed = JSON.parse(stored.toString("utf8"));
|
|
153
|
+
if (!isJsonValue(parsed))
|
|
154
|
+
throw new TypeError("CTRF artifact is not JSON data");
|
|
155
|
+
const safe = sanitizeVerifierJson(parsed, credentials);
|
|
156
|
+
mergeCounts(redactions, safe.redactions);
|
|
157
|
+
return Buffer.from(JSON.stringify(safe.value), "utf8");
|
|
158
|
+
}
|
|
159
|
+
const safe = sanitizeVerifierText(stored.toString("utf8"), credentials);
|
|
160
|
+
mergeCounts(redactions, safe.redactions);
|
|
161
|
+
return Buffer.from(safe.text, "utf8");
|
|
162
|
+
}
|
|
163
|
+
function mediaTypeFor(name) {
|
|
164
|
+
return name === "ctrf.json" ? "application/json" : "text/plain";
|
|
165
|
+
}
|
|
166
|
+
async function secureRead(root, ref, maxBytes) {
|
|
167
|
+
const relative = validateRelativePath(ref, "verifier diagnostic ref");
|
|
168
|
+
const opened = await openContainedRegularFile(root, relative, maxBytes);
|
|
169
|
+
try {
|
|
170
|
+
const bytes = Buffer.allocUnsafe(opened.size);
|
|
171
|
+
let position = 0;
|
|
172
|
+
while (position < bytes.length) {
|
|
173
|
+
const read = await opened.handle.read(bytes, position, bytes.length - position, position);
|
|
174
|
+
if (read.bytesRead === 0)
|
|
175
|
+
throw new TypeError(`${path.basename(ref)} changed while being read`);
|
|
176
|
+
position += read.bytesRead;
|
|
177
|
+
}
|
|
178
|
+
if ((await opened.handle.read(Buffer.allocUnsafe(1), 0, 1, bytes.length)).bytesRead !== 0) {
|
|
179
|
+
throw new TypeError(`${path.basename(ref)} changed while being read`);
|
|
180
|
+
}
|
|
181
|
+
await opened.assertUnchanged();
|
|
182
|
+
return bytes;
|
|
183
|
+
}
|
|
184
|
+
finally {
|
|
185
|
+
await opened.handle.close();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
function nonNegativeInteger(value, label) {
|
|
189
|
+
if (!Number.isSafeInteger(value) || Number(value) < 0)
|
|
190
|
+
throw new TypeError(`${label} is invalid`);
|
|
191
|
+
return Number(value);
|
|
192
|
+
}
|
|
193
|
+
function sha256Value(value, label) {
|
|
194
|
+
if (typeof value !== "string" || !/^sha256:[0-9a-f]{64}$/.test(value))
|
|
195
|
+
throw new TypeError(`${label} is invalid`);
|
|
196
|
+
return value;
|
|
197
|
+
}
|
|
198
|
+
function asRecord(value, label) {
|
|
199
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
200
|
+
throw new TypeError(`${label} must be an object`);
|
|
201
|
+
return value;
|
|
202
|
+
}
|
|
203
|
+
function exactFields(record, allowed, label) {
|
|
204
|
+
const fields = new Set(allowed);
|
|
205
|
+
const unexpected = Object.keys(record).find((field) => !fields.has(field));
|
|
206
|
+
if (unexpected)
|
|
207
|
+
throw new TypeError(`${label} has unknown field: ${unexpected}`);
|
|
208
|
+
}
|
|
209
|
+
function isJsonValue(value) {
|
|
210
|
+
if (value === null || typeof value === "string" || typeof value === "boolean")
|
|
211
|
+
return true;
|
|
212
|
+
if (typeof value === "number")
|
|
213
|
+
return Number.isFinite(value);
|
|
214
|
+
if (Array.isArray(value))
|
|
215
|
+
return value.every(isJsonValue);
|
|
216
|
+
return Boolean(value) && typeof value === "object"
|
|
217
|
+
&& Object.values(value).every(isJsonValue);
|
|
218
|
+
}
|
|
219
|
+
function mergeCounts(target, source) {
|
|
220
|
+
for (const [rule, count] of source)
|
|
221
|
+
increment(target, rule, count);
|
|
222
|
+
}
|
|
223
|
+
function increment(counts, rule, count = 1) {
|
|
224
|
+
counts.set(rule, (counts.get(rule) ?? 0) + count);
|
|
225
|
+
}
|
|
226
|
+
async function exists(file) {
|
|
227
|
+
try {
|
|
228
|
+
await lstat(file);
|
|
229
|
+
return true;
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
if (error.code === "ENOENT")
|
|
233
|
+
return false;
|
|
234
|
+
throw error;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=verifier-diagnostic-storage.js.map
|