fix wrong herdr response parse + add labels and branch names to delegations
CI / verify (pull_request) Failing after 8s

This commit is contained in:
2026-09-17 21:32:26 +02:00
parent 5cf0beb74b
commit 9494936160
9 changed files with 291 additions and 38 deletions
+10 -4
View File
@@ -15,6 +15,7 @@ const root = join(temp, "root"),
destination = join(temp, "child"),
bin = join(temp, "bin"),
config = join(temp, "config");
const herdrCreation = join(temp, "herdr-creation.txt");
for (const path of [root, bin, config, join(temp, "plugin")]) await mkdir(path);
const signal = AbortSignal.timeout(120_000);
if ((await command([binary, "--version"], temp, signal)) !== "opencode v2.0.4")
@@ -41,17 +42,20 @@ const inventory = (path: string, id: string) =>
source: {
repo_key: join(root, ".git"),
repo_root: root,
source_checkout_path: path,
source_workspace_id: id,
source_checkout_path: root,
source_workspace_id: "w1",
},
worktrees: [
{ path, is_linked_worktree: path !== root, is_bare: false, open_workspace_id: id },
{ path: root, is_linked_worktree: false, is_bare: false, open_workspace_id: "w1" },
...(path === root
? []
: [{ path, is_linked_worktree: true, is_bare: false, open_workspace_id: id }]),
],
},
});
await writeFile(
join(bin, "herdr"),
`#!/bin/sh\ncase "$1 $2" in\n"worktree create") git -C '${root}' worktree add -b "$6" '${destination}' "$8" >&2 || exit 1; printf '{"result":{"workspace":{"workspace_id":"w2"},"worktree":{"path":"${destination}","branch":"%s","is_linked_worktree":true}}}' "$6"; exit ;;\nesac\ncase "$1 $2 $4" in\n"workspace list ") echo '{"result":{"workspaces":[{"workspace_id":"w1"}]}}' ;;\n"worktree list w1") echo '${inventory(root, "w1")}' ;;\n"worktree list w2") echo '${inventory(destination, "w2")}' ;;\n*) exit 9 ;;\nesac\n`,
`#!/bin/sh\ncase "$1 $2" in\n"worktree create") [ "$9" = "--label" ] && [ "\${10}" = "Fix native host" ] || exit 8; printf '%s\\n%s\\n' "$6" "\${10}" > '${herdrCreation}'; git -C '${root}' worktree add -b "$6" '${destination}' "$8" >&2 || exit 1; printf '{"result":{"workspace":{"workspace_id":"w2"},"worktree":{"path":"${destination}","branch":"%s","is_linked_worktree":true}}}' "$6"; exit ;;\nesac\ncase "$1 $2 $4" in\n"workspace list ") echo '{"result":{"workspaces":[{"workspace_id":"w1"}]}}' ;;\n"worktree list w1") echo '${inventory(root, "w1")}' ;;\n"worktree list w2") echo '${inventory(destination, "w2")}' ;;\n*) exit 9 ;;\nesac\n`,
);
await chmod(join(bin, "herdr"), 0o755);
const built = await Bun.build({
@@ -190,6 +194,8 @@ try {
.parse(JSON.parse(z.string().parse(result.output)));
if (!output.content.includes("FIXTURE_COMPLETE"))
throw new Error("Missing native child result");
if ((await readFile(herdrCreation, "utf8")) !== "fix/native-host\nFix native host\n")
throw new Error("Custom Herdr branch/label mismatch");
const child = await client.session.get({ sessionID: output.metadata.sessionID });
if (child.parentID !== parent.id || child.location.directory !== destination)
throw new Error("Child ancestry/placement mismatch");