NODEDC_1C/llm_normalizer/backend/src/services/assistantDeepTurnResponseAt...

100 lines
4.7 KiB
TypeScript

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<ResponseType>
): {
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
};
}