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

92 lines
3.3 KiB
TypeScript

import type { AssistantRequirement } from "../types/assistant";
import type { NormalizeResponsePayload, RouteHintSummary } from "../types/normalizer";
import type { AssistantExecutionPlanItem } from "./assistantQueryPlanning";
export interface AssistantRequirementExtractionLike {
requirements: AssistantRequirement[];
byFragment: Map<string, string[]>;
}
export interface AssistantPlanEnforcementAuditLike {
executionPlan: AssistantExecutionPlanItem[];
audit: unknown;
}
export interface BuildAssistantDeepTurnExecutionPlanInput {
routeSummary: RouteHintSummary | null;
normalizedPayload: NormalizeResponsePayload["normalized"];
userMessage: string;
claimType: string;
temporalGuard: unknown;
domainPolarityGuardInitial: unknown;
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: unknown;
}) => AssistantPlanEnforcementAuditLike;
enforceFaLiveRoutePlan: (input: {
executionPlan: AssistantExecutionPlanItem[];
claimType: string;
temporalGuard: unknown;
}) => AssistantPlanEnforcementAuditLike;
applyTemporalHintToExecutionPlan: (
executionPlan: AssistantExecutionPlanItem[],
temporalGuard: unknown
) => AssistantExecutionPlanItem[];
applyPolarityHintToExecutionPlan: (
executionPlan: AssistantExecutionPlanItem[],
domainPolarityGuardInitial: unknown
) => 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
};
}