import { auditorRunDirectory } from "./auditor-dossier-tool.ts"; import { runComplianceAudit, type AuditorSummon, type ComplianceDecision, } from "./compliance-transport.ts"; import { readDoctorAuditSubjects, requireAuditMaterials, resolveAuditDossier, } from "./dossier-resolution.ts"; import type { HostContext } from "./host-contracts.ts"; export const DOCTOR_AUDIT_TOOL_NAME = "ak_doctor_audit_decision"; export type DoctorAuditOptions = { context: HostContext; signal?: AbortSignal; /** Same seam as runComplianceAudit options — offline tracers only. */ summonAuditor?: AuditorSummon; }; /** * Doctor compliance via public auditor activation (#675 / ADR 0062 / owner r11). * 审刑院 is an independent role; subject=doctor selects souls/doctor-auditor.md. */ export function createPiDoctorAuditor(): (options: DoctorAuditOptions) => Promise { return async (options) => { const dossier = resolveAuditDossier(options.context); requireAuditMaterials(dossier); const subjects = readDoctorAuditSubjects(options.context); requireAuditMaterials(subjects); return runComplianceAudit({ subject: "doctor", context: options.context, ...(auditorRunDirectory(options.context) === undefined ? {} : { runDirectory: auditorRunDirectory(options.context) }), ...(options.signal === undefined ? {} : { signal: options.signal }), ...(options.summonAuditor === undefined ? {} : { summonAuditor: options.summonAuditor }), }); }; }