ГЛОБАЛЬНЫЙ РЕФАКТОРИНГ АРХИТЕКТУРЫ - Рефакторинг этапов 2.47: вынесен верхний orchestration-скелет handleMessage (bootstrap -> address attempt -> deep attempt) в единый turn runtime adapter без изменения поведения.
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
import type { RunAssistantAddressRuntimeOutput } from "./assistantAddressRuntimeAdapter";
|
||||
import type { RunAssistantUserTurnBootstrapRuntimeOutput } from "./assistantUserTurnBootstrapRuntimeAdapter";
|
||||
|
||||
export interface AssistantSessionOrganizationScopeContext {
|
||||
knownOrganizations: string[];
|
||||
selectedOrganization: string | null;
|
||||
activeOrganization: string | null;
|
||||
}
|
||||
|
||||
export interface RunAssistantTurnAttemptRuntimeAddressInput<PayloadType = unknown> {
|
||||
payload: PayloadType;
|
||||
sessionId: string;
|
||||
userMessage: string;
|
||||
sessionItems: unknown[];
|
||||
runtimeAnalysisContext: { as_of_date: string | null };
|
||||
sessionOrganizationScope: AssistantSessionOrganizationScopeContext;
|
||||
}
|
||||
|
||||
export interface RunAssistantTurnAttemptRuntimeDeepInput<PayloadType = unknown> {
|
||||
payload: PayloadType;
|
||||
sessionId: string;
|
||||
questionId: string;
|
||||
userMessage: string;
|
||||
runtimeAnalysisContext: unknown;
|
||||
sessionInvestigationState: unknown;
|
||||
addressRuntimeMetaForDeep: Record<string, unknown> | null;
|
||||
}
|
||||
|
||||
export interface RunAssistantTurnAttemptRuntimeInput<ResponseType = unknown, PayloadType = unknown> {
|
||||
payload: PayloadType;
|
||||
runUserTurnBootstrapRuntime: (payload: PayloadType) => RunAssistantUserTurnBootstrapRuntimeOutput;
|
||||
resolveSessionOrganizationScopeContext: (
|
||||
userMessage: string,
|
||||
sessionItems: unknown[]
|
||||
) => AssistantSessionOrganizationScopeContext;
|
||||
runAddressAttemptRuntime: (
|
||||
input: RunAssistantTurnAttemptRuntimeAddressInput<PayloadType>
|
||||
) => Promise<RunAssistantAddressRuntimeOutput<ResponseType>>;
|
||||
runDeepTurnAttemptRuntime: (
|
||||
input: RunAssistantTurnAttemptRuntimeDeepInput<PayloadType>
|
||||
) => Promise<{ response: ResponseType }>;
|
||||
}
|
||||
|
||||
export interface RunAssistantTurnAttemptRuntimeOutput<ResponseType = unknown> {
|
||||
response: ResponseType;
|
||||
source: "address" | "deep";
|
||||
addressRuntimeMetaForDeep: Record<string, unknown> | null;
|
||||
userTurn: RunAssistantUserTurnBootstrapRuntimeOutput;
|
||||
sessionOrganizationScope: AssistantSessionOrganizationScopeContext;
|
||||
}
|
||||
|
||||
export async function runAssistantTurnAttemptRuntime<ResponseType = unknown, PayloadType = unknown>(
|
||||
input: RunAssistantTurnAttemptRuntimeInput<ResponseType, PayloadType>
|
||||
): Promise<RunAssistantTurnAttemptRuntimeOutput<ResponseType>> {
|
||||
const userTurn = input.runUserTurnBootstrapRuntime(input.payload);
|
||||
const sessionOrganizationScope = input.resolveSessionOrganizationScopeContext(
|
||||
userTurn.userMessage,
|
||||
userTurn.session.items
|
||||
);
|
||||
const addressRuntime = await input.runAddressAttemptRuntime({
|
||||
payload: input.payload,
|
||||
sessionId: userTurn.sessionId,
|
||||
userMessage: userTurn.userMessage,
|
||||
sessionItems: userTurn.session.items,
|
||||
runtimeAnalysisContext: userTurn.runtimeAnalysisContext,
|
||||
sessionOrganizationScope
|
||||
});
|
||||
|
||||
const addressRuntimeMetaForDeep = addressRuntime.addressRuntimeMetaForDeep ?? null;
|
||||
if (addressRuntime.handled && addressRuntime.response) {
|
||||
return {
|
||||
response: addressRuntime.response,
|
||||
source: "address",
|
||||
addressRuntimeMetaForDeep,
|
||||
userTurn,
|
||||
sessionOrganizationScope
|
||||
};
|
||||
}
|
||||
|
||||
const deepTurnRuntime = await input.runDeepTurnAttemptRuntime({
|
||||
payload: input.payload,
|
||||
sessionId: userTurn.sessionId,
|
||||
questionId: userTurn.userItem.message_id,
|
||||
userMessage: userTurn.userMessage,
|
||||
runtimeAnalysisContext: userTurn.runtimeAnalysisContext,
|
||||
sessionInvestigationState: userTurn.session.investigation_state,
|
||||
addressRuntimeMetaForDeep
|
||||
});
|
||||
|
||||
return {
|
||||
response: deepTurnRuntime.response,
|
||||
source: "deep",
|
||||
addressRuntimeMetaForDeep,
|
||||
userTurn,
|
||||
sessionOrganizationScope
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user