NODEDC_1C/llm_normalizer/backend/src/services/assistantDeepTurnPlanRuntim...

101 lines
3.7 KiB
TypeScript

import type { AssistantRequirement } from "../types/assistant";
import type { NormalizeResponsePayload, RouteHintSummary } from "../types/normalizer";
import type { AssistantExecutionPlanItem } from "./assistantQueryPlanning";
import type { DomainPolarityGuardAudit, TemporalGuardAudit } from "./assistantRuntimeGuards";
export interface AssistantRequirementExtractionLike {
requirements: AssistantRequirement[];
byFragment: Map<string, string[]>;
}
export interface AssistantPlanEnforcementAuditLike {
executionPlan: AssistantExecutionPlanItem[];
audit: AssistantLiveRoutePlanAudit | null;
}
export interface AssistantLiveRoutePlanAudit extends Record<string, unknown> {
required_live_calls: string[];
route_adjustments_applied: number;
rescued_no_route_fragments: number;
replaced_routes: string[];
route_gap_reason: string | null;
}
export interface BuildAssistantDeepTurnExecutionPlanInput {
routeSummary: RouteHintSummary | null;
normalizedPayload: NormalizeResponsePayload["normalized"];
userMessage: string;
claimType: string;
temporalGuard: TemporalGuardAudit;
domainPolarityGuardInitial: DomainPolarityGuardAudit;
extractRequirements: (
routeSummary: RouteHintSummary | null,
normalizedPayload: NormalizeResponsePayload["normalized"],
userMessage: string
) => AssistantRequirementExtractionLike;
toExecutionPlan: (
routeSummary: RouteHintSummary | null,
normalizedPayload: NormalizeResponsePayload["normalized"],
userMessage: string,
requirementByFragment: Map<string, string[]>
) => AssistantExecutionPlanItem[];
enforceRbpLiveRoutePlan: (input: {
executionPlan: AssistantExecutionPlanItem[];
claimType: string;
temporalGuard: TemporalGuardAudit;
}) => AssistantPlanEnforcementAuditLike;
enforceFaLiveRoutePlan: (input: {
executionPlan: AssistantExecutionPlanItem[];
claimType: string;
temporalGuard: TemporalGuardAudit;
}) => AssistantPlanEnforcementAuditLike;
applyTemporalHintToExecutionPlan: (
executionPlan: AssistantExecutionPlanItem[],
temporalGuard: TemporalGuardAudit
) => AssistantExecutionPlanItem[];
applyPolarityHintToExecutionPlan: (
executionPlan: AssistantExecutionPlanItem[],
domainPolarityGuardInitial: DomainPolarityGuardAudit
) => AssistantExecutionPlanItem[];
}
export interface BuildAssistantDeepTurnExecutionPlanOutput {
requirementExtraction: AssistantRequirementExtractionLike;
executionPlan: AssistantExecutionPlanItem[];
rbpRoutePlanEnforcement: AssistantPlanEnforcementAuditLike;
faRoutePlanEnforcement: AssistantPlanEnforcementAuditLike;
}
export function buildAssistantDeepTurnExecutionPlan(
input: BuildAssistantDeepTurnExecutionPlanInput
): BuildAssistantDeepTurnExecutionPlanOutput {
const requirementExtraction = input.extractRequirements(input.routeSummary, input.normalizedPayload, input.userMessage);
let executionPlan = input.toExecutionPlan(
input.routeSummary,
input.normalizedPayload,
input.userMessage,
requirementExtraction.byFragment
);
const rbpRoutePlanEnforcement = input.enforceRbpLiveRoutePlan({
executionPlan,
claimType: input.claimType,
temporalGuard: input.temporalGuard
});
executionPlan = rbpRoutePlanEnforcement.executionPlan;
const faRoutePlanEnforcement = input.enforceFaLiveRoutePlan({
executionPlan,
claimType: input.claimType,
temporalGuard: input.temporalGuard
});
executionPlan = faRoutePlanEnforcement.executionPlan;
executionPlan = input.applyTemporalHintToExecutionPlan(executionPlan, input.temporalGuard);
executionPlan = input.applyPolarityHintToExecutionPlan(executionPlan, input.domainPolarityGuardInitial);
return {
requirementExtraction,
executionPlan,
rbpRoutePlanEnforcement,
faRoutePlanEnforcement
};
}