fix(code-queue): add runner skills sync contract

This commit is contained in:
Codex
2026-05-23 04:39:44 +00:00
parent 9418cc4f12
commit 1358803c9a
8 changed files with 709 additions and 29 deletions
+85 -2
View File
@@ -367,6 +367,86 @@ function compactQueueHealth(value: unknown): Record<string, unknown> | null {
};
}
function compactSkillAvailability(value: unknown): Record<string, unknown> | null {
const skills = asRecord(value);
if (skills === null) return null;
return {
ok: skills.ok ?? false,
path: skills.path ?? null,
source: skills.source ?? null,
target: skills.target ?? null,
mountPoint: skills.mountPoint ?? null,
exists: skills.exists ?? false,
available: skills.available ?? false,
degraded: skills.degraded ?? true,
blocker: skills.blocker ?? null,
readonly: skills.readonly ?? false,
skillCount: skills.skillCount ?? 0,
requiredSkills: Array.isArray(skills.requiredSkills) ? skills.requiredSkills.map(String) : [],
missingSkills: Array.isArray(skills.missingSkills) ? skills.missingSkills.map(String) : [],
valuesPrinted: skills.valuesPrinted ?? false,
pathSpelling: compactRecordFields(asRecord(skills.pathSpelling), [
"expectedTarget",
"forbiddenPathChecked",
"forbiddenPathExists",
"forbiddenPathMustNotBeUsed",
]),
repairHint: skills.repairHint ?? null,
};
}
function compactSkillSync(value: unknown): Record<string, unknown> | null {
const sync = asRecord(value);
if (sync === null) return null;
const source = compactRecordFields(asRecord(sync.source), [
"path",
"approved",
"exists",
"directory",
"readable",
"writable",
"readonly",
"mountPoint",
"skillCount",
"requiredSkills",
"missingSkills",
"error",
]);
const target = compactRecordFields(asRecord(sync.target), [
"path",
"approved",
"exists",
"directory",
"readable",
"writable",
"readonly",
"mountPoint",
"skillCount",
"requiredSkills",
"missingSkills",
"error",
]);
const permissionFailures = Array.isArray(sync.permissionFailures) ? sync.permissionFailures : [];
return {
ok: sync.ok ?? false,
degraded: sync.degraded ?? true,
blocker: sync.blocker ?? null,
mode: sync.mode ?? "dry-run",
dryRun: sync.dryRun ?? true,
mutation: sync.mutation ?? false,
syncMode: sync.syncMode ?? null,
source,
target,
counts: sync.counts ?? null,
missing: sync.missing ?? null,
permissionFailureCount: permissionFailures.length,
permissionFailures: permissionFailures.slice(0, 4),
plannedActions: sync.plannedActions ?? null,
commands: sync.commands ?? null,
valuesPrinted: sync.valuesPrinted ?? false,
};
}
function compactMicroserviceBody(body: unknown, serviceId: string): Record<string, unknown> | null {
const record = asRecord(body);
if (record === null) return null;
@@ -388,6 +468,8 @@ function compactMicroserviceBody(body: unknown, serviceId: string): Record<strin
taskCount: record.taskCount ?? null,
schemaReady: record.schemaReady ?? null,
queue: compactQueueHealth(record.queue),
skills: compactSkillAvailability(record.skills),
skillsSync: compactSkillSync(record.skillsSync),
resourceBudget: compactRecordFields(asRecord(record.resourceBudget), [
"targetMemoryMb",
"mgrPoolMax",
@@ -401,7 +483,8 @@ function compactMicroserviceBody(body: unknown, serviceId: string): Record<strin
devReady: devReady === null ? null : {
ok: devReady.ok ?? null,
missingTools: compactStringList(devReady.missingTools, 8),
skills: devReady.skills ?? null,
skills: compactSkillAvailability(devReady.skills),
skillsSync: compactSkillSync(devReady.skillsSync),
},
executionDiagnostics: diagnostics === null ? null : {
state: diagnostics.state ?? null,
@@ -416,7 +499,7 @@ function compactMicroserviceBody(body: unknown, serviceId: string): Record<strin
};
}
function summarizeMicroserviceObservation(action: string, serviceId: string, response: unknown, args: string[]): unknown {
export function summarizeMicroserviceObservation(action: string, serviceId: string, response: unknown, args: string[]): unknown {
if (hasFlag(args, "--full") || hasFlag(args, "--raw")) return response;
const record = asRecord(response);
if (record === null) return response;