ЮИ - редактура вопросов в АВТОПРОГОНАХ

This commit is contained in:
2026-04-18 10:13:16 +03:00
parent 0431595542
commit 9872ef5446
35 changed files with 1088 additions and 44 deletions
@@ -62,6 +62,7 @@ export interface RunAssistantAddressAttemptRuntimeInput<ResponseType = unknown>
hasOperationalAdminActionRequestSignal: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["hasOperationalAdminActionRequestSignal"];
hasOrganizationFactLookupSignal: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["hasOrganizationFactLookupSignal"];
hasOrganizationFactFollowupSignal: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["hasOrganizationFactFollowupSignal"];
hasLivingChatSignal: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["hasLivingChatSignal"];
shouldEmitOrganizationSelectionReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["shouldEmitOrganizationSelectionReply"];
hasAssistantCapabilityQuestionSignal: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["hasAssistantCapabilityQuestionSignal"];
resolveDataScopeProbe: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["resolveDataScopeProbe"];
@@ -69,6 +70,8 @@ export interface RunAssistantAddressAttemptRuntimeInput<ResponseType = unknown>
applyGroundingGuard: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["applyGroundingGuard"];
buildAssistantSafetyRefusalReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantSafetyRefusalReply"];
buildAssistantDataScopeContractReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantDataScopeContractReply"];
buildAssistantProactiveOrganizationOfferReply:
RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantProactiveOrganizationOfferReply"];
buildAssistantOrganizationFactBoundaryReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantOrganizationFactBoundaryReply"];
buildAssistantDataScopeSelectionReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantDataScopeSelectionReply"];
buildAssistantOperationalBoundaryReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantOperationalBoundaryReply"];
@@ -179,6 +182,7 @@ export async function runAssistantAddressAttemptRuntime<ResponseType = unknown>(
hasOperationalAdminActionRequestSignal: input.hasOperationalAdminActionRequestSignal,
hasOrganizationFactLookupSignal: input.hasOrganizationFactLookupSignal,
hasOrganizationFactFollowupSignal: input.hasOrganizationFactFollowupSignal,
hasLivingChatSignal: input.hasLivingChatSignal,
shouldEmitOrganizationSelectionReply: input.shouldEmitOrganizationSelectionReply,
hasAssistantCapabilityQuestionSignal: input.hasAssistantCapabilityQuestionSignal,
resolveDataScopeProbe: input.resolveDataScopeProbe,
@@ -186,6 +190,7 @@ export async function runAssistantAddressAttemptRuntime<ResponseType = unknown>(
applyGroundingGuard: input.applyGroundingGuard,
buildAssistantSafetyRefusalReply: input.buildAssistantSafetyRefusalReply,
buildAssistantDataScopeContractReply: input.buildAssistantDataScopeContractReply,
buildAssistantProactiveOrganizationOfferReply: input.buildAssistantProactiveOrganizationOfferReply,
buildAssistantOrganizationFactBoundaryReply: input.buildAssistantOrganizationFactBoundaryReply,
buildAssistantDataScopeSelectionReply: input.buildAssistantDataScopeSelectionReply,
buildAssistantOperationalBoundaryReply: input.buildAssistantOperationalBoundaryReply,
@@ -19,6 +19,7 @@ export interface AssistantBoundaryPolicyGroundingGuardInput {
export interface AssistantBoundaryPolicy {
buildAssistantDataScopeContractReply: (scopeProbe?: Record<string, unknown> | null) => string;
buildAssistantProactiveOrganizationOfferReply: (scopeProbe?: Record<string, unknown> | null) => string;
buildAssistantDataScopeSelectionReply: (organization: unknown) => string;
buildAssistantOrganizationFactBoundaryReply: (organization: unknown) => string;
buildAssistantOperationalBoundaryReply: () => string;
@@ -90,6 +91,32 @@ export function createAssistantBoundaryPolicy(deps: AssistantBoundaryPolicyDeps)
].join(" ");
}
function buildAssistantProactiveOrganizationOfferReply(scopeProbe: Record<string, unknown> | null = null): string {
const organizations = Array.isArray(scopeProbe?.organizations)
? scopeProbe.organizations
.map((item) => normalizeSelectedOrganization(item, deps.normalizeOrganizationScopeValue))
.filter((item) => item.length > 0)
.filter((item, index, array) => array.indexOf(item) === index)
: [];
if (organizations.length === 1) {
return [
`Если дальше пойдём в данные 1С, могу сразу держать в контуре ${organizations[0]}.`,
"Можно просто писать вопрос по документам, остаткам, НДС или контрагентам."
].join(" ");
}
if (organizations.length > 1) {
const preview = organizations.slice(0, 10).join(", ");
return [
`Если дальше пойдём в данные 1С, могу сразу зафиксировать организацию: ${preview}.`,
"Просто напишите название компании, и дальше буду держать её активной в этой сессии."
].join(" ");
}
return "";
}
function buildAssistantDataScopeSelectionReply(organization: unknown): string {
const selected = normalizeSelectedOrganization(organization, deps.normalizeOrganizationScopeValue);
return [
@@ -219,6 +246,7 @@ export function createAssistantBoundaryPolicy(deps: AssistantBoundaryPolicyDeps)
return {
buildAssistantDataScopeContractReply,
buildAssistantProactiveOrganizationOfferReply,
buildAssistantDataScopeSelectionReply,
buildAssistantOrganizationFactBoundaryReply,
buildAssistantOperationalBoundaryReply,
@@ -22,6 +22,7 @@ export interface BuildAssistantLivingChatAttemptRuntimeInputInput<ResponseType =
hasOperationalAdminActionRequestSignal: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["hasOperationalAdminActionRequestSignal"];
hasOrganizationFactLookupSignal: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["hasOrganizationFactLookupSignal"];
hasOrganizationFactFollowupSignal: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["hasOrganizationFactFollowupSignal"];
hasLivingChatSignal: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["hasLivingChatSignal"];
shouldEmitOrganizationSelectionReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["shouldEmitOrganizationSelectionReply"];
hasAssistantCapabilityQuestionSignal: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["hasAssistantCapabilityQuestionSignal"];
resolveDataScopeProbe: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["resolveDataScopeProbe"];
@@ -29,6 +30,8 @@ export interface BuildAssistantLivingChatAttemptRuntimeInputInput<ResponseType =
applyGroundingGuard: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["applyGroundingGuard"];
buildAssistantSafetyRefusalReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantSafetyRefusalReply"];
buildAssistantDataScopeContractReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantDataScopeContractReply"];
buildAssistantProactiveOrganizationOfferReply:
RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantProactiveOrganizationOfferReply"];
buildAssistantOrganizationFactBoundaryReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantOrganizationFactBoundaryReply"];
buildAssistantDataScopeSelectionReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantDataScopeSelectionReply"];
buildAssistantOperationalBoundaryReply: RunAssistantLivingChatAttemptRuntimeInput<ResponseType>["buildAssistantOperationalBoundaryReply"];
@@ -73,6 +76,7 @@ export function buildAssistantLivingChatAttemptRuntimeInput<ResponseType = unkno
hasOperationalAdminActionRequestSignal: input.hasOperationalAdminActionRequestSignal,
hasOrganizationFactLookupSignal: input.hasOrganizationFactLookupSignal,
hasOrganizationFactFollowupSignal: input.hasOrganizationFactFollowupSignal,
hasLivingChatSignal: input.hasLivingChatSignal,
shouldEmitOrganizationSelectionReply: input.shouldEmitOrganizationSelectionReply,
hasAssistantCapabilityQuestionSignal: input.hasAssistantCapabilityQuestionSignal,
resolveDataScopeProbe: input.resolveDataScopeProbe,
@@ -80,6 +84,7 @@ export function buildAssistantLivingChatAttemptRuntimeInput<ResponseType = unkno
applyGroundingGuard: input.applyGroundingGuard,
buildAssistantSafetyRefusalReply: input.buildAssistantSafetyRefusalReply,
buildAssistantDataScopeContractReply: input.buildAssistantDataScopeContractReply,
buildAssistantProactiveOrganizationOfferReply: input.buildAssistantProactiveOrganizationOfferReply,
buildAssistantOrganizationFactBoundaryReply: input.buildAssistantOrganizationFactBoundaryReply,
buildAssistantDataScopeSelectionReply: input.buildAssistantDataScopeSelectionReply,
buildAssistantOperationalBoundaryReply: input.buildAssistantOperationalBoundaryReply,
@@ -75,6 +75,7 @@ export async function runAssistantLivingChatAttemptRuntime<ResponseType = unknow
hasOperationalAdminActionRequestSignal: input.hasOperationalAdminActionRequestSignal,
hasOrganizationFactLookupSignal: input.hasOrganizationFactLookupSignal,
hasOrganizationFactFollowupSignal: input.hasOrganizationFactFollowupSignal,
hasLivingChatSignal: input.hasLivingChatSignal,
shouldEmitOrganizationSelectionReply: input.shouldEmitOrganizationSelectionReply,
hasAssistantCapabilityQuestionSignal: input.hasAssistantCapabilityQuestionSignal,
resolveDataScopeProbe: input.resolveDataScopeProbe,
@@ -83,6 +84,7 @@ export async function runAssistantLivingChatAttemptRuntime<ResponseType = unknow
applyGroundingGuard: input.applyGroundingGuard,
buildAssistantSafetyRefusalReply: input.buildAssistantSafetyRefusalReply,
buildAssistantDataScopeContractReply: input.buildAssistantDataScopeContractReply,
buildAssistantProactiveOrganizationOfferReply: input.buildAssistantProactiveOrganizationOfferReply,
buildAssistantOrganizationFactBoundaryReply: input.buildAssistantOrganizationFactBoundaryReply,
buildAssistantDataScopeSelectionReply: input.buildAssistantDataScopeSelectionReply,
buildAssistantOperationalBoundaryReply: input.buildAssistantOperationalBoundaryReply,
@@ -56,6 +56,7 @@ export function buildAssistantLivingChatHandlerRuntimeInput<ResponseType = unkno
hasOperationalAdminActionRequestSignal: input.hasOperationalAdminActionRequestSignal,
hasOrganizationFactLookupSignal: input.hasOrganizationFactLookupSignal,
hasOrganizationFactFollowupSignal: input.hasOrganizationFactFollowupSignal,
hasLivingChatSignal: input.hasLivingChatSignal,
shouldEmitOrganizationSelectionReply: input.shouldEmitOrganizationSelectionReply,
hasAssistantCapabilityQuestionSignal: input.hasAssistantCapabilityQuestionSignal,
resolveDataScopeProbe: input.resolveDataScopeProbe,
@@ -64,6 +65,7 @@ export function buildAssistantLivingChatHandlerRuntimeInput<ResponseType = unkno
applyGroundingGuard: input.applyGroundingGuard,
buildAssistantSafetyRefusalReply: input.buildAssistantSafetyRefusalReply,
buildAssistantDataScopeContractReply: input.buildAssistantDataScopeContractReply,
buildAssistantProactiveOrganizationOfferReply: input.buildAssistantProactiveOrganizationOfferReply,
buildAssistantOrganizationFactBoundaryReply: input.buildAssistantOrganizationFactBoundaryReply,
buildAssistantDataScopeSelectionReply: input.buildAssistantDataScopeSelectionReply,
buildAssistantOperationalBoundaryReply: input.buildAssistantOperationalBoundaryReply,
@@ -25,6 +25,7 @@ export interface TryHandleAssistantLivingChatRuntimeInput<ResponseType = unknown
hasOperationalAdminActionRequestSignal: AssistantLivingChatRuntimeInput["hasOperationalAdminActionRequestSignal"];
hasOrganizationFactLookupSignal: AssistantLivingChatRuntimeInput["hasOrganizationFactLookupSignal"];
hasOrganizationFactFollowupSignal: AssistantLivingChatRuntimeInput["hasOrganizationFactFollowupSignal"];
hasLivingChatSignal: AssistantLivingChatRuntimeInput["hasLivingChatSignal"];
shouldEmitOrganizationSelectionReply: AssistantLivingChatRuntimeInput["shouldEmitOrganizationSelectionReply"];
hasAssistantCapabilityQuestionSignal: AssistantLivingChatRuntimeInput["hasAssistantCapabilityQuestionSignal"];
resolveDataScopeProbe: AssistantLivingChatRuntimeInput["resolveDataScopeProbe"];
@@ -33,6 +34,7 @@ export interface TryHandleAssistantLivingChatRuntimeInput<ResponseType = unknown
applyGroundingGuard: AssistantLivingChatRuntimeInput["applyGroundingGuard"];
buildAssistantSafetyRefusalReply: AssistantLivingChatRuntimeInput["buildAssistantSafetyRefusalReply"];
buildAssistantDataScopeContractReply: AssistantLivingChatRuntimeInput["buildAssistantDataScopeContractReply"];
buildAssistantProactiveOrganizationOfferReply: AssistantLivingChatRuntimeInput["buildAssistantProactiveOrganizationOfferReply"];
buildAssistantOrganizationFactBoundaryReply: AssistantLivingChatRuntimeInput["buildAssistantOrganizationFactBoundaryReply"];
buildAssistantDataScopeSelectionReply: AssistantLivingChatRuntimeInput["buildAssistantDataScopeSelectionReply"];
buildAssistantOperationalBoundaryReply: AssistantLivingChatRuntimeInput["buildAssistantOperationalBoundaryReply"];
@@ -76,6 +78,7 @@ export async function tryHandleAssistantLivingChatRuntime<ResponseType = unknown
hasOperationalAdminActionRequestSignal: input.hasOperationalAdminActionRequestSignal,
hasOrganizationFactLookupSignal: input.hasOrganizationFactLookupSignal,
hasOrganizationFactFollowupSignal: input.hasOrganizationFactFollowupSignal,
hasLivingChatSignal: input.hasLivingChatSignal,
shouldEmitOrganizationSelectionReply: input.shouldEmitOrganizationSelectionReply,
hasAssistantCapabilityQuestionSignal: input.hasAssistantCapabilityQuestionSignal,
resolveDataScopeProbe: input.resolveDataScopeProbe,
@@ -84,6 +87,7 @@ export async function tryHandleAssistantLivingChatRuntime<ResponseType = unknown
applyGroundingGuard: input.applyGroundingGuard,
buildAssistantSafetyRefusalReply: input.buildAssistantSafetyRefusalReply,
buildAssistantDataScopeContractReply: input.buildAssistantDataScopeContractReply,
buildAssistantProactiveOrganizationOfferReply: input.buildAssistantProactiveOrganizationOfferReply,
buildAssistantOrganizationFactBoundaryReply: input.buildAssistantOrganizationFactBoundaryReply,
buildAssistantDataScopeSelectionReply: input.buildAssistantDataScopeSelectionReply,
buildAssistantOperationalBoundaryReply: input.buildAssistantOperationalBoundaryReply,
@@ -31,6 +31,7 @@ export interface AssistantLivingChatRuntimeInput {
hasOperationalAdminActionRequestSignal: (message: string) => boolean;
hasOrganizationFactLookupSignal: (message: string) => boolean;
hasOrganizationFactFollowupSignal: (message: string, items: unknown[]) => boolean;
hasLivingChatSignal: (message: string) => boolean;
shouldEmitOrganizationSelectionReply: (message: string, activeOrganization: string | null) => boolean;
hasAssistantCapabilityQuestionSignal: (message: string) => boolean;
resolveDataScopeProbe: () => Promise<Record<string, unknown> | null>;
@@ -51,6 +52,7 @@ export interface AssistantLivingChatRuntimeInput {
};
buildAssistantSafetyRefusalReply: () => string;
buildAssistantDataScopeContractReply: (scopeProbe: Record<string, unknown> | null) => string;
buildAssistantProactiveOrganizationOfferReply: (scopeProbe: Record<string, unknown> | null) => string;
buildAssistantOrganizationFactBoundaryReply: (organization: string | null) => string;
buildAssistantDataScopeSelectionReply: (organization: string | null) => string;
buildAssistantOperationalBoundaryReply: () => string;
@@ -134,6 +136,13 @@ function findLastAddressDebugWithItem(items: unknown[]): Record<string, unknown>
return null;
}
function hasPriorAssistantTurn(items: unknown[]): boolean {
if (!Array.isArray(items)) {
return false;
}
return items.some((item) => item && typeof item === "object" && (item as { role?: string }).role === "assistant");
}
function findLastAddressDebug(items: unknown[]): Record<string, unknown> | null {
if (!Array.isArray(items)) {
return null;
@@ -252,6 +261,7 @@ export async function runAssistantLivingChatRuntime(
let livingChatScriptGuardReason: string | null = null;
let livingChatGroundingGuardApplied = false;
let livingChatGroundingGuardReason: string | null = null;
let livingChatProactiveScopeOfferApplied = false;
let knownOrganizations = input.mergeKnownOrganizations(input.sessionScope.knownOrganizations ?? []);
let selectedOrganization = input.toNonEmptyString(input.sessionScope.selectedOrganization);
let activeOrganization = input.toNonEmptyString(input.sessionScope.activeOrganization);
@@ -348,6 +358,33 @@ export async function runAssistantLivingChatRuntime(
livingChatGroundingGuardReason = groundingGuard.reason;
livingChatSource = "llm_chat_grounding_guard";
}
const shouldOfferProactiveOrganizationScope =
!selectedOrganization &&
!activeOrganization &&
!hasPriorAssistantTurn(input.sessionItems) &&
input.modeDecision?.mode === "chat" &&
input.hasLivingChatSignal(userMessage);
if (shouldOfferProactiveOrganizationScope) {
const proactiveScopeProbe = await input.resolveDataScopeProbe();
const mergedKnownOrganizations = input.mergeKnownOrganizations([
...knownOrganizations,
...(Array.isArray(proactiveScopeProbe?.organizations) ? (proactiveScopeProbe.organizations as unknown[]) : [])
]);
knownOrganizations = mergedKnownOrganizations;
if (!activeOrganization && mergedKnownOrganizations.length === 1) {
activeOrganization = mergedKnownOrganizations[0];
}
const proactiveOffer = input.buildAssistantProactiveOrganizationOfferReply(proactiveScopeProbe);
if (proactiveOffer) {
chatText = [chatText, proactiveOffer].filter((part) => String(part ?? "").trim().length > 0).join(" ");
livingChatProactiveScopeOfferApplied = true;
livingChatSource = "llm_chat_with_proactive_scope_offer";
if (!dataScopeProbe) {
dataScopeProbe = proactiveScopeProbe;
}
}
}
}
if (!chatText) {
@@ -385,6 +422,7 @@ export async function runAssistantLivingChatRuntime(
living_chat_script_guard_reason: livingChatScriptGuardReason,
living_chat_grounding_guard_applied: livingChatGroundingGuardApplied,
living_chat_grounding_guard_reason: livingChatGroundingGuardReason,
living_chat_proactive_scope_offer_applied: livingChatProactiveScopeOfferApplied,
living_chat_data_scope_probe_status: dataScopeProbe?.status ?? null,
living_chat_data_scope_probe_channel: dataScopeProbe?.channel ?? null,
living_chat_data_scope_probe_org_count: Array.isArray(dataScopeProbe?.organizations)
@@ -4981,6 +4981,7 @@ export class AssistantService {
hasOperationalAdminActionRequestSignal,
hasOrganizationFactLookupSignal,
hasOrganizationFactFollowupSignal,
hasLivingChatSignal,
shouldEmitOrganizationSelectionReply,
hasAssistantCapabilityQuestionSignal,
resolveDataScopeProbe: () => resolveAssistantDataScopeProbe(),
@@ -4988,6 +4989,7 @@ export class AssistantService {
applyGroundingGuard: applyLivingChatGroundingGuardFromPolicy,
buildAssistantSafetyRefusalReply: buildAssistantSafetyRefusalReplyFromPolicy,
buildAssistantDataScopeContractReply: buildAssistantDataScopeContractReplyFromPolicy,
buildAssistantProactiveOrganizationOfferReply: assistantBoundaryPolicy.buildAssistantProactiveOrganizationOfferReply,
buildAssistantOrganizationFactBoundaryReply: buildAssistantOrganizationFactBoundaryReplyFromPolicy,
buildAssistantDataScopeSelectionReply: buildAssistantDataScopeSelectionReplyFromPolicy,
buildAssistantOperationalBoundaryReply: buildAssistantOperationalBoundaryReplyFromPolicy,
@@ -43,6 +43,29 @@ export function createAssistantTransitionPolicy(deps) {
);
}
function hasExplicitInventorySameDatePivotSignal(userMessage) {
const normalized = deps
.compactWhitespace(deps.repairAddressMojibake(String(userMessage ?? "")).toLowerCase())
.replace(/ё/g, "е");
if (!normalized) {
return false;
}
const hasInventoryLexeme = /(?:остат|склад|товар|номенклатур|позиц)/iu.test(normalized);
if (!hasInventoryLexeme) {
return false;
}
const sameDatePhrases = [
"на ту же дат",
"на эту же дат",
"на эту дат",
"эту дат",
"та же дата",
"тот же период",
"этот же период"
];
return sameDatePhrases.some((phrase) => normalized.includes(phrase));
}
function shouldKeepPreviousIntentForShortCounterpartyRetarget(userMessage, sourceIntent) {
const normalized = deps.compactWhitespace(
deps.repairAddressMojibake(String(userMessage ?? "")).toLowerCase()
@@ -227,6 +250,10 @@ export function createAssistantTransitionPolicy(deps) {
Boolean(recentInventoryRootFrame)
)
: false;
const hasExplicitInventorySameDatePivotPrimary = hasExplicitInventorySameDatePivotSignal(userMessage);
const hasExplicitInventorySameDatePivotAlternate = deps.toNonEmptyString(alternateMessage)
? hasExplicitInventorySameDatePivotSignal(String(alternateMessage ?? ""))
: false;
let hasStrongFollowupReference =
hasPrimaryIndexReferenceSignal ||
hasAlternateIndexReferenceSignal ||
@@ -550,6 +577,11 @@ export function createAssistantTransitionPolicy(deps) {
(hasInventoryRootRestatementPrimary || hasInventoryRootRestatementAlternate) &&
!deps.hasForeignAccountingPivotOverInventoryMessage(userMessage, alternateMessage)
);
const explicitInventorySameDatePivot = Boolean(
!inventoryRootFrame &&
(hasExplicitInventorySameDatePivotPrimary || hasExplicitInventorySameDatePivotAlternate) &&
!deps.hasForeignAccountingPivotOverInventoryMessage(userMessage, alternateMessage)
);
const rootScopedPivot = rootContextOnlyPivot || inventoryRootTemporalPivot || inventoryRootRestatementPivot;
if (rootScopedPivot) {
previousIntent = null;
@@ -651,7 +683,9 @@ export function createAssistantTransitionPolicy(deps) {
const carryoverTargetIntent =
followupSelectionMode === "carry_root_context"
? inventoryRootFrame?.intent ?? displayedEntityTargetIntent ?? explicitIntent ?? previousIntent ?? undefined
: displayedEntityTargetIntent ?? explicitIntent ?? previousIntent ?? undefined;
: explicitInventorySameDatePivot
? "inventory_on_hand_as_of_date"
: displayedEntityTargetIntent ?? explicitIntent ?? previousIntent ?? undefined;
return {
followupContext: {
previous_intent: previousIntent ?? undefined,
@@ -67,6 +67,7 @@ export interface AssistantTurnRuntimeBuilderDeps<ResponseType = unknown> {
AddressAttemptRuntimeInput<ResponseType>["hasOperationalAdminActionRequestSignal"];
hasOrganizationFactLookupSignal: AddressAttemptRuntimeInput<ResponseType>["hasOrganizationFactLookupSignal"];
hasOrganizationFactFollowupSignal: AddressAttemptRuntimeInput<ResponseType>["hasOrganizationFactFollowupSignal"];
hasLivingChatSignal: AddressAttemptRuntimeInput<ResponseType>["hasLivingChatSignal"];
shouldEmitOrganizationSelectionReply:
AddressAttemptRuntimeInput<ResponseType>["shouldEmitOrganizationSelectionReply"];
hasAssistantCapabilityQuestionSignal:
@@ -77,6 +78,8 @@ export interface AssistantTurnRuntimeBuilderDeps<ResponseType = unknown> {
buildAssistantSafetyRefusalReply: AddressAttemptRuntimeInput<ResponseType>["buildAssistantSafetyRefusalReply"];
buildAssistantDataScopeContractReply:
AddressAttemptRuntimeInput<ResponseType>["buildAssistantDataScopeContractReply"];
buildAssistantProactiveOrganizationOfferReply:
AddressAttemptRuntimeInput<ResponseType>["buildAssistantProactiveOrganizationOfferReply"];
buildAssistantOrganizationFactBoundaryReply:
AddressAttemptRuntimeInput<ResponseType>["buildAssistantOrganizationFactBoundaryReply"];
buildAssistantDataScopeSelectionReply:
@@ -164,6 +167,7 @@ export function buildAssistantAddressAttemptRuntimeInput<ResponseType = unknown>
hasOperationalAdminActionRequestSignal: deps.hasOperationalAdminActionRequestSignal,
hasOrganizationFactLookupSignal: deps.hasOrganizationFactLookupSignal,
hasOrganizationFactFollowupSignal: deps.hasOrganizationFactFollowupSignal,
hasLivingChatSignal: deps.hasLivingChatSignal,
shouldEmitOrganizationSelectionReply: deps.shouldEmitOrganizationSelectionReply,
hasAssistantCapabilityQuestionSignal: deps.hasAssistantCapabilityQuestionSignal,
resolveDataScopeProbe: deps.resolveDataScopeProbe,
@@ -171,6 +175,7 @@ export function buildAssistantAddressAttemptRuntimeInput<ResponseType = unknown>
applyGroundingGuard: deps.applyGroundingGuard,
buildAssistantSafetyRefusalReply: deps.buildAssistantSafetyRefusalReply,
buildAssistantDataScopeContractReply: deps.buildAssistantDataScopeContractReply,
buildAssistantProactiveOrganizationOfferReply: deps.buildAssistantProactiveOrganizationOfferReply,
buildAssistantOrganizationFactBoundaryReply: deps.buildAssistantOrganizationFactBoundaryReply,
buildAssistantDataScopeSelectionReply: deps.buildAssistantDataScopeSelectionReply,
buildAssistantOperationalBoundaryReply: deps.buildAssistantOperationalBoundaryReply,