NODEDC_1C/llm_normalizer/backend/src/services/assistantDeepTurnAttemptRun...

177 lines
9.7 KiB
TypeScript

import type { AssistantDebugPayload, AssistantMessageResponsePayload } from "../types/assistant";
import type { InvestigationStateWithProblemUnits } from "../types/stage2ProblemUnits";
import {
buildAssistantDeepTurnNormalizationRuntime,
type BuildAssistantDeepTurnNormalizationRuntimeInput,
type BuildAssistantDeepTurnNormalizationRuntimeOutput
} from "./assistantDeepTurnNormalizationRuntimeAdapter";
import {
runAssistantDeepTurnAnalysisAttemptRuntime,
type RunAssistantDeepTurnAnalysisAttemptRuntimeInput
} from "./assistantDeepTurnAnalysisAttemptRuntimeAdapter";
import {
runAssistantDeepTurnResponseAttemptRuntime,
type RunAssistantDeepTurnResponseAttemptRuntimeInput
} from "./assistantDeepTurnResponseAttemptRuntimeAdapter";
import type { RunAssistantDeepTurnAnalysisRuntimeOutput } from "./assistantDeepTurnAnalysisRuntimeAdapter";
import {
buildAssistantDeepTurnAnalysisAttemptRuntimeInput,
buildAssistantDeepTurnNormalizationRuntimeInput,
buildAssistantDeepTurnResponseAttemptRuntimeInput
} from "./assistantDeepTurnAttemptInputBuilder";
export interface RunAssistantDeepTurnAttemptRuntimeInput<ResponseType = AssistantMessageResponsePayload> {
sessionId: string;
questionId: string;
userMessage: string;
payload: BuildAssistantDeepTurnNormalizationRuntimeInput["payload"];
runtimeAnalysisContext: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["runtimeAnalysisContext"];
sessionInvestigationState: InvestigationStateWithProblemUnits | null | undefined;
addressRuntimeMetaForDeep: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["addressRuntimeMetaForDeep"];
featureInvestigationStateV1: boolean;
featureStateFollowupBindingV1: boolean;
featureContractsV11: boolean;
featureAnswerPolicyV11: boolean;
featureProblemCentricAnswerV1: boolean;
featureLifecycleAnswerV1: boolean;
buildFollowupStateBinding: BuildAssistantDeepTurnNormalizationRuntimeInput["buildFollowupStateBinding"];
normalize: BuildAssistantDeepTurnNormalizationRuntimeInput["normalize"];
resolveBusinessScopeAlignment: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["resolveBusinessScopeAlignment"];
inferP0DomainFromMessage: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["inferP0DomainFromMessage"];
resolveBusinessScopeFromLiveContext: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["resolveBusinessScopeFromLiveContext"];
extractRequirements: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["extractRequirements"];
toExecutionPlan: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["toExecutionPlan"];
enforceRbpLiveRoutePlan: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["enforceRbpLiveRoutePlan"];
enforceFaLiveRoutePlan: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["enforceFaLiveRoutePlan"];
executeRouteRuntime: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["executeRouteRuntime"];
mapNoRouteReason: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["mapNoRouteReason"];
buildSkippedResult: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["buildSkippedResult"];
evaluateCoverage: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["evaluateCoverage"];
checkGrounding: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["checkGrounding"];
collectRbpLiveRouteAudit: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["collectRbpLiveRouteAudit"];
collectFaLiveRouteAudit: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["collectFaLiveRouteAudit"];
hasExplicitPeriodAnchor: RunAssistantDeepTurnAnalysisAttemptRuntimeInput["hasExplicitPeriodAnchor"];
extractDroppedIntentSegments: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["extractDroppedIntentSegments"];
buildDebugRoutes: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["buildDebugRoutes"];
extractExecutionState: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["extractExecutionState"];
sanitizeReply: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["sanitizeReply"];
persistInvestigationState: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["persistInvestigationState"];
messageIdFactory: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["messageIdFactory"];
appendItem: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["appendItem"];
getSession: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["getSession"];
persistSession: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["persistSession"];
cloneConversation: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["cloneConversation"];
logEvent: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["logEvent"];
runPackagingRuntime?: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["runPackagingRuntime"];
runFinalizeDeepTurn?: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>["runFinalizeDeepTurn"];
runDeepTurnNormalizationRuntime?: (
input: BuildAssistantDeepTurnNormalizationRuntimeInput
) => Promise<BuildAssistantDeepTurnNormalizationRuntimeOutput>;
runDeepTurnAnalysisAttemptRuntime?: (
input: RunAssistantDeepTurnAnalysisAttemptRuntimeInput
) => Promise<RunAssistantDeepTurnAnalysisRuntimeOutput>;
runDeepTurnResponseAttemptRuntime?: (
input: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>
) => {
response: ResponseType;
debug: AssistantDebugPayload;
};
}
export interface RunAssistantDeepTurnAttemptRuntimeOutput<ResponseType = AssistantMessageResponsePayload> {
response: ResponseType;
debug: AssistantDebugPayload;
normalizationRuntime: BuildAssistantDeepTurnNormalizationRuntimeOutput;
deepTurnAnalysisRuntime: RunAssistantDeepTurnAnalysisRuntimeOutput;
}
export async function runAssistantDeepTurnAttemptRuntime<ResponseType = AssistantMessageResponsePayload>(
input: RunAssistantDeepTurnAttemptRuntimeInput<ResponseType>
): Promise<RunAssistantDeepTurnAttemptRuntimeOutput<ResponseType>> {
const runDeepTurnNormalizationRuntimeSafe =
input.runDeepTurnNormalizationRuntime ?? buildAssistantDeepTurnNormalizationRuntime;
const runDeepTurnAnalysisAttemptRuntimeSafe =
input.runDeepTurnAnalysisAttemptRuntime ?? runAssistantDeepTurnAnalysisAttemptRuntime;
const runDeepTurnResponseAttemptRuntimeSafe: (
input: RunAssistantDeepTurnResponseAttemptRuntimeInput<ResponseType>
) => {
response: ResponseType;
debug: AssistantDebugPayload;
} = input.runDeepTurnResponseAttemptRuntime ?? runAssistantDeepTurnResponseAttemptRuntime;
const normalizationRuntime = await runDeepTurnNormalizationRuntimeSafe(
buildAssistantDeepTurnNormalizationRuntimeInput({
userMessage: input.userMessage,
payload: input.payload,
featureInvestigationStateV1: input.featureInvestigationStateV1,
featureStateFollowupBindingV1: input.featureStateFollowupBindingV1,
sessionInvestigationState: input.sessionInvestigationState,
buildFollowupStateBinding: input.buildFollowupStateBinding,
normalize: input.normalize
})
);
const deepTurnAnalysisRuntime = await runDeepTurnAnalysisAttemptRuntimeSafe(
buildAssistantDeepTurnAnalysisAttemptRuntimeInput({
userMessage: input.userMessage,
runtimeAnalysisContext: input.runtimeAnalysisContext,
sessionInvestigationState: input.sessionInvestigationState,
featureAnswerPolicyV11: input.featureAnswerPolicyV11,
featureProblemCentricAnswerV1: input.featureProblemCentricAnswerV1,
featureLifecycleAnswerV1: input.featureLifecycleAnswerV1,
resolveBusinessScopeAlignment: input.resolveBusinessScopeAlignment,
inferP0DomainFromMessage: input.inferP0DomainFromMessage,
resolveBusinessScopeFromLiveContext: input.resolveBusinessScopeFromLiveContext,
extractRequirements: input.extractRequirements,
toExecutionPlan: input.toExecutionPlan,
enforceRbpLiveRoutePlan: input.enforceRbpLiveRoutePlan,
enforceFaLiveRoutePlan: input.enforceFaLiveRoutePlan,
executeRouteRuntime: input.executeRouteRuntime,
mapNoRouteReason: input.mapNoRouteReason,
buildSkippedResult: input.buildSkippedResult,
evaluateCoverage: input.evaluateCoverage,
checkGrounding: input.checkGrounding,
collectRbpLiveRouteAudit: input.collectRbpLiveRouteAudit,
collectFaLiveRouteAudit: input.collectFaLiveRouteAudit,
hasExplicitPeriodAnchor: input.hasExplicitPeriodAnchor,
normalizationRuntime
})
);
const deepTurnResponseRuntime = runDeepTurnResponseAttemptRuntimeSafe(
buildAssistantDeepTurnResponseAttemptRuntimeInput({
featureInvestigationStateV1: input.featureInvestigationStateV1,
featureContractsV11: input.featureContractsV11,
featureAnswerPolicyV11: input.featureAnswerPolicyV11,
sessionId: input.sessionId,
questionId: input.questionId,
userMessage: input.userMessage,
runtimeAnalysisContext: input.runtimeAnalysisContext,
sessionInvestigationState: input.sessionInvestigationState,
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,
normalizationRuntime,
deepTurnAnalysisRuntime
})
);
return {
response: deepTurnResponseRuntime.response,
debug: deepTurnResponseRuntime.debug,
normalizationRuntime,
deepTurnAnalysisRuntime
};
}