NODEDC_1C/llm_normalizer/backend/dist/services/assistantOrganizationScopeR...

87 lines
4.6 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.resolveSessionOrganizationScopeContextRuntime = resolveSessionOrganizationScopeContextRuntime;
exports.mergeFollowupContextWithOrganizationScopeRuntime = mergeFollowupContextWithOrganizationScopeRuntime;
const assistantContinuityPolicy_1 = require("./assistantContinuityPolicy");
function extractOrganizationsFromNavigationState(addressNavigationState, normalizeOrganizationScopeValue) {
if (!addressNavigationState || typeof addressNavigationState !== "object") {
return [];
}
const collected = [];
const directOrganization = normalizeOrganizationScopeValue(addressNavigationState.session_context?.organization_scope);
if (directOrganization) {
collected.push(directOrganization);
}
for (const resultSet of Array.isArray(addressNavigationState.result_sets) ? addressNavigationState.result_sets : []) {
const scopedOrganization = normalizeOrganizationScopeValue(resultSet?.filters?.organization);
if (scopedOrganization) {
collected.push(scopedOrganization);
}
}
return Array.from(new Map(collected.map((value) => [value.toLowerCase(), value])).values());
}
function resolveActiveOrganizationFromNavigationState(addressNavigationState, normalizeOrganizationScopeValue) {
if (!addressNavigationState || typeof addressNavigationState !== "object") {
return null;
}
return normalizeOrganizationScopeValue(addressNavigationState.session_context?.organization_scope);
}
function resolveSessionOrganizationScopeContextRuntime(input) {
const continuityAuthority = (0, assistantContinuityPolicy_1.resolveAssistantOrganizationAuthority)({
sessionItems: Array.isArray(input.items) ? input.items : [],
toNonEmptyString: input.normalizeOrganizationScopeValue,
normalizeOrganizationScopeValue: input.normalizeOrganizationScopeValue
});
const continuityKnownOrganizations = Array.isArray(continuityAuthority.knownOrganizations)
? continuityAuthority.knownOrganizations
: [];
const continuitySelectedOrganization = input.normalizeOrganizationScopeValue(continuityAuthority.selectedOrganization);
const continuityActiveOrganization = input.normalizeOrganizationScopeValue(continuityAuthority.activeOrganization);
const knownOrganizations = Array.from(new Map([
...continuityKnownOrganizations,
...extractOrganizationsFromNavigationState(input.addressNavigationState, input.normalizeOrganizationScopeValue),
...input.extractKnownOrganizationsFromHistory(input.items)
].map((value) => [String(value).toLowerCase(), value])).values());
const selectedOrganization = input.resolveOrganizationSelectionFromMessage(input.userMessage, knownOrganizations);
const navigationActiveOrganization = resolveActiveOrganizationFromNavigationState(input.addressNavigationState, input.normalizeOrganizationScopeValue);
const activeOrganization = selectedOrganization ??
continuitySelectedOrganization ??
continuityActiveOrganization ??
navigationActiveOrganization ??
(knownOrganizations.length === 1 ? knownOrganizations[0] : null);
return {
knownOrganizations,
selectedOrganization,
activeOrganization
};
}
function mergeFollowupContextWithOrganizationScopeRuntime(input) {
const normalizedOrganization = input.normalizeOrganizationScopeValue(input.organization);
const hasBase = input.followupContext && typeof input.followupContext === "object";
const base = hasBase ? { ...input.followupContext } : {};
if (!normalizedOrganization) {
return hasBase ? base : null;
}
const previousFiltersRaw = base.previous_filters;
const previousFilters = previousFiltersRaw && typeof previousFiltersRaw === "object"
? { ...previousFiltersRaw }
: {};
const previousOrganization = input.toNonEmptyString(previousFilters.organization);
if (!previousOrganization || previousOrganization !== normalizedOrganization) {
previousFilters.organization = normalizedOrganization;
}
base.previous_filters = previousFilters;
const rootFiltersRaw = base.root_filters;
const rootFilters = rootFiltersRaw && typeof rootFiltersRaw === "object"
? { ...rootFiltersRaw }
: {};
const rootOrganization = input.toNonEmptyString(rootFilters.organization);
if (!rootOrganization || rootOrganization !== normalizedOrganization) {
rootFilters.organization = normalizedOrganization;
}
if (Object.keys(rootFilters).length > 0) {
base.root_filters = rootFilters;
}
return base;
}