Files
pikasTech-unidesk/scripts/code-queue-steer-confirmation-contract-test.ts
T
2026-05-23 09:37:14 +00:00

87 lines
3.6 KiB
TypeScript

import { findSteerTraceConfirmation, steerDuplicateDecision, steerTraceText } from "../src/components/microservices/code-queue/src/steer-confirmation";
import type { QueueTask } from "../src/components/microservices/code-queue/src/types";
type JsonRecord = Record<string, unknown>;
function assertCondition(condition: unknown, message: string, detail: JsonRecord = {}): void {
if (!condition) throw new Error(`${message}: ${JSON.stringify(detail)}`);
}
function fixtureTask(): QueueTask {
const at = "2026-05-23T00:00:00.000Z";
return {
id: "codex_steer_confirm_fixture",
queueId: "default",
queueEnteredAt: at,
prompt: "base",
basePrompt: "base",
referenceTaskIds: [],
referenceInjection: null,
providerId: "D601",
cwd: "/workspace",
model: "gpt-5.5",
reasoningEffort: null,
executionMode: "default",
maxAttempts: 99,
status: "running",
createdAt: at,
updatedAt: at,
startedAt: at,
finishedAt: null,
readAt: null,
currentAttempt: 1,
currentMode: "initial",
codexThreadId: "thread_fixture",
activeTurnId: "turn_fixture",
finalResponse: "",
lastError: null,
lastJudge: null,
judgeFailCount: 0,
promptHistory: [],
output: [],
events: [],
attempts: [],
cancelRequested: false,
nextPrompt: null,
nextMode: null,
};
}
export function runCodeQueueSteerConfirmationContract(): JsonRecord {
const task = fixtureTask();
const steerId = "steer_contract_12345";
const prompt = "correct this running task";
task.output.push({ seq: 7, at: "2026-05-23T00:00:07.000Z", channel: "user", method: "turn/steer", itemId: steerId, text: steerTraceText(steerId, prompt) });
task.promptHistory.push({ seq: 7, at: "2026-05-23T00:00:07.000Z", method: "turn/steer", text: prompt, steerId });
const confirmation = findSteerTraceConfirmation(task, steerId);
assertCondition(confirmation.found === true && confirmation.accepted === true, "confirmation should find steer trace by steerId", confirmation as unknown as JsonRecord);
assertCondition(confirmation.matches.length === 1, "confirmation should coalesce promptHistory/output duplicates by seq", confirmation as unknown as JsonRecord);
assertCondition(confirmation.trace?.promptChars === prompt.length, "confirmation should expose prompt chars without prompt text", (confirmation.trace ?? {}) as unknown as JsonRecord);
assertCondition(JSON.stringify(confirmation).includes(prompt) === false, "confirmation must not echo prompt text", confirmation as unknown as JsonRecord);
const duplicate = steerDuplicateDecision(task, steerId, prompt);
assertCondition(duplicate.duplicate === true && duplicate.conflict === false, "same steerId and prompt should be duplicate-suppressed", duplicate as unknown as JsonRecord);
const conflict = steerDuplicateDecision(task, steerId, "different prompt");
assertCondition(conflict.duplicate === false && conflict.conflict === true, "same steerId with different prompt should be rejected as conflict", conflict as unknown as JsonRecord);
const missing = findSteerTraceConfirmation(task, "steer_missing_12345");
assertCondition(missing.found === false && missing.deliveryState === "unknown", "missing steerId should remain unknown", missing as unknown as JsonRecord);
return {
ok: true,
checks: [
"trace confirmation finds steer by steerId",
"promptHistory/output duplicate seq is coalesced",
"duplicate suppression requires same prompt hash",
"steerId conflict is detectable",
"missing steerId returns unknown",
],
};
}
if (import.meta.main) {
process.stdout.write(`${JSON.stringify(runCodeQueueSteerConfirmationContract(), null, 2)}\n`);
}