Slim repo Face turn protocol

This commit is contained in:
Meta Vens 2026-05-21 10:43:26 +01:00
commit ce05843eb0
13 changed files with 117 additions and 88 deletions

View file

@ -21,7 +21,9 @@ const scenarios = [
expect: {
mustUseAnyTool: ["read_repo_face_state"],
mustUseOneOf: ["search_history", "search_sources"],
mustContainOneOf: ["SAY", "BIFROST TOPIC"],
mustContainOneOf: ["wavecrafter", "Wavecrafter"],
mustNotContainBlocks: ["SAY", "BIFROST TOPIC"],
mustNotContain: ["VOIDBOT_REPO_IDENTITY_POST", "VOIDBOT_REPO_IDENTITY_BIFROST_TOPIC"],
mustNotUseTools: ["post_repo_identity_message", "apply_repo_face_state_operation"],
},
},
@ -31,8 +33,9 @@ const scenarios = [
prompt: readPrompt("smoke-repo-face-aqua-work-request-route.prompt.md"),
expect: {
mustUseAnyTool: ["read_repo_face_state", "search_sources"],
mustContainOneOf: ["BIFROST TOPIC"],
mustNotContain: ["SAY", "VOIDBOT_REPO_IDENTITY_POST"],
mustContainOneOf: ["Bifrost", "bifrost", "witness"],
mustNotContainBlocks: ["SAY", "BIFROST TOPIC"],
mustNotContain: ["VOIDBOT_REPO_IDENTITY_POST", "VOIDBOT_REPO_IDENTITY_BIFROST_TOPIC"],
mustNotUseTools: ["post_repo_identity_message", "apply_repo_face_state_operation"],
},
},
@ -42,7 +45,8 @@ const scenarios = [
prompt: readPrompt("smoke-repo-face-libby-private-inspectability.prompt.md"),
expect: {
mustUseAnyTool: ["read_repo_face_state"],
mustNotContain: ["SAY", "BIFROST TOPIC", "UPDATE REQUEST", "VOIDBOT_REPO_IDENTITY_POST", "VOIDBOT_REPO_IDENTITY_BIFROST_TOPIC", "VOIDBOT_REPO_IDENTITY_UPDATE_REQUEST"],
mustNotContainBlocks: ["SAY", "BIFROST TOPIC", "UPDATE REQUEST"],
mustNotContain: ["VOIDBOT_REPO_IDENTITY_POST", "VOIDBOT_REPO_IDENTITY_BIFROST_TOPIC", "VOIDBOT_REPO_IDENTITY_UPDATE_REQUEST"],
mustNotUseTools: ["post_repo_identity_message", "apply_repo_face_state_operation"],
},
},
@ -258,6 +262,12 @@ function evaluateScenario(scenario, result) {
failures.push(`final text should not contain ${text}`);
}
}
const dslBlocks = parseDslBlocks(result.finalText);
for (const kind of scenario.expect.mustNotContainBlocks ?? []) {
if (dslBlocks.some((block) => block.kind === kind)) {
failures.push(`final text should not contain ${kind} block`);
}
}
return failures;
}