"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.runAssistantDeepTurnResponseRuntime = runAssistantDeepTurnResponseRuntime; const assistantDeepTurnPackagingRuntimeAdapter_1 = require("./assistantDeepTurnPackagingRuntimeAdapter"); const assistantDeepTurnFinalizeRuntimeAdapter_1 = require("./assistantDeepTurnFinalizeRuntimeAdapter"); const assistantMcpDiscoveryResponsePolicy_1 = require("./assistantMcpDiscoveryResponsePolicy"); function toNullableString(value) { if (typeof value !== "string") { return null; } const trimmed = value.trim(); return trimmed.length > 0 ? trimmed : null; } function toStringArray(value) { if (!Array.isArray(value)) { return []; } return value .map((item) => (typeof item === "string" ? item.trim() : "")) .filter((item) => item.length > 0); } function toSnapshotMode(value) { return value === "force_snapshot" || value === "force_live" ? value : "auto"; } function normalizeExecutionPlan(value) { if (!Array.isArray(value)) { return []; } return value.map((item, index) => ({ fragment_id: toNullableString(item.fragment_id) ?? `fragment_${index + 1}`, requirement_ids: toStringArray(item.requirement_ids), route: toNullableString(item.route) ?? "unknown_route", should_execute: Boolean(item.should_execute), no_route_reason: toNullableString(item.no_route_reason ?? null), clarification_reason: toNullableString(item.clarification_reason ?? null) })); } function normalizeRuntimeAnalysisContext(value) { const source = value; return { active: Boolean(source?.active), as_of_date: toNullableString(source?.as_of_date), period_from: toNullableString(source?.period_from), period_to: toNullableString(source?.period_to), source: toNullableString(source?.source), snapshot_mode: toSnapshotMode(source?.snapshot_mode) }; } function normalizeBusinessScopeResolution(value) { const source = value; return { business_scope_raw: toStringArray(source?.business_scope_raw), business_scope_resolved: toStringArray(source?.business_scope_resolved), company_grounding_applied: Boolean(source?.company_grounding_applied), scope_resolution_reason: toStringArray(source?.scope_resolution_reason) }; } function normalizeAddressRuntimeMetaForDeep(value) { const source = value; if (!source) { return null; } return { attempted: typeof source.attempted === "boolean" ? source.attempted : undefined, applied: typeof source.applied === "boolean" ? source.applied : undefined, reason: toNullableString(source.reason), provider: toNullableString(source.provider), fallbackRuleHit: toNullableString(source.fallbackRuleHit), toolGateDecision: toNullableString(source.toolGateDecision), toolGateReason: toNullableString(source.toolGateReason), predecomposeContract: source.predecomposeContract ?? null, semanticExtractionContract: source.semanticExtractionContract ?? null, orchestrationContract: source.orchestrationContract ?? null, mcpDiscoveryRuntimeEntryPoint: source.mcpDiscoveryRuntimeEntryPoint ?? null }; } function runAssistantDeepTurnResponseRuntime(input) { const runPackagingRuntimeSafe = input.runPackagingRuntime ?? assistantDeepTurnPackagingRuntimeAdapter_1.runAssistantDeepTurnPackagingRuntime; const runFinalizeDeepTurnSafe = input.runFinalizeDeepTurn ?? assistantDeepTurnFinalizeRuntimeAdapter_1.finalizeAssistantDeepTurn; const addressRuntimeMetaForDeep = normalizeAddressRuntimeMetaForDeep(input.addressRuntimeMetaForDeep); const packagingRuntime = runPackagingRuntimeSafe({ featureInvestigationStateV1: input.featureInvestigationStateV1, sessionId: input.sessionId, questionId: input.questionId, userMessage: input.userMessage, normalized: input.normalized, normalizedQuestion: input.normalizedQuestion, routeSummary: input.routeSummary, executionPlan: normalizeExecutionPlan(input.executionPlan), requirementExtractionRequirements: input.requirementExtractionRequirements, coverageEvaluationRequirements: input.coverageEvaluationRequirements, coverageReport: input.coverageReport, groundingCheck: input.groundingCheck, retrievalCalls: input.retrievalCalls, retrievalResultsRaw: input.retrievalResultsRaw, retrievalResults: input.retrievalResults, questionTypeClass: input.questionTypeClass, companyAnchors: input.companyAnchors, runtimeAnalysisContext: normalizeRuntimeAnalysisContext(input.runtimeAnalysisContext), businessScopeResolution: normalizeBusinessScopeResolution(input.businessScopeResolution), temporalGuard: input.temporalGuard, polarityAudit: input.polarityAudit, claimAnchorAudit: input.claimAnchorAudit, targetedEvidenceAudit: input.targetedEvidenceAudit, evidenceAdmissibilityGateAudit: input.evidenceAdmissibilityGateAudit, rbpLiveRouteAudit: input.rbpLiveRouteAudit ?? null, faLiveRouteAudit: input.faLiveRouteAudit ?? null, groundedAnswerEligibilityGuard: input.groundedAnswerEligibilityGuard, followupStateUsage: input.followupStateUsage, followupApplied: input.followupApplied, composition: input.composition, featureContractsV11: input.featureContractsV11, featureAnswerPolicyV11: input.featureAnswerPolicyV11, previousInvestigationState: input.previousInvestigationState ?? null, addressRuntimeMetaForDeep, extractDroppedIntentSegments: input.extractDroppedIntentSegments, buildDebugRoutes: input.buildDebugRoutes, extractExecutionState: input.extractExecutionState, sanitizeReply: input.sanitizeReply, persistInvestigationState: input.persistInvestigationState, messageIdFactory: input.messageIdFactory }); const mcpDiscoveryResponsePolicy = (0, assistantMcpDiscoveryResponsePolicy_1.applyAssistantMcpDiscoveryResponsePolicy)({ currentReply: packagingRuntime.safeAssistantReply, currentReplySource: "deep_analysis", addressRuntimeMeta: addressRuntimeMetaForDeep }); const assistantReply = mcpDiscoveryResponsePolicy.applied ? mcpDiscoveryResponsePolicy.reply_text : packagingRuntime.safeAssistantReply; const replyType = mcpDiscoveryResponsePolicy.applied ? "partial_coverage" : input.composition.reply_type; const debug = { ...packagingRuntime.debug, mcp_discovery_response_policy_v1: mcpDiscoveryResponsePolicy, mcp_discovery_response_candidate_v1: mcpDiscoveryResponsePolicy.candidate, mcp_discovery_response_applied: mcpDiscoveryResponsePolicy.applied }; const assistantItem = mcpDiscoveryResponsePolicy.applied ? { ...packagingRuntime.assistantItem, text: assistantReply, reply_type: replyType, debug } : packagingRuntime.assistantItem; const finalization = runFinalizeDeepTurnSafe({ sessionId: input.sessionId, assistantReply, replyType, assistantItem, debug, deepAnalysisLogDetails: packagingRuntime.deepAnalysisLogDetails, appendItem: input.appendItem, getSession: input.getSession, persistSession: input.persistSession, cloneConversation: input.cloneConversation, logEvent: input.logEvent }); return { response: finalization.response, debug }; }