NODEDC_1C/llm_normalizer/backend/src/services/assistantDeepTurnFinalizeRu...

59 lines
2.3 KiB
TypeScript

import type { AssistantConversationItem, AssistantDebugPayload, AssistantMessageResponsePayload, AssistantReplyType } from "../types/assistant";
import type { DeepAnalysisLogDetails } from "./assistantMessageLogAssembler";
import { buildAssistantDeepTurnSuccessResponse } from "./assistantDeepTurnResponseBuilder";
import type { CommitAssistantTurnAndLogOutput } from "./assistantTurnCommitRuntimeAdapter";
import { commitAssistantTurnAndLog } from "./assistantTurnCommitRuntimeAdapter";
export interface FinalizeAssistantDeepTurnInput {
sessionId: string;
assistantReply: string;
replyType: AssistantReplyType;
assistantItem: AssistantConversationItem;
debug: AssistantDebugPayload;
deepAnalysisLogDetails: DeepAnalysisLogDetails;
appendItem: Parameters<typeof commitAssistantTurnAndLog>[0]["appendItem"];
getSession: Parameters<typeof commitAssistantTurnAndLog>[0]["getSession"];
persistSession: Parameters<typeof commitAssistantTurnAndLog>[0]["persistSession"];
cloneConversation: Parameters<typeof commitAssistantTurnAndLog>[0]["cloneConversation"];
logEvent: Parameters<typeof commitAssistantTurnAndLog>[0]["logEvent"];
commitFn?: typeof commitAssistantTurnAndLog;
buildResponseFn?: typeof buildAssistantDeepTurnSuccessResponse;
}
export interface FinalizeAssistantDeepTurnOutput {
commitResult: CommitAssistantTurnAndLogOutput;
response: AssistantMessageResponsePayload;
}
export function finalizeAssistantDeepTurn(
input: FinalizeAssistantDeepTurnInput
): FinalizeAssistantDeepTurnOutput {
const commitSafe = input.commitFn ?? commitAssistantTurnAndLog;
const buildResponseSafe = input.buildResponseFn ?? buildAssistantDeepTurnSuccessResponse;
const commitResult = commitSafe({
sessionId: input.sessionId,
assistantItem: input.assistantItem,
eventType: "assistant_message",
logDetails: input.deepAnalysisLogDetails,
appendItem: input.appendItem,
getSession: input.getSession,
persistSession: input.persistSession,
cloneConversation: input.cloneConversation,
logEvent: input.logEvent
});
const response = buildResponseSafe({
sessionId: input.sessionId,
assistantReply: input.assistantReply,
replyType: input.replyType,
conversationItem: input.assistantItem,
debug: input.debug,
conversation: commitResult.conversation
});
return {
commitResult,
response
};
}