import type { AssistantDebugPayload, AssistantMessageResponsePayload } from "../types/assistant"; import type { NormalizeResponsePayload } from "../types/normalizer"; import type { InvestigationStateWithProblemUnits } from "../types/stage2ProblemUnits"; import type { RunAssistantDeepTurnAnalysisRuntimeOutput } from "./assistantDeepTurnAnalysisRuntimeAdapter"; import type { AssistantFollowupUsage } from "./assistantFollowupUsage"; import { runAssistantDeepTurnResponseRuntime, type RunAssistantDeepTurnResponseRuntimeInput, type RunAssistantDeepTurnResponseRuntimeOutput } from "./assistantDeepTurnResponseRuntimeAdapter"; import { buildAssistantDeepTurnResponseRuntimeInput } from "./assistantDeepTurnResponseRuntimeInputBuilder"; export interface RunAssistantDeepTurnResponseAttemptRuntimeInput< ResponseType = AssistantMessageResponsePayload > { featureInvestigationStateV1: boolean; featureContractsV11: boolean; featureAnswerPolicyV11: boolean; sessionId: string; questionId: string; userMessage: string; normalized: { trace_id: string; prompt_version: string; schema_version: string; normalized: NormalizeResponsePayload["normalized"]; }; normalizedQuestion: string; deepTurnAnalysisRuntime: RunAssistantDeepTurnAnalysisRuntimeOutput; runtimeAnalysisContext: RunAssistantDeepTurnResponseRuntimeInput["runtimeAnalysisContext"]; followupStateUsage: AssistantFollowupUsage | null; followupApplied: boolean; previousInvestigationState: InvestigationStateWithProblemUnits | null | undefined; addressRuntimeMetaForDeep: RunAssistantDeepTurnResponseRuntimeInput["addressRuntimeMetaForDeep"]; extractDroppedIntentSegments: RunAssistantDeepTurnResponseRuntimeInput["extractDroppedIntentSegments"]; buildDebugRoutes: RunAssistantDeepTurnResponseRuntimeInput["buildDebugRoutes"]; extractExecutionState: RunAssistantDeepTurnResponseRuntimeInput["extractExecutionState"]; sanitizeReply: RunAssistantDeepTurnResponseRuntimeInput["sanitizeReply"]; persistInvestigationState: RunAssistantDeepTurnResponseRuntimeInput["persistInvestigationState"]; messageIdFactory: RunAssistantDeepTurnResponseRuntimeInput["messageIdFactory"]; appendItem: RunAssistantDeepTurnResponseRuntimeInput["appendItem"]; getSession: RunAssistantDeepTurnResponseRuntimeInput["getSession"]; persistSession: RunAssistantDeepTurnResponseRuntimeInput["persistSession"]; cloneConversation: RunAssistantDeepTurnResponseRuntimeInput["cloneConversation"]; logEvent: RunAssistantDeepTurnResponseRuntimeInput["logEvent"]; runPackagingRuntime?: RunAssistantDeepTurnResponseRuntimeInput["runPackagingRuntime"]; runFinalizeDeepTurn?: RunAssistantDeepTurnResponseRuntimeInput["runFinalizeDeepTurn"]; runDeepTurnResponseRuntime?: ( input: RunAssistantDeepTurnResponseRuntimeInput ) => RunAssistantDeepTurnResponseRuntimeOutput; } export function runAssistantDeepTurnResponseAttemptRuntime< ResponseType = AssistantMessageResponsePayload >( input: RunAssistantDeepTurnResponseAttemptRuntimeInput ): { response: ResponseType; debug: AssistantDebugPayload; } { const runDeepTurnResponseRuntimeSafe = input.runDeepTurnResponseRuntime ?? runAssistantDeepTurnResponseRuntime; const responseRuntime = runDeepTurnResponseRuntimeSafe( buildAssistantDeepTurnResponseRuntimeInput({ featureInvestigationStateV1: input.featureInvestigationStateV1, featureContractsV11: input.featureContractsV11, featureAnswerPolicyV11: input.featureAnswerPolicyV11, sessionId: input.sessionId, questionId: input.questionId, userMessage: input.userMessage, normalized: input.normalized, normalizedQuestion: input.normalizedQuestion, deepTurnAnalysisRuntime: input.deepTurnAnalysisRuntime, runtimeAnalysisContext: input.runtimeAnalysisContext, followupStateUsage: input.followupStateUsage, followupApplied: input.followupApplied, previousInvestigationState: input.previousInvestigationState, addressRuntimeMetaForDeep: input.addressRuntimeMetaForDeep, extractDroppedIntentSegments: input.extractDroppedIntentSegments, buildDebugRoutes: input.buildDebugRoutes, extractExecutionState: input.extractExecutionState, sanitizeReply: input.sanitizeReply, persistInvestigationState: input.persistInvestigationState, messageIdFactory: input.messageIdFactory, appendItem: input.appendItem, getSession: input.getSession, persistSession: input.persistSession, cloneConversation: input.cloneConversation, logEvent: input.logEvent, runPackagingRuntime: input.runPackagingRuntime, runFinalizeDeepTurn: input.runFinalizeDeepTurn }) ); return { response: responseRuntime.response as ResponseType, debug: responseRuntime.debug }; }