fix(runner): include Hermes in Daytona image identity

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
DottaandPaperclip committed 2026-10-08 12:07:09 -05:00
1 parent 9e07748e91
commit 8c8e5e45f2
2 files changed
+10 -1

No files matched your search

+4 -1
View File
@@ -28,6 +28,9 @@ export const DAYTONA_IMAGE_INPUT_PATHS = [
"packages/paperclip-eval-kernel/src",
"packages/paperclip-eval-kernel/tsconfig.json",
"packages/paperclip-runner/scripts/provision-grok.mjs",
"packages/paperclip-runner/scripts/provision-hermes.mjs",
"packages/paperclip-runner/scripts/materialize-hermes.py",
"packages/paperclip-runner/acpx-profiles.json",
"packages/paperclip-runner/package.json",
"packages/paperclip-runner/cursor-distributions.json",
"packages/paperclip-runner/cursor-contract.json",
@@ -84,7 +87,7 @@ export interface DaytonaImageContentOptions {
export function normalizedDaytonaCandidateProviders(values: readonly string[]): string[] {
const selected = [...values].sort();
if (selected.some(value => !["cursor", "copilot", "pi"].includes(value))
if (selected.some(value => !["cursor", "copilot", "pi", "hermes"].includes(value))
|| new Set(selected).size !== selected.length) {
throw new Error("Daytona candidate providers must be distinct known ACP profiles");
}
+6
View File
@@ -200,6 +200,9 @@ describe("runner E2E Daytona image contract", () => {
"packages/paperclip-eval-kernel/src",
"packages/paperclip-runner/package.json",
"packages/paperclip-runner/scripts/candidate-provider-pack.mjs",
"packages/paperclip-runner/scripts/provision-hermes.mjs",
"packages/paperclip-runner/scripts/materialize-hermes.py",
"packages/paperclip-runner/acpx-profiles.json",
"packages/paperclip-runner/scripts/materialize-cursor-distribution.mjs",
"packages/paperclip-runner/scripts/cursor-runtime-patch.mjs",
"packages/paperclip-runner/cursor-distributions.json",
@@ -283,6 +286,9 @@ describe("runner E2E Daytona image contract", () => {
const baseline = await computeDaytonaImageContentId(options);
const candidate = await computeDaytonaImageContentId({ ...options, candidateProviders: ["pi"] });
expect(candidate).not.toBe(baseline);
const hermes = await computeDaytonaImageContentId({ ...options, candidateProviders: ["hermes"] });
expect(hermes).not.toBe(baseline);
expect(hermes).not.toBe(candidate);
expect(await computeDaytonaImageContentId({ ...options, candidateProviders: ["copilot", "pi"] }))
.toBe(await computeDaytonaImageContentId({ ...options, candidateProviders: ["pi", "copilot"] }));
await expect(computeDaytonaImageContentId({ ...options, candidateProviders: ["pi", "pi"] }))