parents (D12, 4/9 houses, Sun/Moon) and children (D7, 5th house, Jupiter, PK) are plan/card domains with Chinese labels and the brief's aliases. They send the family route contract to the engine and are rejected as a stored session theme, so neither Python nor the chat_sessions.theme CHECK changes. Methodology reports no strict checklist for them; must-use layers follow the plan domain. Tests with 原值/新值/原因 where assertions changed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017eEAG8HD3mm8gsKXgk8uU8
58 lines
1.9 KiB
TypeScript
58 lines
1.9 KiB
TypeScript
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);
|
|
// The engine validates the route contract exactly (consultation_plan_contract.py),
|
|
// so a card-only domain (parents, children) sends its engine route's contract.
|
|
const engine = consultationDomainDefinition(requirement.strictWorkflowRoute);
|
|
return {
|
|
question,
|
|
themes: requirement.workflowThemes,
|
|
strictWorkflowRoute: requirement.strictWorkflowRoute,
|
|
requiredLayers: engine.requiredLayers,
|
|
claimBoundary: engine.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;
|
|
}
|