import { consultationDomainDefinition, consultationDomainIds, type ConsultationDomain, type ConsultationTheme, } from "./consultation-domain-registry.ts"; export { consultationDomainIds as consultationThemeValues }; export type { ConsultationTheme }; export type ConsultationWorkflowRoute = ConsultationDomain | "rectification" | "prashna"; export type ConsultationWorkflowPlanMetadata = Readonly<{ plan_version: string; depth: string; requestedDomains: readonly string[]; timingHorizon: string | null; precisionBoundary: string; requiredEvidenceCategories: readonly string[]; }>; type WorkflowProjection = { question: string; themes: readonly ConsultationDomain[]; strictWorkflowRoute: ConsultationWorkflowRoute; requiredLayers: readonly string[]; claimBoundary: string; plan_version: string; depth: string; requested_domains: readonly string[]; timing_horizon: string | null; precision_boundary: string; required_evidence_categories: readonly string[]; }; export function projectConsultationWorkflowRequest( question: string, theme: ConsultationTheme, plan: ConsultationWorkflowPlanMetadata, ) { const requirement = consultationDomainDefinition(theme); const prefix = theme === "timing" ? "应期与阶段问题:" : ""; return { question: `${prefix}${question}`, themes: requirement.workflowThemes, strictWorkflowRoute: requirement.strictWorkflowRoute, requiredLayers: requirement.requiredLayers, claimBoundary: requirement.claimBoundary, plan_version: plan.plan_version, depth: plan.depth, requested_domains: plan.requestedDomains, timing_horizon: plan.timingHorizon, precision_boundary: plan.precisionBoundary, required_evidence_categories: plan.requiredEvidenceCategories, } satisfies WorkflowProjection; }