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 { DOCTOR_AUDIT_TOOL_NAME } from "./doctor-contracts.ts"; export type DoctorAuditOptions = { context: HostContext; submission: unknown; signal?: AbortSignal; /** Same ceiling the public execution seam already resolved. */ autoResumeLimit?: number; /** 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, submission: options.submission, ...(auditorRunDirectory(options.context) === undefined ? {} : { runDirectory: auditorRunDirectory(options.context) }), ...(options.signal === undefined ? {} : { signal: options.signal }), ...(options.autoResumeLimit === undefined ? {} : { autoResumeLimit: options.autoResumeLimit }), ...(options.summonAuditor === undefined ? {} : { summonAuditor: options.summonAuditor }), }); }; }