import type { NormalizeResponsePayload, RouteHintSummary } from "../types/normalizer"; import type { AssistantDebugRouteRecord, AssistantExecutionStateRecord } from "../types/assistant"; export interface AssistantRuntimeAnalysisContextForPrePackaging { active: boolean; as_of_date: string | null; period_from: string | null; period_to: string | null; source: string | null; snapshot_mode: "auto" | "force_snapshot" | "force_live"; } export interface AssistantAnalysisContextForContract { as_of_date: string | null; period_from: string | null; period_to: string | null; source: string | null; snapshot_mode: "auto" | "force_snapshot" | "force_live"; } export interface BuildAssistantDeepTurnPrePackagingContextInput { normalizedPayload: NormalizeResponsePayload["normalized"]; routeSummary: RouteHintSummary | null; runtimeAnalysisContext: AssistantRuntimeAnalysisContextForPrePackaging; assistantReply: string; extractDroppedIntentSegments: (normalizedPayload: NormalizeResponsePayload["normalized"]) => string[]; buildDebugRoutes: (routeSummary: RouteHintSummary | null) => AssistantDebugRouteRecord[]; extractExecutionState: (normalizedPayload: NormalizeResponsePayload["normalized"]) => AssistantExecutionStateRecord[]; sanitizeReply: (value: string, fallback?: string) => string; } export interface AssistantDeepTurnPrePackagingContext { droppedIntentSegments: string[]; analysisContextForContract: AssistantAnalysisContextForContract | null; routesForDebug: AssistantDebugRouteRecord[]; resolvedExecutionState: AssistantExecutionStateRecord[]; safeAssistantReplyBase: string; } export function buildAssistantDeepTurnPrePackagingContext( input: BuildAssistantDeepTurnPrePackagingContextInput ): AssistantDeepTurnPrePackagingContext { return { droppedIntentSegments: input.extractDroppedIntentSegments(input.normalizedPayload), analysisContextForContract: input.runtimeAnalysisContext.active ? { as_of_date: input.runtimeAnalysisContext.as_of_date, period_from: input.runtimeAnalysisContext.period_from, period_to: input.runtimeAnalysisContext.period_to, source: input.runtimeAnalysisContext.source, snapshot_mode: input.runtimeAnalysisContext.snapshot_mode } : null, routesForDebug: input.buildDebugRoutes(input.routeSummary), resolvedExecutionState: input.extractExecutionState(input.normalizedPayload), safeAssistantReplyBase: input.sanitizeReply(input.assistantReply, "Нужны уточнения для надежного ответа.") }; }