АРЧ АП11 - Вынести provider runtime policy из оркестрации и закрыть Phase 6 агентным прогоном

This commit is contained in:
2026-04-17 12:02:38 +03:00
parent 15fa643fc8
commit f5ff844105
16 changed files with 647 additions and 52 deletions
@@ -24,6 +24,7 @@ import * as assistantBoundaryPolicy_1 from "./assistantBoundaryPolicy";
import * as assistantLivingModePolicy_1 from "./assistantLivingModePolicy";
import * as assistantMetaFollowupPolicy_1 from "./assistantMetaFollowupPolicy";
import * as assistantMemoryRecapPolicy_1 from "./assistantMemoryRecapPolicy";
import * as assistantProviderExecutionPolicy_1 from "./assistantProviderExecutionPolicy";
import * as assistantRoutePolicy_1 from "./assistantRoutePolicy";
import * as assistantTransitionPolicy_1 from "./assistantTransitionPolicy";
import * as assistantOrganizationScopeRuntimeAdapter_1 from "./assistantOrganizationScopeRuntimeAdapter";
@@ -3781,6 +3782,8 @@ function hasPredecomposeDiagnosticUncertaintyLead(text) {
return /^(?:неясно|не\s+ясно|непонятно|не\s+понятно|unclear|not\s+clear|ambiguous|unknown)(?=$|[\s,.;:!?])/iu.test(normalized);
}
function attachAddressPredecomposeContract(meta, sourceMessage) {
const sourceMeta = meta && typeof meta === "object" ? meta : {};
const { providerExecutionInput, providerExecutionContract: providerExecutionContractInput, ...restMeta } = sourceMeta;
const canonicalMessage = toNonEmptyString(meta?.effectiveMessage) ?? String(sourceMessage ?? "");
const predecomposeContract = (0, predecomposeContract_1.buildAddressLlmPredecomposeContractV1)({
sourceMessage: String(sourceMessage ?? ""),
@@ -3792,20 +3795,34 @@ function attachAddressPredecomposeContract(meta, sourceMessage) {
canonicalMessage,
predecomposeContract
});
const providerExecutionContract = providerExecutionContractInput && typeof providerExecutionContractInput === "object"
? providerExecutionContractInput
: assistantProviderExecutionPolicy.resolveProviderExecutionState({
llmProvider: providerExecutionInput?.llmProvider,
useMock: providerExecutionInput?.useMock,
baseUrl: providerExecutionInput?.baseUrl,
llmPreDecomposeReason: restMeta?.reason
});
return {
...meta,
...restMeta,
providerExecutionContract,
predecomposeContract,
semanticExtractionContract
};
}
async function runAddressLlmPreDecompose(normalizerService, payload, userMessage) {
const provider = payload?.llmProvider === "local" ? "local" : payload?.llmProvider === "openai" ? "openai" : null;
const provider = assistantProviderExecutionPolicy.normalizeProvider(payload?.llmProvider);
const sanitizedUserMessage = sanitizeAddressMessageForFallback(userMessage);
const fallbackCandidate = resolveAddressDeterministicFallback(userMessage, sanitizedUserMessage);
const baseMeta = {
attempted: false,
applied: false,
provider,
providerExecutionInput: {
llmProvider: payload?.llmProvider,
useMock: payload?.useMock,
baseUrl: payload?.baseUrl
},
traceId: null,
effectiveMessage: userMessage,
reason: "not_attempted",
@@ -4705,6 +4722,7 @@ function normalizeOrganizationScopeValue(value) {
.trim();
return unwrapped ? unwrapped : null;
}
const assistantProviderExecutionPolicy = (0, assistantProviderExecutionPolicy_1.createAssistantProviderExecutionPolicy)();
const assistantLivingModePolicy = (0, assistantLivingModePolicy_1.createAssistantLivingModePolicy)({
featureAssistantLivingChatRouterV1: config_1.FEATURE_ASSISTANT_LIVING_CHAT_ROUTER_V1,
compactWhitespace,
@@ -4714,7 +4732,8 @@ const assistantLivingModePolicy = (0, assistantLivingModePolicy_1.createAssistan
hasReferentialPointer,
hasSmallTalkSignal,
hasAssistantCapabilityQuestionSignal,
hasOperationalAdminActionRequestSignal
hasOperationalAdminActionRequestSignal,
resolveProviderExecutionState: assistantProviderExecutionPolicy.resolveProviderExecutionState
});
const assistantMetaFollowupPolicy = (0, assistantMetaFollowupPolicy_1.createAssistantMetaFollowupPolicy)({
hasAssistantDataScopeMetaQuestionSignal: assistantLivingModePolicy.hasAssistantDataScopeMetaQuestionSignal,
@@ -4760,7 +4779,8 @@ const assistantRoutePolicy = (0, assistantRoutePolicy_1.createAssistantRoutePoli
hasDirectDeepAnalysisSignal,
compactWhitespace,
hasDeepSessionContinuationSignal,
resolveLivingAssistantModeDecision: assistantLivingModePolicy.resolveLivingAssistantModeDecision
resolveLivingAssistantModeDecision: assistantLivingModePolicy.resolveLivingAssistantModeDecision,
resolveProviderExecutionState: assistantProviderExecutionPolicy.resolveProviderExecutionState
});
const assistantTransitionPolicy = (0, assistantTransitionPolicy_1.createAssistantTransitionPolicy)({
compactWhitespace,