"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.buildAssistantDeepTurnComposition = buildAssistantDeepTurnComposition; const questionTypeResolver_1 = require("./questionTypeResolver"); const answerComposer_1 = require("./answerComposer"); function toStringArray(value) { if (!Array.isArray(value)) { return []; } return value .map((item) => (typeof item === "string" ? item.trim() : "")) .filter((item) => item.length > 0); } function normalizeCompanyAnchorSet(value) { if (!value || typeof value !== "object" || Array.isArray(value)) { return null; } const source = value; return { contract_numbers: toStringArray(source.contract_numbers), document_numbers: toStringArray(source.document_numbers), dates: toStringArray(source.dates), amounts: toStringArray(source.amounts), accounts: toStringArray(source.accounts), periods: toStringArray(source.periods), document_types: toStringArray(source.document_types), all: toStringArray(source.all) }; } function buildAssistantDeepTurnComposition(input) { const resolveQuestionTypeSafe = input.resolveQuestionTypeFn ?? questionTypeResolver_1.resolveQuestionType; const composeAssistantAnswerSafe = input.composeAssistantAnswerFn ?? answerComposer_1.composeAssistantAnswer; const followupApplied = Boolean(input.followupUsage?.applied); const focusDomainHint = followupApplied ? input.investigationState?.followup_context?.active_domain ?? input.investigationState?.focus.domain ?? null : null; const questionTypeClass = resolveQuestionTypeSafe(input.userMessage); const companyAnchorSet = normalizeCompanyAnchorSet(input.companyAnchors); const hasPeriodInCompanyAnchors = (Array.isArray(companyAnchorSet?.dates) && companyAnchorSet.dates.some((item) => String(item ?? "").trim().length > 0)) || (Array.isArray(companyAnchorSet?.periods) && companyAnchorSet.periods.some((item) => String(item ?? "").trim().length > 0)); const normalizationPeriodExplicit = input.hasExplicitPeriodAnchor(input.normalizedPayload) || hasPeriodInCompanyAnchors; const composition = composeAssistantAnswerSafe({ userMessage: input.userMessage, routeSummary: input.routeSummary, retrievalResults: input.retrievalResults, requirements: input.requirements, coverageReport: input.coverageReport, groundingCheck: input.groundingCheck, focusDomainHint, questionTypeHint: questionTypeClass, companyAnchors: companyAnchorSet, normalizationPeriodExplicit, enableAnswerPolicyV11: input.featureAnswerPolicyV11, enableProblemCentricAnswerV1: input.featureProblemCentricAnswerV1, enableLifecycleAnswerV1: input.featureLifecycleAnswerV1 }); return { focusDomainHint, questionTypeClass, hasPeriodInCompanyAnchors, normalizationPeriodExplicit, composition }; }