92 lines
3.3 KiB
TypeScript
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
|
|
};
|
|
}
|