АРЧ АП11 - Вынести living-chat boundary policy из assistantService в отдельный модуль

This commit is contained in:
2026-04-16 09:21:48 +03:00
parent d7c4eb781a
commit 606654641b
5 changed files with 541 additions and 14 deletions
@@ -20,6 +20,7 @@ import * as assistantCanon_1 from "./assistantCanon";
import * as assistantAddressAttemptRuntimeAdapter_1 from "./assistantAddressAttemptRuntimeAdapter";
import * as assistantCoverageGrounding_1 from "./assistantCoverageGrounding";
import * as assistantDeepTurnAttemptRuntimeAdapter_1 from "./assistantDeepTurnAttemptRuntimeAdapter";
import * as assistantBoundaryPolicy_1 from "./assistantBoundaryPolicy";
import * as assistantOrganizationScopeRuntimeAdapter_1 from "./assistantOrganizationScopeRuntimeAdapter";
import * as assistantOrganizationMatcher_1 from "./assistantOrganizationMatcher";
import * as assistantTurnAttemptRuntimeAdapter_1 from "./assistantTurnAttemptRuntimeAdapter";
@@ -5884,6 +5885,33 @@ async function resolveAssistantDataScopeProbe() {
});
return fallback;
}
const assistantBoundaryPolicy = (0, assistantBoundaryPolicy_1.createAssistantBoundaryPolicy)({
activeMcpChannel: config_1.ASSISTANT_MCP_CHANNEL,
normalizeOrganizationScopeValue,
toNonEmptyString,
hasOrganizationFactLookupSignal
});
function buildAssistantDataScopeContractReplyFromPolicy(scopeProbe = null) {
return assistantBoundaryPolicy.buildAssistantDataScopeContractReply(scopeProbe);
}
function buildAssistantDataScopeSelectionReplyFromPolicy(organization) {
return assistantBoundaryPolicy.buildAssistantDataScopeSelectionReply(organization);
}
function buildAssistantOrganizationFactBoundaryReplyFromPolicy(organization) {
return assistantBoundaryPolicy.buildAssistantOrganizationFactBoundaryReply(organization);
}
function buildAssistantOperationalBoundaryReplyFromPolicy() {
return assistantBoundaryPolicy.buildAssistantOperationalBoundaryReply();
}
function buildAssistantSafetyRefusalReplyFromPolicy() {
return assistantBoundaryPolicy.buildAssistantSafetyRefusalReply();
}
function applyLivingChatScriptGuardFromPolicy(chatText, userMessage) {
return assistantBoundaryPolicy.applyLivingChatScriptGuard(chatText, userMessage);
}
function applyLivingChatGroundingGuardFromPolicy(input) {
return assistantBoundaryPolicy.applyLivingChatGroundingGuard(input);
}
function buildAssistantDataScopeContractReply(scopeProbe = null) {
const channel = String(scopeProbe?.channel ?? config_1.ASSISTANT_MCP_CHANNEL ?? "default");
const organizations = Array.isArray(scopeProbe?.organizations) ? scopeProbe.organizations : [];
@@ -6165,13 +6193,13 @@ export class AssistantService {
shouldEmitOrganizationSelectionReply,
hasAssistantCapabilityQuestionSignal,
resolveDataScopeProbe: () => resolveAssistantDataScopeProbe(),
applyScriptGuard: (chatText, runtimeUserMessage) => applyLivingChatScriptGuard(chatText, runtimeUserMessage),
applyGroundingGuard: (guardInput) => applyLivingChatGroundingGuard(guardInput),
buildAssistantSafetyRefusalReply,
buildAssistantDataScopeContractReply,
buildAssistantOrganizationFactBoundaryReply,
buildAssistantDataScopeSelectionReply,
buildAssistantOperationalBoundaryReply,
applyScriptGuard: applyLivingChatScriptGuardFromPolicy,
applyGroundingGuard: applyLivingChatGroundingGuardFromPolicy,
buildAssistantSafetyRefusalReply: buildAssistantSafetyRefusalReplyFromPolicy,
buildAssistantDataScopeContractReply: buildAssistantDataScopeContractReplyFromPolicy,
buildAssistantOrganizationFactBoundaryReply: buildAssistantOrganizationFactBoundaryReplyFromPolicy,
buildAssistantDataScopeSelectionReply: buildAssistantDataScopeSelectionReplyFromPolicy,
buildAssistantOperationalBoundaryReply: buildAssistantOperationalBoundaryReplyFromPolicy,
buildAssistantCapabilityContractReply,
loadAssistantCanonExcerpt: assistantCanon_1.loadAssistantCanonExcerpt,
sanitizeOutgoingAssistantText,