59 lines
2.3 KiB
TypeScript
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
|
|
};
|
|
}
|