fix(code-queue): add runner skills sync contract
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user