ГЛОБАЛЬНЫЙ РЕФАКТОРИНГ АРХИТЕКТУРЫ - Рефакторинг этапов 2.612.64 - вынос mapper для assistantAddressLaneResponseAttemptRuntimeAdapter и для assistantLivingChatAttemptRuntimeAdapter / сборка входов для living chat attempt в отдельный builder (LLM + handler)
This commit is contained in:
+24
-21
@@ -4,6 +4,7 @@ import {
|
||||
type RunAssistantAddressLaneResponseRuntimeInput,
|
||||
type RunAssistantAddressLaneResponseRuntimeOutput
|
||||
} from "./assistantAddressLaneResponseRuntimeAdapter";
|
||||
import { buildAssistantAddressLaneResponseRuntimeInput } from "./assistantAddressLaneResponseRuntimeInputBuilder";
|
||||
|
||||
export interface RunAssistantAddressLaneResponseAttemptRuntimeInput<
|
||||
ResponseType = AssistantMessageResponsePayload
|
||||
@@ -20,26 +21,28 @@ export function runAssistantAddressLaneResponseAttemptRuntime<
|
||||
): ResponseType {
|
||||
const runAddressLaneResponseRuntimeSafe =
|
||||
input.runAddressLaneResponseRuntime ?? runAssistantAddressLaneResponseRuntime;
|
||||
const runtime = runAddressLaneResponseRuntimeSafe({
|
||||
sessionId: input.sessionId,
|
||||
userMessage: input.userMessage,
|
||||
effectiveAddressUserMessage: input.effectiveAddressUserMessage,
|
||||
addressLane: input.addressLane,
|
||||
carryoverMeta: input.carryoverMeta,
|
||||
llmPreDecomposeMeta: input.llmPreDecomposeMeta,
|
||||
knownOrganizations: input.knownOrganizations,
|
||||
activeOrganization: input.activeOrganization,
|
||||
sanitizeOutgoingAssistantText: input.sanitizeOutgoingAssistantText,
|
||||
buildAddressDebugPayload: input.buildAddressDebugPayload,
|
||||
buildAddressFollowupOffer: input.buildAddressFollowupOffer,
|
||||
mergeKnownOrganizations: input.mergeKnownOrganizations,
|
||||
toNonEmptyString: input.toNonEmptyString,
|
||||
appendItem: input.appendItem,
|
||||
getSession: input.getSession,
|
||||
persistSession: input.persistSession,
|
||||
cloneConversation: input.cloneConversation,
|
||||
logEvent: input.logEvent,
|
||||
messageIdFactory: input.messageIdFactory
|
||||
});
|
||||
const runtime = runAddressLaneResponseRuntimeSafe(
|
||||
buildAssistantAddressLaneResponseRuntimeInput({
|
||||
sessionId: input.sessionId,
|
||||
userMessage: input.userMessage,
|
||||
effectiveAddressUserMessage: input.effectiveAddressUserMessage,
|
||||
addressLane: input.addressLane,
|
||||
carryoverMeta: input.carryoverMeta,
|
||||
llmPreDecomposeMeta: input.llmPreDecomposeMeta,
|
||||
knownOrganizations: input.knownOrganizations,
|
||||
activeOrganization: input.activeOrganization,
|
||||
sanitizeOutgoingAssistantText: input.sanitizeOutgoingAssistantText,
|
||||
buildAddressDebugPayload: input.buildAddressDebugPayload,
|
||||
buildAddressFollowupOffer: input.buildAddressFollowupOffer,
|
||||
mergeKnownOrganizations: input.mergeKnownOrganizations,
|
||||
toNonEmptyString: input.toNonEmptyString,
|
||||
appendItem: input.appendItem,
|
||||
getSession: input.getSession,
|
||||
persistSession: input.persistSession,
|
||||
cloneConversation: input.cloneConversation,
|
||||
logEvent: input.logEvent,
|
||||
messageIdFactory: input.messageIdFactory
|
||||
})
|
||||
);
|
||||
return runtime.response;
|
||||
}
|
||||
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
import type { RunAssistantAddressLaneResponseRuntimeInput } from "./assistantAddressLaneResponseRuntimeAdapter";
|
||||
|
||||
export interface BuildAssistantAddressLaneResponseRuntimeInputInput<ResponseType = unknown> {
|
||||
sessionId: RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["sessionId"];
|
||||
userMessage: RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["userMessage"];
|
||||
effectiveAddressUserMessage:
|
||||
RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["effectiveAddressUserMessage"];
|
||||
addressLane: RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["addressLane"];
|
||||
carryoverMeta?: RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["carryoverMeta"];
|
||||
llmPreDecomposeMeta?: RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["llmPreDecomposeMeta"];
|
||||
knownOrganizations: RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["knownOrganizations"];
|
||||
activeOrganization: RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["activeOrganization"];
|
||||
sanitizeOutgoingAssistantText:
|
||||
RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["sanitizeOutgoingAssistantText"];
|
||||
buildAddressDebugPayload:
|
||||
RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["buildAddressDebugPayload"];
|
||||
buildAddressFollowupOffer:
|
||||
RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["buildAddressFollowupOffer"];
|
||||
mergeKnownOrganizations:
|
||||
RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["mergeKnownOrganizations"];
|
||||
toNonEmptyString: RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["toNonEmptyString"];
|
||||
appendItem: RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["appendItem"];
|
||||
getSession: RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["getSession"];
|
||||
persistSession: RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["persistSession"];
|
||||
cloneConversation: RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["cloneConversation"];
|
||||
logEvent: RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["logEvent"];
|
||||
messageIdFactory: RunAssistantAddressLaneResponseRuntimeInput<ResponseType>["messageIdFactory"];
|
||||
}
|
||||
|
||||
export function buildAssistantAddressLaneResponseRuntimeInput<ResponseType = unknown>(
|
||||
input: BuildAssistantAddressLaneResponseRuntimeInputInput<ResponseType>
|
||||
): RunAssistantAddressLaneResponseRuntimeInput<ResponseType> {
|
||||
return {
|
||||
sessionId: input.sessionId,
|
||||
userMessage: input.userMessage,
|
||||
effectiveAddressUserMessage: input.effectiveAddressUserMessage,
|
||||
addressLane: input.addressLane,
|
||||
carryoverMeta: input.carryoverMeta,
|
||||
llmPreDecomposeMeta: input.llmPreDecomposeMeta,
|
||||
knownOrganizations: input.knownOrganizations,
|
||||
activeOrganization: input.activeOrganization,
|
||||
sanitizeOutgoingAssistantText: input.sanitizeOutgoingAssistantText,
|
||||
buildAddressDebugPayload: input.buildAddressDebugPayload,
|
||||
buildAddressFollowupOffer: input.buildAddressFollowupOffer,
|
||||
mergeKnownOrganizations: input.mergeKnownOrganizations,
|
||||
toNonEmptyString: input.toNonEmptyString,
|
||||
appendItem: input.appendItem,
|
||||
getSession: input.getSession,
|
||||
persistSession: input.persistSession,
|
||||
cloneConversation: input.cloneConversation,
|
||||
logEvent: input.logEvent,
|
||||
messageIdFactory: input.messageIdFactory
|
||||
};
|
||||
}
|
||||
@@ -6,6 +6,10 @@ import {
|
||||
runAssistantLivingChatLlmRuntime,
|
||||
type RunAssistantLivingChatLlmRuntimeInput
|
||||
} from "./assistantLivingChatLlmRuntimeAdapter";
|
||||
import {
|
||||
buildAssistantLivingChatHandlerRuntimeInput,
|
||||
buildAssistantLivingChatLlmRuntimeInput
|
||||
} from "./assistantLivingChatAttemptRuntimeInputBuilder";
|
||||
|
||||
type AssistantLivingChatHandlerInput<ResponseType> = TryHandleAssistantLivingChatRuntimeInput<ResponseType>;
|
||||
type AssistantLivingChatLlmInput = RunAssistantLivingChatLlmRuntimeInput;
|
||||
@@ -32,17 +36,19 @@ function buildExecuteLlmChat<ResponseType>(
|
||||
runLivingChatLlmSafe: (input: AssistantLivingChatLlmInput) => Promise<string>
|
||||
): AssistantLivingChatHandlerInput<ResponseType>["executeLlmChat"] {
|
||||
return async () =>
|
||||
runLivingChatLlmSafe({
|
||||
userMessage: input.userMessage,
|
||||
sessionItems: input.sessionItems,
|
||||
payload: input.payload,
|
||||
chatClient: input.chatClient,
|
||||
loadAssistantCanonExcerpt: input.loadAssistantCanonExcerpt,
|
||||
sanitizeOutgoingAssistantText: input.sanitizeOutgoingAssistantText,
|
||||
defaultModel: input.defaultModel,
|
||||
defaultBaseUrl: input.defaultBaseUrl,
|
||||
defaultApiKey: input.defaultApiKey
|
||||
});
|
||||
runLivingChatLlmSafe(
|
||||
buildAssistantLivingChatLlmRuntimeInput({
|
||||
userMessage: input.userMessage,
|
||||
sessionItems: input.sessionItems,
|
||||
payload: input.payload,
|
||||
chatClient: input.chatClient,
|
||||
loadAssistantCanonExcerpt: input.loadAssistantCanonExcerpt,
|
||||
sanitizeOutgoingAssistantText: input.sanitizeOutgoingAssistantText,
|
||||
defaultModel: input.defaultModel,
|
||||
defaultBaseUrl: input.defaultBaseUrl,
|
||||
defaultApiKey: input.defaultApiKey
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
export async function runAssistantLivingChatAttemptRuntime<ResponseType = unknown>(
|
||||
@@ -51,43 +57,45 @@ export async function runAssistantLivingChatAttemptRuntime<ResponseType = unknow
|
||||
const runLivingChatHandlerSafe = input.runLivingChatHandler ?? tryHandleAssistantLivingChatRuntime;
|
||||
const runLivingChatLlmSafe = input.runLivingChatLlm ?? runAssistantLivingChatLlmRuntime;
|
||||
const executeLlmChat = buildExecuteLlmChat(input, runLivingChatLlmSafe);
|
||||
return runLivingChatHandlerSafe({
|
||||
sessionId: input.sessionId,
|
||||
userMessage: input.userMessage,
|
||||
sessionItems: input.sessionItems,
|
||||
modeDecision: input.modeDecision,
|
||||
sessionScope: input.sessionScope,
|
||||
addressRuntimeMeta: input.addressRuntimeMeta,
|
||||
traceIdFactory: input.traceIdFactory,
|
||||
toNonEmptyString: input.toNonEmptyString,
|
||||
mergeKnownOrganizations: input.mergeKnownOrganizations,
|
||||
hasAssistantDataScopeMetaQuestionSignal: input.hasAssistantDataScopeMetaQuestionSignal,
|
||||
shouldHandleAsAssistantCapabilityMetaQuery: input.shouldHandleAsAssistantCapabilityMetaQuery,
|
||||
hasDestructiveDataActionSignal: input.hasDestructiveDataActionSignal,
|
||||
hasDangerOrCoercionSignal: input.hasDangerOrCoercionSignal,
|
||||
hasOperationalAdminActionRequestSignal: input.hasOperationalAdminActionRequestSignal,
|
||||
hasOrganizationFactLookupSignal: input.hasOrganizationFactLookupSignal,
|
||||
hasOrganizationFactFollowupSignal: input.hasOrganizationFactFollowupSignal,
|
||||
shouldEmitOrganizationSelectionReply: input.shouldEmitOrganizationSelectionReply,
|
||||
hasAssistantCapabilityQuestionSignal: input.hasAssistantCapabilityQuestionSignal,
|
||||
resolveDataScopeProbe: input.resolveDataScopeProbe,
|
||||
executeLlmChat,
|
||||
applyScriptGuard: input.applyScriptGuard,
|
||||
applyGroundingGuard: input.applyGroundingGuard,
|
||||
buildAssistantSafetyRefusalReply: input.buildAssistantSafetyRefusalReply,
|
||||
buildAssistantDataScopeContractReply: input.buildAssistantDataScopeContractReply,
|
||||
buildAssistantOrganizationFactBoundaryReply: input.buildAssistantOrganizationFactBoundaryReply,
|
||||
buildAssistantDataScopeSelectionReply: input.buildAssistantDataScopeSelectionReply,
|
||||
buildAssistantOperationalBoundaryReply: input.buildAssistantOperationalBoundaryReply,
|
||||
buildAssistantCapabilityContractReply: input.buildAssistantCapabilityContractReply,
|
||||
appendItem: input.appendItem,
|
||||
getSession: input.getSession,
|
||||
persistSession: input.persistSession,
|
||||
cloneConversation: input.cloneConversation,
|
||||
logEvent: input.logEvent,
|
||||
messageIdFactory: input.messageIdFactory,
|
||||
nowIso: input.nowIso,
|
||||
runLivingChatRuntime: input.runLivingChatRuntime,
|
||||
finalizeLivingChatTurn: input.finalizeLivingChatTurn
|
||||
});
|
||||
return runLivingChatHandlerSafe(
|
||||
buildAssistantLivingChatHandlerRuntimeInput({
|
||||
sessionId: input.sessionId,
|
||||
userMessage: input.userMessage,
|
||||
sessionItems: input.sessionItems,
|
||||
modeDecision: input.modeDecision,
|
||||
sessionScope: input.sessionScope,
|
||||
addressRuntimeMeta: input.addressRuntimeMeta,
|
||||
traceIdFactory: input.traceIdFactory,
|
||||
toNonEmptyString: input.toNonEmptyString,
|
||||
mergeKnownOrganizations: input.mergeKnownOrganizations,
|
||||
hasAssistantDataScopeMetaQuestionSignal: input.hasAssistantDataScopeMetaQuestionSignal,
|
||||
shouldHandleAsAssistantCapabilityMetaQuery: input.shouldHandleAsAssistantCapabilityMetaQuery,
|
||||
hasDestructiveDataActionSignal: input.hasDestructiveDataActionSignal,
|
||||
hasDangerOrCoercionSignal: input.hasDangerOrCoercionSignal,
|
||||
hasOperationalAdminActionRequestSignal: input.hasOperationalAdminActionRequestSignal,
|
||||
hasOrganizationFactLookupSignal: input.hasOrganizationFactLookupSignal,
|
||||
hasOrganizationFactFollowupSignal: input.hasOrganizationFactFollowupSignal,
|
||||
shouldEmitOrganizationSelectionReply: input.shouldEmitOrganizationSelectionReply,
|
||||
hasAssistantCapabilityQuestionSignal: input.hasAssistantCapabilityQuestionSignal,
|
||||
resolveDataScopeProbe: input.resolveDataScopeProbe,
|
||||
executeLlmChat,
|
||||
applyScriptGuard: input.applyScriptGuard,
|
||||
applyGroundingGuard: input.applyGroundingGuard,
|
||||
buildAssistantSafetyRefusalReply: input.buildAssistantSafetyRefusalReply,
|
||||
buildAssistantDataScopeContractReply: input.buildAssistantDataScopeContractReply,
|
||||
buildAssistantOrganizationFactBoundaryReply: input.buildAssistantOrganizationFactBoundaryReply,
|
||||
buildAssistantDataScopeSelectionReply: input.buildAssistantDataScopeSelectionReply,
|
||||
buildAssistantOperationalBoundaryReply: input.buildAssistantOperationalBoundaryReply,
|
||||
buildAssistantCapabilityContractReply: input.buildAssistantCapabilityContractReply,
|
||||
appendItem: input.appendItem,
|
||||
getSession: input.getSession,
|
||||
persistSession: input.persistSession,
|
||||
cloneConversation: input.cloneConversation,
|
||||
logEvent: input.logEvent,
|
||||
messageIdFactory: input.messageIdFactory,
|
||||
nowIso: input.nowIso,
|
||||
runLivingChatRuntime: input.runLivingChatRuntime,
|
||||
finalizeLivingChatTurn: input.finalizeLivingChatTurn
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
import type {
|
||||
TryHandleAssistantLivingChatRuntimeInput
|
||||
} from "./assistantLivingChatHandlerRuntimeAdapter";
|
||||
import type { RunAssistantLivingChatLlmRuntimeInput } from "./assistantLivingChatLlmRuntimeAdapter";
|
||||
|
||||
export interface BuildAssistantLivingChatLlmRuntimeInputInput {
|
||||
userMessage: RunAssistantLivingChatLlmRuntimeInput["userMessage"];
|
||||
sessionItems: RunAssistantLivingChatLlmRuntimeInput["sessionItems"];
|
||||
payload: RunAssistantLivingChatLlmRuntimeInput["payload"];
|
||||
chatClient: RunAssistantLivingChatLlmRuntimeInput["chatClient"];
|
||||
loadAssistantCanonExcerpt: RunAssistantLivingChatLlmRuntimeInput["loadAssistantCanonExcerpt"];
|
||||
sanitizeOutgoingAssistantText: RunAssistantLivingChatLlmRuntimeInput["sanitizeOutgoingAssistantText"];
|
||||
defaultModel: RunAssistantLivingChatLlmRuntimeInput["defaultModel"];
|
||||
defaultBaseUrl: RunAssistantLivingChatLlmRuntimeInput["defaultBaseUrl"];
|
||||
defaultApiKey?: RunAssistantLivingChatLlmRuntimeInput["defaultApiKey"];
|
||||
}
|
||||
|
||||
export function buildAssistantLivingChatLlmRuntimeInput(
|
||||
input: BuildAssistantLivingChatLlmRuntimeInputInput
|
||||
): RunAssistantLivingChatLlmRuntimeInput {
|
||||
return {
|
||||
userMessage: input.userMessage,
|
||||
sessionItems: input.sessionItems,
|
||||
payload: input.payload,
|
||||
chatClient: input.chatClient,
|
||||
loadAssistantCanonExcerpt: input.loadAssistantCanonExcerpt,
|
||||
sanitizeOutgoingAssistantText: input.sanitizeOutgoingAssistantText,
|
||||
defaultModel: input.defaultModel,
|
||||
defaultBaseUrl: input.defaultBaseUrl,
|
||||
defaultApiKey: input.defaultApiKey
|
||||
};
|
||||
}
|
||||
|
||||
export interface BuildAssistantLivingChatHandlerRuntimeInputInput<ResponseType = unknown>
|
||||
extends Omit<TryHandleAssistantLivingChatRuntimeInput<ResponseType>, "executeLlmChat"> {
|
||||
executeLlmChat: TryHandleAssistantLivingChatRuntimeInput<ResponseType>["executeLlmChat"];
|
||||
}
|
||||
|
||||
export function buildAssistantLivingChatHandlerRuntimeInput<ResponseType = unknown>(
|
||||
input: BuildAssistantLivingChatHandlerRuntimeInputInput<ResponseType>
|
||||
): TryHandleAssistantLivingChatRuntimeInput<ResponseType> {
|
||||
return {
|
||||
sessionId: input.sessionId,
|
||||
userMessage: input.userMessage,
|
||||
sessionItems: input.sessionItems,
|
||||
modeDecision: input.modeDecision,
|
||||
sessionScope: input.sessionScope,
|
||||
addressRuntimeMeta: input.addressRuntimeMeta,
|
||||
traceIdFactory: input.traceIdFactory,
|
||||
toNonEmptyString: input.toNonEmptyString,
|
||||
mergeKnownOrganizations: input.mergeKnownOrganizations,
|
||||
hasAssistantDataScopeMetaQuestionSignal: input.hasAssistantDataScopeMetaQuestionSignal,
|
||||
shouldHandleAsAssistantCapabilityMetaQuery: input.shouldHandleAsAssistantCapabilityMetaQuery,
|
||||
hasDestructiveDataActionSignal: input.hasDestructiveDataActionSignal,
|
||||
hasDangerOrCoercionSignal: input.hasDangerOrCoercionSignal,
|
||||
hasOperationalAdminActionRequestSignal: input.hasOperationalAdminActionRequestSignal,
|
||||
hasOrganizationFactLookupSignal: input.hasOrganizationFactLookupSignal,
|
||||
hasOrganizationFactFollowupSignal: input.hasOrganizationFactFollowupSignal,
|
||||
shouldEmitOrganizationSelectionReply: input.shouldEmitOrganizationSelectionReply,
|
||||
hasAssistantCapabilityQuestionSignal: input.hasAssistantCapabilityQuestionSignal,
|
||||
resolveDataScopeProbe: input.resolveDataScopeProbe,
|
||||
executeLlmChat: input.executeLlmChat,
|
||||
applyScriptGuard: input.applyScriptGuard,
|
||||
applyGroundingGuard: input.applyGroundingGuard,
|
||||
buildAssistantSafetyRefusalReply: input.buildAssistantSafetyRefusalReply,
|
||||
buildAssistantDataScopeContractReply: input.buildAssistantDataScopeContractReply,
|
||||
buildAssistantOrganizationFactBoundaryReply: input.buildAssistantOrganizationFactBoundaryReply,
|
||||
buildAssistantDataScopeSelectionReply: input.buildAssistantDataScopeSelectionReply,
|
||||
buildAssistantOperationalBoundaryReply: input.buildAssistantOperationalBoundaryReply,
|
||||
buildAssistantCapabilityContractReply: input.buildAssistantCapabilityContractReply,
|
||||
appendItem: input.appendItem,
|
||||
getSession: input.getSession,
|
||||
persistSession: input.persistSession,
|
||||
cloneConversation: input.cloneConversation,
|
||||
logEvent: input.logEvent,
|
||||
messageIdFactory: input.messageIdFactory,
|
||||
nowIso: input.nowIso,
|
||||
runLivingChatRuntime: input.runLivingChatRuntime,
|
||||
finalizeLivingChatTurn: input.finalizeLivingChatTurn
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user