import type { AnswerGroundingCheck, AssistantRequirement, RequirementCoverageReport, UnifiedRetrievalResult } from "../types/assistant"; import type { RouteHintSummary } from "../types/normalizer"; import type { ClaimBoundAnchorAudit } from "./assistantClaimBoundEvidence"; import type { AssistantDeepTurnRetrievalGuardPipelineInput, AssistantDeepTurnRetrievalGuardPipelineOutput } from "./assistantDeepTurnGuardRuntimeAdapter"; import type { AssistantBusinessScopeResolution } from "./assistantDeepTurnContextRuntimeAdapter"; import type { AssistantPlanEnforcementAuditLike, AssistantRequirementExtractionLike } from "./assistantDeepTurnPlanRuntimeAdapter"; import type { AssistantExecutionPlanItem } from "./assistantQueryPlanning"; import type { AssistantDeepTurnRetrievalExecutionOutput, AssistantLiveTemporalHint } from "./assistantDeepTurnRetrievalRuntimeAdapter"; import type { AssistantDeepTurnGroundingRuntimeInput, AssistantDeepTurnGroundingRuntimeOutput } from "./assistantDeepTurnGroundingRuntimeAdapter"; import type { AssistantDeepTurnCompositionOutput } from "./assistantDeepTurnCompositionRuntimeAdapter"; import type { DomainPolarityGuardAudit, TemporalGuardAudit } from "./assistantRuntimeGuards"; import type { CompanyAnchorSet } from "./companyAnchorResolver"; export interface AssistantDeepTurnRuntimeContextLike { companyAnchors: CompanyAnchorSet | null; focusDomainForGuards: AssistantDeepTurnRetrievalGuardPipelineInput["focusDomainForGuards"]; temporalGuard: TemporalGuardAudit; domainPolarityGuardInitial: DomainPolarityGuardAudit; claimAnchorAudit: ClaimBoundAnchorAudit; businessScopeResolution: AssistantBusinessScopeResolution; resolvedRouteSummary: RouteHintSummary | null; liveTemporalHint: AssistantLiveTemporalHint | null; } export interface RunAssistantDeepTurnAnalysisRuntimeInput { userMessage: string; runContextRuntime: () => AssistantDeepTurnRuntimeContextLike; runExecutionPlanRuntime: (input: { resolvedRouteSummary: RouteHintSummary | null; claimAnchorAudit: AssistantDeepTurnRuntimeContextLike["claimAnchorAudit"]; temporalGuard: TemporalGuardAudit; domainPolarityGuardInitial: DomainPolarityGuardAudit; }) => { requirementExtraction: AssistantRequirementExtractionLike; executionPlan: AssistantExecutionPlanItem[]; rbpRoutePlanEnforcement: AssistantPlanEnforcementAuditLike; faRoutePlanEnforcement: AssistantPlanEnforcementAuditLike; }; runRetrievalRuntime: (input: { executionPlan: AssistantExecutionPlanItem[]; liveTemporalHint: AssistantLiveTemporalHint | null; }) => Promise; runGuardRuntime: (input: { retrievalResults: UnifiedRetrievalResult[]; domainPolarityGuardInitial: DomainPolarityGuardAudit; claimAnchorAudit: AssistantDeepTurnRuntimeContextLike["claimAnchorAudit"]; temporalGuard: TemporalGuardAudit; focusDomainForGuards: AssistantDeepTurnRetrievalGuardPipelineInput["focusDomainForGuards"]; companyAnchors: AssistantDeepTurnRetrievalGuardPipelineInput["companyAnchors"]; userMessage: string; }) => AssistantDeepTurnRetrievalGuardPipelineOutput; runGroundingRuntime: (input: { claimType: string; retrievalResults: UnifiedRetrievalResult[]; rbpPlanAudit: AssistantDeepTurnGroundingRuntimeInput["rbpPlanAudit"]; faPlanAudit: AssistantDeepTurnGroundingRuntimeInput["faPlanAudit"]; routeSummary: RouteHintSummary | null; requirementExtraction: AssistantRequirementExtractionLike; temporalGuard: AssistantDeepTurnGroundingRuntimeInput["temporalGuard"]; polarityAudit: AssistantDeepTurnGroundingRuntimeInput["polarityAudit"]; evidenceAudit: AssistantDeepTurnGroundingRuntimeInput["evidenceAudit"]; claimAnchorAudit: AssistantDeepTurnGroundingRuntimeInput["claimAnchorAudit"]; targetedEvidenceHitRate?: number | null; businessScopeResolved?: string[] | null; }) => AssistantDeepTurnGroundingRuntimeOutput; runCompositionRuntime: (input: { resolvedRouteSummary: RouteHintSummary | null; retrievalResults: UnifiedRetrievalResult[]; requirements: AssistantRequirement[]; coverageReport: RequirementCoverageReport; groundingCheck: AnswerGroundingCheck; companyAnchors: CompanyAnchorSet | null; }) => AssistantDeepTurnCompositionOutput; } export interface RunAssistantDeepTurnAnalysisRuntimeOutput { companyAnchors: CompanyAnchorSet | null; temporalGuard: TemporalGuardAudit; claimAnchorAudit: AssistantDeepTurnRuntimeContextLike["claimAnchorAudit"]; businessScopeResolution: AssistantDeepTurnRuntimeContextLike["businessScopeResolution"]; resolvedRouteSummary: RouteHintSummary | null; requirementExtraction: AssistantRequirementExtractionLike; executionPlan: AssistantExecutionPlanItem[]; retrievalCalls: AssistantDeepTurnRetrievalExecutionOutput["retrievalCalls"]; retrievalResultsRaw: AssistantDeepTurnRetrievalExecutionOutput["retrievalResultsRaw"]; retrievalResults: UnifiedRetrievalResult[]; polarityGuardResult: AssistantDeepTurnRetrievalGuardPipelineOutput["polarityGuardResult"]; targetedEvidenceResult: AssistantDeepTurnRetrievalGuardPipelineOutput["targetedEvidenceResult"]; evidenceGateResult: AssistantDeepTurnRetrievalGuardPipelineOutput["evidenceGateResult"]; rbpLiveRouteAudit: AssistantDeepTurnGroundingRuntimeOutput["rbpLiveRouteAudit"]; faLiveRouteAudit: AssistantDeepTurnGroundingRuntimeOutput["faLiveRouteAudit"]; coverageEvaluation: AssistantDeepTurnGroundingRuntimeOutput["coverageEvaluation"]; groundedAnswerEligibilityGuard: AssistantDeepTurnGroundingRuntimeOutput["groundedAnswerEligibilityGuard"]; groundingCheck: AssistantDeepTurnGroundingRuntimeOutput["groundingCheck"]; questionTypeClass: AssistantDeepTurnCompositionOutput["questionTypeClass"]; composition: AssistantDeepTurnCompositionOutput["composition"]; } export async function runAssistantDeepTurnAnalysisRuntime( input: RunAssistantDeepTurnAnalysisRuntimeInput ): Promise { const contextRuntime = input.runContextRuntime(); const executionPlanRuntime = input.runExecutionPlanRuntime({ resolvedRouteSummary: contextRuntime.resolvedRouteSummary, claimAnchorAudit: contextRuntime.claimAnchorAudit, temporalGuard: contextRuntime.temporalGuard, domainPolarityGuardInitial: contextRuntime.domainPolarityGuardInitial }); const retrievalRuntime = await input.runRetrievalRuntime({ executionPlan: executionPlanRuntime.executionPlan, liveTemporalHint: contextRuntime.liveTemporalHint }); const guardRuntime = input.runGuardRuntime({ retrievalResults: retrievalRuntime.retrievalResults, domainPolarityGuardInitial: contextRuntime.domainPolarityGuardInitial, claimAnchorAudit: contextRuntime.claimAnchorAudit, temporalGuard: contextRuntime.temporalGuard, focusDomainForGuards: contextRuntime.focusDomainForGuards, companyAnchors: contextRuntime.companyAnchors, userMessage: input.userMessage }); const groundingRuntime = input.runGroundingRuntime({ claimType: contextRuntime.claimAnchorAudit.claim_type, retrievalResults: guardRuntime.retrievalResults, rbpPlanAudit: executionPlanRuntime.rbpRoutePlanEnforcement.audit, faPlanAudit: executionPlanRuntime.faRoutePlanEnforcement.audit, routeSummary: contextRuntime.resolvedRouteSummary, requirementExtraction: executionPlanRuntime.requirementExtraction, temporalGuard: contextRuntime.temporalGuard, polarityAudit: guardRuntime.polarityGuardResult.audit, evidenceAudit: guardRuntime.evidenceGateResult.audit, claimAnchorAudit: contextRuntime.claimAnchorAudit, targetedEvidenceHitRate: guardRuntime.targetedEvidenceResult.audit.targeted_evidence_hit_rate, businessScopeResolved: contextRuntime.businessScopeResolution.business_scope_resolved ?? null }); const compositionRuntime = input.runCompositionRuntime({ resolvedRouteSummary: contextRuntime.resolvedRouteSummary, retrievalResults: guardRuntime.retrievalResults, requirements: groundingRuntime.coverageEvaluation.requirements, coverageReport: groundingRuntime.coverageEvaluation.coverage, groundingCheck: groundingRuntime.groundingCheck, companyAnchors: contextRuntime.companyAnchors }); return { companyAnchors: contextRuntime.companyAnchors, temporalGuard: contextRuntime.temporalGuard, claimAnchorAudit: contextRuntime.claimAnchorAudit, businessScopeResolution: contextRuntime.businessScopeResolution, resolvedRouteSummary: contextRuntime.resolvedRouteSummary, requirementExtraction: executionPlanRuntime.requirementExtraction, executionPlan: executionPlanRuntime.executionPlan, retrievalCalls: retrievalRuntime.retrievalCalls, retrievalResultsRaw: retrievalRuntime.retrievalResultsRaw, retrievalResults: guardRuntime.retrievalResults, polarityGuardResult: guardRuntime.polarityGuardResult, targetedEvidenceResult: guardRuntime.targetedEvidenceResult, evidenceGateResult: guardRuntime.evidenceGateResult, rbpLiveRouteAudit: groundingRuntime.rbpLiveRouteAudit, faLiveRouteAudit: groundingRuntime.faLiveRouteAudit, coverageEvaluation: groundingRuntime.coverageEvaluation, groundedAnswerEligibilityGuard: groundingRuntime.groundedAnswerEligibilityGuard, groundingCheck: groundingRuntime.groundingCheck, questionTypeClass: compositionRuntime.questionTypeClass, composition: compositionRuntime.composition }; }