earendil-works/pi · error · TypeError

Invalid eval artifact name: ${attachment.name}

Error message

Invalid eval artifact name: ${attachment.name}

What it means

Error "Invalid eval artifact name: ${attachment.name}" thrown in earendil-works/pi.

Source

Thrown at packages/evals/src/vitest-evals/artifacts.ts:104

export async function persistEvalArtifactReferences(
	artifacts: ReadonlyArray<TestArtifact>,
	runId: string,
	artifactDirectory: string,
): Promise<Array<{ name: string; path: string }>> {
	const references: Array<{ name: string; path: string }> = [];
	for (const artifact of artifacts) {
		if (
			(artifact.type !== "@earendil-works/pi-evals:session" &&
				artifact.type !== "@earendil-works/pi-evals:source") ||
			artifact.runId !== runId
		) {
			continue;
		}
		const category = artifact.type === "@earendil-works/pi-evals:session" ? "sessions" : "sources";
		for (const attachment of artifact.attachments) {
			const name = basename(attachment.name);
			if (name !== attachment.name) throw new TypeError(`Invalid eval artifact name: ${attachment.name}`);
			const directory = join(artifactDirectory, category, createHash("sha256").update(runId).digest("hex"));
			await mkdir(directory, { recursive: true, mode: 0o700 });
			const path = join(directory, name);
			await writeFile(path, attachment.body, { encoding: "utf8", mode: 0o600 });
			references.push({ name, path: relative(artifactDirectory, path) });
		}
	}
	return references;
}

View on GitHub (pinned to 4af9d21d3b)

When it happens

Trigger: Thrown at packages/evals/src/vitest-evals/artifacts.ts:104 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of earendil-works/pi@4af9d21d3b (2026-08-24). Data as JSON: /api/errors/67241b154b6f6c40. Report an issue: GitHub.