Complete six-command Epiphany operator surface

This commit is contained in:
Meta Vens 2026-07-19 15:01:28 +01:00
commit 329e33bda0
6 changed files with 173 additions and 12 deletions

View file

@ -155,6 +155,21 @@ export const commandDefinitions = [
.setRequired(true)
.setMaxLength(2000),
),
)
.addSubcommand((command) =>
command.setName("reviews").setDescription("List bounded identities of current Mind review candidates."),
)
.addSubcommand((command) =>
command
.setName("review")
.setDescription("Commit a disposition for one exact current Mind candidate.")
.addStringOption((option) => option.setName("mind-request-id").setDescription("Exact Mind request identity.").setRequired(true).setMaxLength(256))
.addStringOption((option) => option.setName("candidate-id").setDescription("Exact candidate identity.").setRequired(true).setMaxLength(256))
.addStringOption((option) => option.setName("candidate-sha256").setDescription("Exact candidate SHA-256 hex digest.").setRequired(true).setMinLength(64).setMaxLength(64))
.addIntegerOption((option) => option.setName("model-revision").setDescription("Expected canonical model revision.").setRequired(true).setMinValue(0))
.addStringOption((option) => option.setName("model-hash").setDescription("Expected canonical model SHA-256 hex hash.").setRequired(true).setMinLength(64).setMaxLength(64))
.addStringOption((option) => option.setName("decision").setDescription("Mind disposition.").setRequired(true)
.addChoices({ name: "Adopt", value: "adopt" }, { name: "Refuse", value: "refuse" }, { name: "Hold", value: "hold" })),
),
];
@ -170,6 +185,18 @@ export function epiphanyOperatorCommandFromInteraction(
return { kind: "wake" };
case "direct":
return { kind: "directive", objective: interaction.options.getString("objective", true) };
case "reviews":
return { kind: "reviews" };
case "review":
return {
kind: "review",
mindRequestId: interaction.options.getString("mind-request-id", true),
candidateId: interaction.options.getString("candidate-id", true),
candidateSha256: interaction.options.getString("candidate-sha256", true),
expectedModelRevision: interaction.options.getInteger("model-revision", true),
expectedModelHash: interaction.options.getString("model-hash", true),
decision: interaction.options.getString("decision", true) as "adopt" | "refuse" | "hold",
};
default:
throw new Error("Unsupported Epiphany operator subcommand.");
}

View file

@ -38,6 +38,7 @@
"agents:speech-boundary-smoke": "tsx scripts/smoke-repo-face-speech-boundary.ts",
"agents:persona-feedback-observation-smoke": "tsx scripts/smoke-persona-feedback-observation.ts",
"agents:epiphany-operator-request-smoke": "tsx scripts/smoke-epiphany-operator-request.ts",
"agents:epiphany-operator-delivery-smoke": "tsx scripts/smoke-epiphany-operator-delivery.ts",
"agents:heartbeat-response-pressure-fixture": "tsx scripts/smoke-repo-face-response-pressure.ts",
"agents:initiative-engine-smoke": "tsx scripts/smoke-persona-initiative-engine.ts",
"agents:memory-projection-smoke": "node scripts/smoke-repo-face-memory-projection.mjs",

View file

@ -11,7 +11,7 @@ import {
} from "./epiphany-operator-request";
export const EPIPHANY_OPERATOR_DELIVERY_TYPE = "bifrost.discord.epiphany_operator_delivery";
export const EPIPHANY_OPERATOR_DELIVERY_SCHEMA = "bifrost.discord.epiphany_operator_delivery.v0";
export const EPIPHANY_OPERATOR_DELIVERY_SCHEMA = "bifrost.discord.epiphany_operator_delivery.v1";
export const EPIPHANY_OPERATOR_CHECKPOINT_TYPE = "voidbot.private.epiphany_operator_delivery_checkpoint";
export const EPIPHANY_OPERATOR_CHECKPOINT_SCHEMA = "voidbot.private.epiphany_operator_delivery_checkpoint.v0";
@ -20,7 +20,7 @@ const DELIVERY_KEYS = [
"discordGuildId", "discordChannelId", "discordInteractionId", "targetRuntimeId",
"status", "disposition", "failureCode", "detail", "sealedResultPayloadSha256",
"operatorStatus", "stateStatus", "coordinatorAction", "brakeStatus", "executorSignatureSha256",
"resultProviderIdentityId", "recordedAt", "privateStateExposed",
"resultProviderIdentityId", "reviews", "reviewCandidateId", "reviewDecision", "recordedAt", "privateStateExposed",
] as const;
const SHA256 = /^sha256-[0-9a-f]{64}$/;
@ -45,10 +45,23 @@ export interface EpiphanyOperatorDeliveryDocument {
sealedResultPayloadSha256: string;
executorSignatureSha256: string;
resultProviderIdentityId: string;
reviews: EpiphanyOperatorReviewSummary[];
reviewCandidateId: string;
reviewDecision: string;
recordedAt: string;
privateStateExposed: false;
}
export interface EpiphanyOperatorReviewSummary {
mindRequestId: string;
candidateId: string;
candidateSha256: string;
modelRevision: number;
modelHash: string;
frontierItemId: string;
requestedAt: string;
}
export interface EpiphanyOperatorDeliveryCheckpoint {
schemaVersion: typeof EPIPHANY_OPERATOR_CHECKPOINT_SCHEMA;
requestId: string;
@ -178,9 +191,12 @@ export async function processEpiphanyOperatorDelivery(
}
export function epiphanyOperatorRequestPayloadSha256(request: EpiphanyOperatorRequestDocument): string {
const compact = request.command.kind === "status" || request.command.kind === "wake"
const compact = request.command.kind === "status" || request.command.kind === "wake" || request.command.kind === "reviews"
? request.command.kind
: request.command.kind === "sleep" ? ["sleep", request.command.reason] : ["directive", request.command.objective];
: request.command.kind === "sleep" ? ["sleep", request.command.reason]
: request.command.kind === "directive" ? ["directive", request.command.objective]
: ["review", [request.command.mindRequestId, request.command.candidateId, request.command.candidateSha256,
request.command.expectedModelRevision, request.command.expectedModelHash, request.command.decision]];
const tuple = [request.schemaName, request.schemaVersion, request.requestId, request.commandId, request.nonce,
request.sourceEventId, request.sourceActorDiscordId, request.discordGuildId, request.discordChannelId,
request.discordMessageId, request.targetRuntimeId, request.issuedAt, request.expiresAt, request.producerId,
@ -190,12 +206,15 @@ export function epiphanyOperatorRequestPayloadSha256(request: EpiphanyOperatorRe
export function validateDelivery(value: unknown): EpiphanyOperatorDeliveryDocument {
if (!isRecord(value) || Object.keys(value).sort().join("\0") !== [...DELIVERY_KEYS].sort().join("\0")) throw new Error("delivery has an inexact field set");
for (const key of DELIVERY_KEYS) if (key !== "privateStateExposed" && typeof value[key] !== "string") throw new Error(`delivery ${key} must be a string`);
for (const key of DELIVERY_KEYS) if (key !== "privateStateExposed" && key !== "reviews" && typeof value[key] !== "string") throw new Error(`delivery ${key} must be a string`);
if (value.schemaVersion !== EPIPHANY_OPERATOR_DELIVERY_SCHEMA) throw new Error("delivery schema mismatch");
if (!required(value.deliveryId as string, "deliveryId") || value.deliveryId !== value.requestId) throw new Error("delivery identity mismatch");
if (!SHA256.test(value.requestPayloadSha256 as string)) throw new Error("request payload digest malformed");
if (value.targetRuntimeId !== EPIPHANY_OPERATOR_RUNTIME_ID) throw new Error("delivery runtime mismatch");
if (value.privateStateExposed !== false) throw new Error("delivery exposes private state");
if (!Array.isArray(value.reviews) || value.reviews.length > 10) throw new Error("delivery reviews must contain at most ten bounded summaries");
value.reviews.forEach(validateReviewSummary);
if (typeof value.reviewCandidateId !== "string" || typeof value.reviewDecision !== "string") throw new Error("delivery review disposition bindings must be strings");
if (typeof value.detail !== "string" || value.detail.length > 512) throw new Error("delivery detail exceeds 512 characters");
for (const key of ["operatorStatus", "stateStatus", "coordinatorAction", "brakeStatus"] as const) {
if (typeof value[key] !== "string" || value[key].length > 512) throw new Error(`delivery ${key} exceeds 512 characters`);
@ -206,7 +225,7 @@ export function validateDelivery(value: unknown): EpiphanyOperatorDeliveryDocume
if (value.failureCode !== "") throw new Error("completed delivery has a failure code");
} else if (value.status === "refused") {
if (!required(value.failureCode as string, "failureCode")) throw new Error("refused delivery lacks failure code");
if (value.disposition !== "" || value.operatorStatus !== "" || value.stateStatus !== "" || value.coordinatorAction !== "" || value.brakeStatus !== "" || value.sealedResultPayloadSha256 !== "" || value.executorSignatureSha256 !== "" || value.resultProviderIdentityId !== "") throw new Error("refused delivery carries completed-result bindings");
if (value.disposition !== "" || value.operatorStatus !== "" || value.stateStatus !== "" || value.coordinatorAction !== "" || value.brakeStatus !== "" || value.sealedResultPayloadSha256 !== "" || value.executorSignatureSha256 !== "" || value.resultProviderIdentityId !== "" || value.reviews.length || value.reviewCandidateId !== "" || value.reviewDecision !== "") throw new Error("refused delivery carries completed-result bindings");
} else throw new Error("delivery status is not terminal");
return value as unknown as EpiphanyOperatorDeliveryDocument;
}
@ -215,6 +234,13 @@ function validateBindings(delivery: EpiphanyOperatorDeliveryDocument, request: E
if (!request || request.schemaName !== EPIPHANY_OPERATOR_REQUEST_TYPE || request.schemaVersion !== EPIPHANY_OPERATOR_REQUEST_SCHEMA) throw new Error("exact operator request is unavailable");
if (delivery.requestId !== request.requestId || delivery.commandId !== request.commandId || delivery.discordGuildId !== request.discordGuildId || delivery.discordChannelId !== request.discordChannelId || delivery.discordInteractionId !== request.sourceEventId || delivery.targetRuntimeId !== request.targetRuntimeId) throw new Error("delivery does not bind the exact request");
if (delivery.requestPayloadSha256 !== epiphanyOperatorRequestPayloadSha256(request)) throw new Error("delivery request digest mismatch");
if (request.command.kind === "reviews") {
if (delivery.reviewCandidateId !== "" || delivery.reviewDecision !== "") throw new Error("Reviews delivery carries a decision binding");
} else if (request.command.kind === "review") {
if (delivery.reviews.length !== 0 || delivery.reviewCandidateId !== request.command.candidateId || delivery.reviewDecision !== request.command.decision) throw new Error("Review delivery does not bind the exact candidate and decision");
} else if (delivery.reviews.length !== 0 || delivery.reviewCandidateId !== "" || delivery.reviewDecision !== "") {
throw new Error("non-review delivery carries review state");
}
if (checkpoint.requestId !== request.requestId || checkpoint.discordGuildId !== request.discordGuildId || checkpoint.discordChannelId !== request.discordChannelId || checkpoint.discordInteractionId !== request.sourceEventId || checkpoint.targetRuntimeId !== request.targetRuntimeId) throw new Error("private interaction binding mismatch");
}
@ -226,7 +252,21 @@ function renderDelivery(delivery: EpiphanyOperatorDeliveryDocument, request: Epi
? [["Operator", delivery.operatorStatus], ["State", delivery.stateStatus], ["Coordinator", delivery.coordinatorAction], ["Brakes", delivery.brakeStatus]]
.filter((entry) => entry[1]).map(([label, value]) => `${label}: ${value}`).join("\n")
: "";
return `Epiphany ${command}: ${headline}.${detail}${statuses ? `\n${statuses}` : ""}\nBifrost reported this terminal result; VoidBot did not execute or inspect Epiphany state.`;
const reviews = request.command.kind === "reviews" && delivery.reviews.length
? `\n${delivery.reviews.map((review) => `- ${review.candidateId} | request ${review.mindRequestId} | revision ${review.modelRevision} | frontier ${review.frontierItemId}`).join("\n")}`
: "";
const decision = request.command.kind === "review" && delivery.reviewCandidateId
? `\nCandidate ${delivery.reviewCandidateId}: ${delivery.reviewDecision}` : "";
return `Epiphany ${command}: ${headline}.${detail}${statuses ? `\n${statuses}` : ""}${reviews}${decision}\nBifrost reported this terminal result; VoidBot did not execute or inspect Epiphany state.`;
}
function validateReviewSummary(value: unknown): void {
const keys = ["mindRequestId", "candidateId", "candidateSha256", "modelRevision", "modelHash", "frontierItemId", "requestedAt"];
if (!isRecord(value) || Object.keys(value).sort().join("\0") !== keys.sort().join("\0")) throw new Error("review summary has an inexact field set");
for (const key of ["mindRequestId", "candidateId", "frontierItemId"] as const) if (!required(value[key], key) || value[key].length > 256) throw new Error(`review summary ${key} is invalid`);
for (const key of ["candidateSha256", "modelHash"] as const) if (!/^[0-9a-f]{64}$/.test(value[key])) throw new Error(`review summary ${key} is invalid`);
if (!Number.isSafeInteger(value.modelRevision) || value.modelRevision < 0) throw new Error("review summary modelRevision is invalid");
if (!Number.isFinite(Date.parse(value.requestedAt))) throw new Error("review summary requestedAt is invalid");
}
function requestDefinition(define: any): unknown { return define({ type: EPIPHANY_OPERATOR_REQUEST_TYPE, schemaName: EPIPHANY_OPERATOR_REQUEST_TYPE, schemaId: EPIPHANY_OPERATOR_REQUEST_SCHEMA, schemaVersion: EPIPHANY_OPERATOR_REQUEST_SCHEMA, contentHash: EPIPHANY_OPERATOR_REQUEST_SCHEMA, global: false, name: "requestId", schema: { parse: (v: unknown) => v } }); }

View file

@ -2,7 +2,7 @@ import { createRequire } from "node:module";
import { resolve } from "node:path";
export const EPIPHANY_OPERATOR_REQUEST_TYPE = "voidbot.discord.epiphany_operator_request";
export const EPIPHANY_OPERATOR_REQUEST_SCHEMA = "voidbot.discord.epiphany_operator_request.v0";
export const EPIPHANY_OPERATOR_REQUEST_SCHEMA = "voidbot.discord.epiphany_operator_request.v1";
export const EPIPHANY_OPERATOR_RUNTIME_ID = "epiphany-yggdrasil";
const MAX_REASON_LENGTH = 500;
const MAX_OBJECTIVE_LENGTH = 2_000;
@ -12,7 +12,17 @@ export type EpiphanyOperatorCommand =
| { kind: "status" }
| { kind: "sleep"; reason: string }
| { kind: "wake" }
| { kind: "directive"; objective: string };
| { kind: "directive"; objective: string }
| { kind: "reviews" }
| {
kind: "review";
mindRequestId: string;
candidateId: string;
candidateSha256: string;
expectedModelRevision: number;
expectedModelHash: string;
decision: "adopt" | "refuse" | "hold";
};
export interface EpiphanyOperatorRequestInput {
interactionId: string;
@ -122,11 +132,36 @@ function validateCommand(command: EpiphanyOperatorCommand): EpiphanyOperatorComm
return { kind: "wake" };
case "directive":
return { kind: "directive", objective: boundedText(command.objective, "directive objective", MAX_OBJECTIVE_LENGTH) };
case "reviews":
return { kind: "reviews" };
case "review": {
const candidateSha256 = sha256(command.candidateSha256, "candidate sha256");
const expectedModelHash = sha256(command.expectedModelHash, "expected model hash");
if (!Number.isSafeInteger(command.expectedModelRevision) || command.expectedModelRevision < 0) {
throw new Error("expected model revision must be a non-negative safe integer.");
}
if (!["adopt", "refuse", "hold"].includes(command.decision)) throw new Error("review decision is invalid.");
return {
kind: "review",
mindRequestId: boundedText(command.mindRequestId, "Mind request id", 256),
candidateId: boundedText(command.candidateId, "candidate id", 256),
candidateSha256,
expectedModelRevision: command.expectedModelRevision,
expectedModelHash,
decision: command.decision,
};
}
default:
throw new Error("Unsupported Epiphany operator command.");
}
}
function sha256(value: string, label: string): string {
const normalized = value?.trim();
if (!/^[0-9a-f]{64}$/.test(normalized)) throw new Error(`${label} must be 64 lowercase hexadecimal characters.`);
return normalized;
}
function boundedText(value: string, label: string, maxLength: number): string {
const normalized = value?.trim();
if (!normalized) throw new Error(`${label} is required.`);

View file

@ -29,7 +29,7 @@ assert.notEqual(digest, epiphanyOperatorRequestPayloadSha256({ ...request, disco
assert.notEqual(digest, epiphanyOperatorRequestPayloadSha256({ ...request, command: { kind: "wake" } }));
const completed: EpiphanyOperatorDeliveryDocument = {
schemaVersion: "bifrost.discord.epiphany_operator_delivery.v0",
schemaVersion: "bifrost.discord.epiphany_operator_delivery.v1",
deliveryId: request.requestId, requestId: request.requestId, requestPayloadSha256: digest,
commandId: request.commandId, discordGuildId: request.discordGuildId,
discordChannelId: request.discordChannelId, discordInteractionId: request.sourceEventId,
@ -38,6 +38,7 @@ const completed: EpiphanyOperatorDeliveryDocument = {
coordinatorAction: "none", brakeStatus: "engaged",
sealedResultPayloadSha256: `sha256-${"a".repeat(64)}`,
executorSignatureSha256: `sha256-${"b".repeat(64)}`, resultProviderIdentityId: "bifrost-yggdrasil",
reviews: [], reviewCandidateId: "", reviewDecision: "",
recordedAt: "2026-07-19T12:00:01.000Z", privateStateExposed: false,
};
assert.equal(validateDelivery(completed).status, "completed");
@ -46,6 +47,7 @@ const refused: EpiphanyOperatorDeliveryDocument = {
...completed, status: "refused", disposition: "", failureCode: "brakes_engaged", detail: "refused",
operatorStatus: "", stateStatus: "", coordinatorAction: "", brakeStatus: "",
sealedResultPayloadSha256: "", executorSignatureSha256: "", resultProviderIdentityId: "",
reviews: [], reviewCandidateId: "", reviewDecision: "",
};
assert.equal(validateDelivery(refused).status, "refused");
@ -62,6 +64,8 @@ rejects({ deliveryId: "collision" }, /identity/);
rejects({ executorSignatureSha256: "signature-bytes" }, /sealed bindings/);
rejects({ resultProviderIdentityId: "" }, /resultProviderIdentityId|sealed bindings/);
rejects({ surprisePrivatePayload: "secret" }, /field set/);
rejects({ reviews: [{ mindRequestId: "m", candidateId: "c", candidateSha256: "1".repeat(64), modelRevision: 1, modelHash: "2".repeat(64), frontierItemId: "f", requestedAt: "2026-07-19T12:00:00Z", proposalText: "private" }] }, /inexact field set/);
rejects({ reviews: Array.from({ length: 11 }, () => ({ mindRequestId: "m", candidateId: "c", candidateSha256: "1".repeat(64), modelRevision: 1, modelHash: "2".repeat(64), frontierItemId: "f", requestedAt: "2026-07-19T12:00:00Z" })) }, /at most ten/);
assert.throws(() => validateDelivery({ ...refused, brakeStatus: "not empty" }), /completed-result bindings/);
assert.throws(() => validateDelivery({ ...refused, failureCode: "" }), /failureCode|failure code/);
@ -102,6 +106,43 @@ let collisionCheckpoint = { ...baseCheckpoint, observedDeliverySha256: `sha256-$
assert.equal(await processEpiphanyOperatorDelivery(completed, request, collisionCheckpoint, async () => { throw new Error("must not edit"); }, async (next) => { collisionCheckpoint = next; }), "failed");
assert.match(collisionCheckpoint.lastError, /collision/);
const reviewRequest = buildEpiphanyOperatorRequest({
interactionId: "interaction-review", actorDiscordId: "owner-1", guildId: "guild-1", channelId: "channel-1",
command: { kind: "reviews" }, issuedAt: "2026-07-19T12:00:00.000Z",
}, "voidbot-yggdrasil");
const reviewDelivery: EpiphanyOperatorDeliveryDocument = {
...completed,
deliveryId: reviewRequest.requestId, requestId: reviewRequest.requestId, commandId: reviewRequest.commandId,
discordInteractionId: reviewRequest.sourceEventId, requestPayloadSha256: epiphanyOperatorRequestPayloadSha256(reviewRequest),
reviews: [{ mindRequestId: "mind-1", candidateId: "candidate-1", candidateSha256: "1".repeat(64), modelRevision: 7,
modelHash: "2".repeat(64), frontierItemId: "frontier-1", requestedAt: "2026-07-19T11:59:00Z" }],
};
let renderedReview = "";
let reviewCheckpoint = { ...baseCheckpoint, requestId: reviewRequest.requestId, discordInteractionId: reviewRequest.sourceEventId };
assert.equal(await processEpiphanyOperatorDelivery(reviewDelivery, reviewRequest, reviewCheckpoint,
async (_app, _token, content) => { renderedReview = content; }, async (next) => { reviewCheckpoint = next; }), "responded");
assert.match(renderedReview, /candidate-1.*request mind-1.*revision 7.*frontier frontier-1/);
assert.doesNotMatch(renderedReview, /proposal|private|sha256/i);
let substitutedCheckpoint = { ...baseCheckpoint };
assert.equal(await processEpiphanyOperatorDelivery({ ...completed, reviews: reviewDelivery.reviews }, request, substitutedCheckpoint,
async () => { throw new Error("must not render substituted review state"); }, async (next) => { substitutedCheckpoint = next; }), "failed");
assert.match(substitutedCheckpoint.lastError, /non-review/);
const decisionRequest = buildEpiphanyOperatorRequest({
interactionId: "interaction-decision", actorDiscordId: "owner-1", guildId: "guild-1", channelId: "channel-1",
command: { kind: "review", mindRequestId: "mind-1", candidateId: "candidate-1", candidateSha256: "1".repeat(64),
expectedModelRevision: 7, expectedModelHash: "2".repeat(64), decision: "hold" }, issuedAt: "2026-07-19T12:00:00.000Z",
}, "voidbot-yggdrasil");
const decisionDelivery: EpiphanyOperatorDeliveryDocument = {
...completed, deliveryId: decisionRequest.requestId, requestId: decisionRequest.requestId, commandId: decisionRequest.commandId,
discordInteractionId: decisionRequest.sourceEventId, requestPayloadSha256: epiphanyOperatorRequestPayloadSha256(decisionRequest),
reviewCandidateId: "candidate-1", reviewDecision: "hold",
};
let decisionCheckpoint = { ...baseCheckpoint, requestId: decisionRequest.requestId, discordInteractionId: decisionRequest.sourceEventId };
assert.equal(await processEpiphanyOperatorDelivery({ ...decisionDelivery, reviewCandidateId: "candidate-2" }, decisionRequest, decisionCheckpoint,
async () => { throw new Error("must not render substituted decision"); }, async (next) => { decisionCheckpoint = next; }), "failed");
assert.match(decisionCheckpoint.lastError, /exact candidate and decision/);
const temp = await mkdtemp(join(tmpdir(), "voidbot-epiphany-delivery-"));
try {
const bifrostRoot = resolve("../Bifrost");

View file

@ -18,7 +18,16 @@ assert.equal(isExactDiscordOwner("tier-one-1", owner), false);
const epiphany = commandDefinitions.map((command) => command.toJSON()).find((command) => command.name === "epiphany");
assert.ok(epiphany, "slash command is registered");
assert.deepEqual(epiphany.options?.map((option) => option.name), ["status", "sleep", "wake", "direct"]);
assert.deepEqual(epiphany.options?.map((option) => option.name), ["status", "sleep", "wake", "direct", "reviews", "review"]);
const protocolPath = process.env.EPIPHANY_OPERATOR_PROTOCOL_FIXTURE
?? resolve("..", "EpiphanyAgent", ".epiphany-smoke", "operator-command-interop-rust", "protocol.json");
const protocol = JSON.parse(await readFile(protocolPath, "utf8"));
assert.equal(protocol.schemaVersion, "epiphany.operator_command.protocol_fixture.v1");
assert.equal(protocol.admissionSchemaVersion, "bifrost.operator_command.delivery.v1");
assert.equal(protocol.resultSchemaVersion, "epiphany.operator_command.result.v1");
assert.deepEqual(protocol.commands.map((command: { kind: string }) => command.kind), ["status", "sleep", "wake", "directive", "reviews", "review"]);
assert.deepEqual(protocol.reviewDecisions, ["adopt", "refuse", "hold"]);
const issuedAt = "2026-07-19T12:00:00.000Z";
const commands = [
@ -26,6 +35,8 @@ const commands = [
{ kind: "sleep", reason: "Operator is packing the workstation." } as const,
{ kind: "wake" } as const,
{ kind: "directive", objective: "Inspect the current domain map and propose the next bounded improvement." } as const,
{ kind: "reviews" } as const,
protocol.commands[5],
];
for (const [index, command] of commands.entries()) {
const id = `interaction-${index}`;
@ -80,6 +91,11 @@ await assert.rejects(
);
assert.throws(() => buildEpiphanyOperatorRequest({ ...input, command: { kind: "sleep", reason: "x".repeat(501) } }, "voidbot-yggdrasil"), /500/);
assert.throws(() => buildEpiphanyOperatorRequest({ ...input, command: { kind: "directive", objective: "x".repeat(2001) } }, "voidbot-yggdrasil"), /2000/);
const review = commands[5] as Extract<(typeof commands)[number], { kind: "review" }>;
assert.deepEqual(Object.keys(protocol.commands[5]).sort(), ["candidateId", "candidateSha256", "decision", "expectedModelHash", "expectedModelRevision", "kind", "mindRequestId"].sort());
assert.throws(() => buildEpiphanyOperatorRequest({ ...input, command: { ...review, candidateSha256: "0".repeat(63) } }, "voidbot-yggdrasil"), /64 lowercase/);
assert.throws(() => buildEpiphanyOperatorRequest({ ...input, command: { ...review, expectedModelRevision: -1 } }, "voidbot-yggdrasil"), /non-negative/);
assert.throws(() => buildEpiphanyOperatorRequest({ ...input, command: { ...review, decision: "approve" as "adopt" } }, "voidbot-yggdrasil"), /decision/);
const botSource = await readFile(resolve("apps/bot/src/discord-bot.ts"), "utf8");
const messageCreate = botSource.slice(botSource.indexOf("client.on(Events.MessageCreate"), botSource.indexOf("client.on(Events.MessageUpdate"));
@ -88,7 +104,8 @@ assert.ok(!messageCreate.includes("submitEpiphanyOperatorRequest"), "ordinary me
console.log(JSON.stringify({
schemaVersion: EPIPHANY_OPERATOR_REQUEST_SCHEMA,
commands: ["status", "sleep", "wake", "direct"],
commands: ["status", "sleep", "wake", "direct", "reviews", "review"],
rustProtocolFixtureConsumed: true,
exactOwnerOnly: true,
ordinaryMessagesRemainFeedbackOnly: true,
localExecutionAuthorized: false,