ГЛОБАЛЬНЫЙ РЕФАКТОРИНГ АРХИТЕКТУРЫ - Рефакторинг этапов 2.46: склейка всего address-потока в отдельный assistantAddressAttemptRuntimeAdapter, для того чтобы из handleMessage убрать три локальных closure целиком. Все три моста (lane, response, living chat) прокидываются и не ломают контракт.
This commit is contained in:
@@ -0,0 +1,228 @@
|
||||
import {
|
||||
runAssistantAddressRuntime,
|
||||
type RunAssistantAddressRuntimeInput,
|
||||
type RunAssistantAddressRuntimeOutput
|
||||
} from "./assistantAddressRuntimeAdapter";
|
||||
import {
|
||||
runAssistantAddressLaneAttemptRuntime,
|
||||
type RunAssistantAddressLaneAttemptRuntimeInput
|
||||
} from "./assistantAddressLaneAttemptRuntimeAdapter";
|
||||
import {
|
||||
runAssistantAddressLaneResponseAttemptRuntime,
|
||||
type RunAssistantAddressLaneResponseAttemptRuntimeInput
|
||||
} from "./assistantAddressLaneResponseAttemptRuntimeAdapter";
|
||||
import {
|
||||
runAssistantLivingChatAttemptRuntime,
|
||||
type RunAssistantLivingChatAttemptRuntimeInput
|
||||
} from "./assistantLivingChatAttemptRuntimeAdapter";
|
||||
|
||||
interface AddressAttemptPayload {
|
||||
llmProvider?: unknown;
|
||||
useMock?: unknown;
|
||||
context?: {
|
||||
period_hint?: unknown;
|
||||
} | null;
|
||||
apiKey?: unknown;
|
||||
model?: unknown;
|
||||
baseUrl?: unknown;
|
||||
temperature?: number;
|
||||
maxOutputTokens?: number;
|
||||
}
|
||||
|
||||
interface AddressSessionScope {
|
||||
knownOrganizations: string[];
|
||||
selectedOrganization: string | null;
|
||||
activeOrganization: string | null;
|
||||
}
|
||||
|
||||
export interface RunAssistantAddressAttemptRuntimeInput<ResponseType = unknown>
|
||||
extends Omit<
|
||||
RunAssistantAddressRuntimeInput<ResponseType>,
|
||||
"llmProvider" | "useMock" | "payloadContextPeriodHint" | "runAddressLaneAttempt" | "finalizeAddressLaneResponse" | "tryHandleLivingChat"
|
||||
> {
|
||||
payload: AddressAttemptPayload;
|
||||
sessionScope: AddressSessionScope;
|
||||
mergeFollowupContextWithOrganizationScope: RunAssistantAddressLaneAttemptRuntimeInput["mergeFollowupContextWithOrganizationScope"];
|
||||
runAddressQueryTryHandle: RunAssistantAddressLaneAttemptRuntimeInput["runAddressQueryTryHandle"];
|
||||
mergeKnownOrganizations: RunAssistantAddressLaneResponseAttemptRuntimeInput<ResponseType>["mergeKnownOrganizations"];
|
||||
hasAssistantDataScopeMetaQuestionSignal: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["hasAssistantDataScopeMetaQuestionSignal"];
|
||||
shouldHandleAsAssistantCapabilityMetaQuery: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["shouldHandleAsAssistantCapabilityMetaQuery"];
|
||||
hasDestructiveDataActionSignal: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["hasDestructiveDataActionSignal"];
|
||||
hasDangerOrCoercionSignal: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["hasDangerOrCoercionSignal"];
|
||||
hasOperationalAdminActionRequestSignal: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["hasOperationalAdminActionRequestSignal"];
|
||||
hasOrganizationFactLookupSignal: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["hasOrganizationFactLookupSignal"];
|
||||
hasOrganizationFactFollowupSignal: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["hasOrganizationFactFollowupSignal"];
|
||||
shouldEmitOrganizationSelectionReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["shouldEmitOrganizationSelectionReply"];
|
||||
hasAssistantCapabilityQuestionSignal: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["hasAssistantCapabilityQuestionSignal"];
|
||||
resolveDataScopeProbe: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["resolveDataScopeProbe"];
|
||||
applyScriptGuard: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["applyScriptGuard"];
|
||||
applyGroundingGuard: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["applyGroundingGuard"];
|
||||
buildAssistantSafetyRefusalReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantSafetyRefusalReply"];
|
||||
buildAssistantDataScopeContractReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantDataScopeContractReply"];
|
||||
buildAssistantOrganizationFactBoundaryReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantOrganizationFactBoundaryReply"];
|
||||
buildAssistantDataScopeSelectionReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantDataScopeSelectionReply"];
|
||||
buildAssistantOperationalBoundaryReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantOperationalBoundaryReply"];
|
||||
buildAssistantCapabilityContractReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantCapabilityContractReply"];
|
||||
chatClient: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["chatClient"];
|
||||
loadAssistantCanonExcerpt: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["loadAssistantCanonExcerpt"];
|
||||
sanitizeOutgoingAssistantText: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["sanitizeOutgoingAssistantText"];
|
||||
defaultModel: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["defaultModel"];
|
||||
defaultBaseUrl: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["defaultBaseUrl"];
|
||||
defaultApiKey?: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["defaultApiKey"];
|
||||
buildAddressDebugPayload: RunAssistantAddressLaneResponseAttemptRuntimeInput<ResponseType>["buildAddressDebugPayload"];
|
||||
buildAddressFollowupOffer: RunAssistantAddressLaneResponseAttemptRuntimeInput<ResponseType>["buildAddressFollowupOffer"];
|
||||
appendItem: RunAssistantAddressLaneResponseAttemptRuntimeInput<ResponseType>["appendItem"];
|
||||
getSession: RunAssistantAddressLaneResponseAttemptRuntimeInput<ResponseType>["getSession"];
|
||||
persistSession: RunAssistantAddressLaneResponseAttemptRuntimeInput<ResponseType>["persistSession"];
|
||||
cloneConversation: RunAssistantAddressLaneResponseAttemptRuntimeInput<ResponseType>["cloneConversation"];
|
||||
logEvent: RunAssistantAddressRuntimeInput<ResponseType>["logEvent"];
|
||||
messageIdFactory: NonNullable<
|
||||
RunAssistantAddressLaneResponseAttemptRuntimeInput<ResponseType>["messageIdFactory"]
|
||||
>;
|
||||
runAddressRuntime?: (
|
||||
input: RunAssistantAddressRuntimeInput<ResponseType>
|
||||
) => Promise<RunAssistantAddressRuntimeOutput<ResponseType>>;
|
||||
runAddressLaneAttemptRuntime?: (
|
||||
input: RunAssistantAddressLaneAttemptRuntimeInput
|
||||
) => Promise<Awaited<ReturnType<RunAssistantAddressLaneAttemptRuntimeInput["runAddressQueryTryHandle"]>>>;
|
||||
runAddressLaneResponseAttemptRuntime?: (
|
||||
input: RunAssistantAddressLaneResponseAttemptRuntimeInput<ResponseType>
|
||||
) => ResponseType;
|
||||
runLivingChatAttemptRuntime?: (
|
||||
input: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>
|
||||
) => Promise<ResponseType | null>;
|
||||
}
|
||||
|
||||
export async function runAssistantAddressAttemptRuntime<ResponseType = unknown>(
|
||||
input: RunAssistantAddressAttemptRuntimeInput<ResponseType>
|
||||
): Promise<RunAssistantAddressRuntimeOutput<ResponseType>> {
|
||||
const runAddressRuntimeSafe = input.runAddressRuntime ?? runAssistantAddressRuntime;
|
||||
const runAddressLaneAttemptRuntimeSafe = input.runAddressLaneAttemptRuntime ?? runAssistantAddressLaneAttemptRuntime;
|
||||
const runAddressLaneResponseAttemptRuntimeSafe =
|
||||
input.runAddressLaneResponseAttemptRuntime ?? runAssistantAddressLaneResponseAttemptRuntime;
|
||||
const runLivingChatAttemptRuntimeSafe =
|
||||
input.runLivingChatAttemptRuntime ?? runAssistantLivingChatAttemptRuntime;
|
||||
|
||||
const finalizeAddressLaneResponse: RunAssistantAddressRuntimeInput<ResponseType>["finalizeAddressLaneResponse"] = (
|
||||
addressLane,
|
||||
effectiveAddressUserMessage,
|
||||
carryoverMeta = null,
|
||||
llmPreDecomposeMeta = null
|
||||
) =>
|
||||
runAddressLaneResponseAttemptRuntimeSafe({
|
||||
sessionId: input.sessionId,
|
||||
userMessage: input.userMessage,
|
||||
effectiveAddressUserMessage,
|
||||
addressLane,
|
||||
carryoverMeta,
|
||||
llmPreDecomposeMeta,
|
||||
knownOrganizations: input.sessionScope.knownOrganizations,
|
||||
activeOrganization: input.sessionScope.activeOrganization,
|
||||
sanitizeOutgoingAssistantText: input.sanitizeOutgoingAssistantText,
|
||||
buildAddressDebugPayload: input.buildAddressDebugPayload,
|
||||
buildAddressFollowupOffer: input.buildAddressFollowupOffer,
|
||||
mergeKnownOrganizations: input.mergeKnownOrganizations as any,
|
||||
toNonEmptyString: input.toNonEmptyString,
|
||||
appendItem: input.appendItem,
|
||||
getSession: input.getSession,
|
||||
persistSession: input.persistSession,
|
||||
cloneConversation: input.cloneConversation,
|
||||
logEvent: input.logEvent,
|
||||
messageIdFactory: input.messageIdFactory
|
||||
} as RunAssistantAddressLaneResponseAttemptRuntimeInput<ResponseType>);
|
||||
|
||||
const tryHandleLivingChat: RunAssistantAddressRuntimeInput<ResponseType>["tryHandleLivingChat"] = async (
|
||||
modeDecision,
|
||||
addressRuntimeMeta = null
|
||||
) =>
|
||||
runLivingChatAttemptRuntimeSafe({
|
||||
sessionId: input.sessionId,
|
||||
userMessage: input.userMessage,
|
||||
sessionItems: input.sessionItems,
|
||||
modeDecision,
|
||||
sessionScope: {
|
||||
knownOrganizations: input.sessionScope.knownOrganizations,
|
||||
selectedOrganization: input.sessionScope.selectedOrganization,
|
||||
activeOrganization: input.sessionScope.activeOrganization
|
||||
},
|
||||
addressRuntimeMeta,
|
||||
traceIdFactory: () => `chat-${input.messageIdFactory().replace(/^msg-/, "")}`,
|
||||
toNonEmptyString: input.toNonEmptyString,
|
||||
mergeKnownOrganizations: input.mergeKnownOrganizations as any,
|
||||
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,
|
||||
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,
|
||||
payload: input.payload,
|
||||
chatClient: input.chatClient,
|
||||
loadAssistantCanonExcerpt: input.loadAssistantCanonExcerpt,
|
||||
sanitizeOutgoingAssistantText: input.sanitizeOutgoingAssistantText,
|
||||
defaultModel: input.defaultModel,
|
||||
defaultBaseUrl: input.defaultBaseUrl,
|
||||
defaultApiKey: input.defaultApiKey
|
||||
} as RunAssistantLivingChatAttemptRuntimeInput<ResponseType>);
|
||||
|
||||
const runAddressLaneAttempt: RunAssistantAddressRuntimeInput<ResponseType>["runAddressLaneAttempt"] = async (
|
||||
messageUsed,
|
||||
carryMeta,
|
||||
analysisDateHint
|
||||
) =>
|
||||
runAddressLaneAttemptRuntimeSafe({
|
||||
messageUsed,
|
||||
carryMeta,
|
||||
analysisDateHint,
|
||||
activeOrganization: input.sessionScope.activeOrganization,
|
||||
mergeFollowupContextWithOrganizationScope: input.mergeFollowupContextWithOrganizationScope,
|
||||
runAddressQueryTryHandle: input.runAddressQueryTryHandle
|
||||
});
|
||||
|
||||
return runAddressRuntimeSafe({
|
||||
featureAssistantAddressQueryV1: input.featureAssistantAddressQueryV1,
|
||||
sessionId: input.sessionId,
|
||||
userMessage: input.userMessage,
|
||||
sessionItems: input.sessionItems,
|
||||
llmProvider: input.payload.llmProvider,
|
||||
useMock: Boolean(input.payload.useMock),
|
||||
featureAddressLlmPredecomposeV1: input.featureAddressLlmPredecomposeV1,
|
||||
runAddressLlmPreDecompose: input.runAddressLlmPreDecompose,
|
||||
buildAddressLlmPredecomposeContractV1: input.buildAddressLlmPredecomposeContractV1,
|
||||
sanitizeAddressMessageForFallback: input.sanitizeAddressMessageForFallback,
|
||||
toNonEmptyString: input.toNonEmptyString,
|
||||
resolveAddressFollowupCarryoverContext: input.resolveAddressFollowupCarryoverContext,
|
||||
resolveAssistantOrchestrationDecision: input.resolveAssistantOrchestrationDecision,
|
||||
buildAddressDialogContinuationContractV2: input.buildAddressDialogContinuationContractV2,
|
||||
runtimeAnalysisContextAsOfDate: input.runtimeAnalysisContextAsOfDate,
|
||||
payloadContextPeriodHint: input.payload?.context?.period_hint,
|
||||
compactWhitespace: input.compactWhitespace,
|
||||
runAddressLaneAttempt,
|
||||
isRetryableAddressLimitedResult: input.isRetryableAddressLimitedResult,
|
||||
finalizeAddressLaneResponse,
|
||||
tryHandleLivingChat,
|
||||
logEvent: input.logEvent,
|
||||
nowIso: input.nowIso,
|
||||
runAddressOrchestrationRuntime: input.runAddressOrchestrationRuntime,
|
||||
runAddressToolGateRuntime: input.runAddressToolGateRuntime,
|
||||
runAddressLaneRuntime: input.runAddressLaneRuntime
|
||||
});
|
||||
}
|
||||
@@ -16,12 +16,9 @@ import * as openaiResponsesClient_1 from "./openaiResponsesClient";
|
||||
import * as addressMcpClient_1 from "./addressMcpClient";
|
||||
import * as capabilitiesRegistry_1 from "./capabilitiesRegistry";
|
||||
import * as assistantCanon_1 from "./assistantCanon";
|
||||
import * as assistantAddressLaneResponseAttemptRuntimeAdapter_1 from "./assistantAddressLaneResponseAttemptRuntimeAdapter";
|
||||
import * as assistantAddressAttemptRuntimeAdapter_1 from "./assistantAddressAttemptRuntimeAdapter";
|
||||
import * as assistantCoverageGrounding_1 from "./assistantCoverageGrounding";
|
||||
import * as assistantDeepTurnAttemptRuntimeAdapter_1 from "./assistantDeepTurnAttemptRuntimeAdapter";
|
||||
import * as assistantAddressRuntimeAdapter_1 from "./assistantAddressRuntimeAdapter";
|
||||
import * as assistantAddressLaneAttemptRuntimeAdapter_1 from "./assistantAddressLaneAttemptRuntimeAdapter";
|
||||
import * as assistantLivingChatAttemptRuntimeAdapter_1 from "./assistantLivingChatAttemptRuntimeAdapter";
|
||||
import * as assistantUserTurnBootstrapRuntimeAdapter_1 from "./assistantUserTurnBootstrapRuntimeAdapter";
|
||||
import * as assistantQueryPlanning_1 from "./assistantQueryPlanning";
|
||||
import iconv from "iconv-lite";
|
||||
@@ -4340,40 +4337,30 @@ export class AssistantService {
|
||||
nowIso: () => new Date().toISOString()
|
||||
});
|
||||
const sessionOrganizationScope = resolveSessionOrganizationScopeContext(userMessage, session.items);
|
||||
const finalizeAddressLaneResponse = (addressLane, effectiveAddressUserMessage, carryoverMeta = null, llmPreDecomposeMeta = null) => (0, assistantAddressLaneResponseAttemptRuntimeAdapter_1.runAssistantAddressLaneResponseAttemptRuntime)({
|
||||
sessionId,
|
||||
userMessage,
|
||||
effectiveAddressUserMessage,
|
||||
addressLane,
|
||||
carryoverMeta,
|
||||
llmPreDecomposeMeta,
|
||||
knownOrganizations: sessionOrganizationScope.knownOrganizations,
|
||||
activeOrganization: sessionOrganizationScope.activeOrganization,
|
||||
sanitizeOutgoingAssistantText,
|
||||
buildAddressDebugPayload,
|
||||
buildAddressFollowupOffer,
|
||||
mergeKnownOrganizations,
|
||||
toNonEmptyString,
|
||||
appendItem: (targetSessionId, item) => this.sessions.appendItem(targetSessionId, item),
|
||||
getSession: (targetSessionId) => this.sessions.getSession(targetSessionId),
|
||||
persistSession: (sessionState) => this.sessionLogger.persistSession(sessionState),
|
||||
cloneConversation: (items) => cloneItems(items),
|
||||
logEvent: (payload) => (0, log_1.logJson)(payload),
|
||||
messageIdFactory: () => `msg-${(0, nanoid_1.nanoid)(10)}`
|
||||
});
|
||||
const tryHandleLivingChat = async (modeDecision, addressRuntimeMeta = null) => (0, assistantLivingChatAttemptRuntimeAdapter_1.runAssistantLivingChatAttemptRuntime)({
|
||||
const addressRuntime = await (0, assistantAddressAttemptRuntimeAdapter_1.runAssistantAddressAttemptRuntime)({
|
||||
featureAssistantAddressQueryV1: config_1.FEATURE_ASSISTANT_ADDRESS_QUERY_V1,
|
||||
sessionId,
|
||||
userMessage,
|
||||
sessionItems: session.items,
|
||||
modeDecision,
|
||||
payload,
|
||||
sessionScope: {
|
||||
knownOrganizations: sessionOrganizationScope.knownOrganizations,
|
||||
selectedOrganization: sessionOrganizationScope.selectedOrganization,
|
||||
activeOrganization: sessionOrganizationScope.activeOrganization
|
||||
},
|
||||
addressRuntimeMeta,
|
||||
traceIdFactory: () => `chat-${(0, nanoid_1.nanoid)(10)}`,
|
||||
featureAddressLlmPredecomposeV1: config_1.FEATURE_ASSISTANT_ADDRESS_QUERY_LLM_PREDECOMPOSE_V1,
|
||||
runAddressLlmPreDecompose: async () => runAddressLlmPreDecompose(this.normalizerService, payload, userMessage),
|
||||
buildAddressLlmPredecomposeContractV1: predecomposeContract_1.buildAddressLlmPredecomposeContractV1,
|
||||
sanitizeAddressMessageForFallback,
|
||||
toNonEmptyString,
|
||||
resolveAddressFollowupCarryoverContext,
|
||||
resolveAssistantOrchestrationDecision,
|
||||
buildAddressDialogContinuationContractV2,
|
||||
runtimeAnalysisContextAsOfDate: runtimeAnalysisContext.as_of_date,
|
||||
compactWhitespace,
|
||||
mergeFollowupContextWithOrganizationScope,
|
||||
runAddressQueryTryHandle: (laneMessageUsed, options) => this.addressQueryService.tryHandle(laneMessageUsed, options),
|
||||
isRetryableAddressLimitedResult,
|
||||
mergeKnownOrganizations,
|
||||
hasAssistantDataScopeMetaQuestionSignal,
|
||||
shouldHandleAsAssistantCapabilityMetaQuery,
|
||||
@@ -4393,56 +4380,23 @@ export class AssistantService {
|
||||
buildAssistantDataScopeSelectionReply,
|
||||
buildAssistantOperationalBoundaryReply,
|
||||
buildAssistantCapabilityContractReply,
|
||||
chatClient: this.chatClient,
|
||||
loadAssistantCanonExcerpt: assistantCanon_1.loadAssistantCanonExcerpt,
|
||||
sanitizeOutgoingAssistantText,
|
||||
defaultModel: config_1.DEFAULT_MODEL,
|
||||
defaultBaseUrl: config_1.DEFAULT_OPENAI_BASE_URL,
|
||||
defaultApiKey: process.env.OPENAI_API_KEY ?? "",
|
||||
buildAddressDebugPayload,
|
||||
buildAddressFollowupOffer,
|
||||
appendItem: (targetSessionId, item) => this.sessions.appendItem(targetSessionId, item),
|
||||
getSession: (targetSessionId) => this.sessions.getSession(targetSessionId),
|
||||
persistSession: (sessionState) => this.sessionLogger.persistSession(sessionState),
|
||||
cloneConversation: (items) => cloneItems(items),
|
||||
logEvent: (payload) => (0, log_1.logJson)(payload),
|
||||
messageIdFactory: () => `msg-${(0, nanoid_1.nanoid)(10)}`,
|
||||
nowIso: () => new Date().toISOString(),
|
||||
payload,
|
||||
chatClient: this.chatClient,
|
||||
loadAssistantCanonExcerpt: assistantCanon_1.loadAssistantCanonExcerpt,
|
||||
sanitizeOutgoingAssistantText,
|
||||
defaultModel: config_1.DEFAULT_MODEL,
|
||||
defaultBaseUrl: config_1.DEFAULT_OPENAI_BASE_URL,
|
||||
defaultApiKey: process.env.OPENAI_API_KEY ?? ""
|
||||
});
|
||||
let addressRuntimeMetaForDeep = null;
|
||||
const runAddressLaneAttempt = async (messageUsed, carryMeta, analysisDateHint) => (0, assistantAddressLaneAttemptRuntimeAdapter_1.runAssistantAddressLaneAttemptRuntime)({
|
||||
messageUsed,
|
||||
carryMeta: carryMeta ?? null,
|
||||
analysisDateHint: analysisDateHint ?? null,
|
||||
activeOrganization: sessionOrganizationScope.activeOrganization,
|
||||
mergeFollowupContextWithOrganizationScope,
|
||||
runAddressQueryTryHandle: (laneMessageUsed, options) => this.addressQueryService.tryHandle(laneMessageUsed, options)
|
||||
});
|
||||
const addressRuntime = await (0, assistantAddressRuntimeAdapter_1.runAssistantAddressRuntime)({
|
||||
featureAssistantAddressQueryV1: config_1.FEATURE_ASSISTANT_ADDRESS_QUERY_V1,
|
||||
sessionId,
|
||||
userMessage,
|
||||
sessionItems: session.items,
|
||||
llmProvider: payload?.llmProvider,
|
||||
useMock: Boolean(payload.useMock),
|
||||
featureAddressLlmPredecomposeV1: config_1.FEATURE_ASSISTANT_ADDRESS_QUERY_LLM_PREDECOMPOSE_V1,
|
||||
runAddressLlmPreDecompose: async () => runAddressLlmPreDecompose(this.normalizerService, payload, userMessage),
|
||||
buildAddressLlmPredecomposeContractV1: predecomposeContract_1.buildAddressLlmPredecomposeContractV1,
|
||||
sanitizeAddressMessageForFallback,
|
||||
toNonEmptyString,
|
||||
resolveAddressFollowupCarryoverContext,
|
||||
resolveAssistantOrchestrationDecision,
|
||||
buildAddressDialogContinuationContractV2,
|
||||
runtimeAnalysisContextAsOfDate: runtimeAnalysisContext.as_of_date,
|
||||
payloadContextPeriodHint: payload?.context?.period_hint,
|
||||
compactWhitespace,
|
||||
runAddressLaneAttempt,
|
||||
isRetryableAddressLimitedResult,
|
||||
finalizeAddressLaneResponse,
|
||||
tryHandleLivingChat: (modeDecision, runtimeMeta) => tryHandleLivingChat(modeDecision, runtimeMeta),
|
||||
logEvent: (payload) => (0, log_1.logJson)(payload),
|
||||
nowIso: () => new Date().toISOString()
|
||||
});
|
||||
addressRuntimeMetaForDeep = addressRuntime.addressRuntimeMetaForDeep;
|
||||
const addressRuntimeMetaForDeep = addressRuntime.addressRuntimeMetaForDeep;
|
||||
if (addressRuntime.handled && addressRuntime.response) {
|
||||
return addressRuntime.response;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user