98 lines
3.2 KiB
TypeScript
98 lines
3.2 KiB
TypeScript
import type {
|
|
AssistantReplyType,
|
|
AssistantRequirement,
|
|
AnswerGroundingCheck,
|
|
RequirementCoverageReport,
|
|
UnifiedRetrievalResult
|
|
} from "../types/assistant";
|
|
import type { NormalizedPayload, RouteHintSummary } from "../types/normalizer";
|
|
import {
|
|
buildAssistantCoverageContractV1,
|
|
buildAssistantExecutionPlanContractV1,
|
|
buildAssistantQueryFrameContractV1,
|
|
classifyAssistantOutcomeClassV1,
|
|
type AssistantCoverageContractV1,
|
|
type AssistantEvidenceBundleContractV1,
|
|
type AssistantExecutionPlanContractV1,
|
|
type AssistantOutcomeClassV1,
|
|
type AssistantQueryFrameContractV1
|
|
} from "./assistantOrchestrationContracts";
|
|
|
|
export interface AssistantContractsBundleV1 {
|
|
queryFrameContractV1: AssistantQueryFrameContractV1;
|
|
executionPlanContractV1: AssistantExecutionPlanContractV1;
|
|
outcomeClassV1: AssistantOutcomeClassV1;
|
|
coverageContractV1: AssistantCoverageContractV1;
|
|
assistantOrchestrationContractsV1: {
|
|
query_frame: AssistantQueryFrameContractV1;
|
|
execution_plan: AssistantExecutionPlanContractV1;
|
|
evidence_bundle: AssistantEvidenceBundleContractV1;
|
|
coverage: AssistantCoverageContractV1;
|
|
};
|
|
}
|
|
|
|
export function assembleAssistantContractsBundleV1(input: {
|
|
userMessage: string;
|
|
normalizedQuestion: string;
|
|
normalized: NormalizedPayload | null;
|
|
routeSummary: RouteHintSummary | null;
|
|
droppedIntentSegments: string[];
|
|
analysisContext: {
|
|
as_of_date: string | null;
|
|
period_from: string | null;
|
|
period_to: string | null;
|
|
source: string | null;
|
|
snapshot_mode: "auto" | "force_snapshot" | "force_live";
|
|
} | null;
|
|
executionPlan: Array<{
|
|
fragment_id: string;
|
|
requirement_ids: string[];
|
|
route: string;
|
|
should_execute: boolean;
|
|
no_route_reason?: string | null;
|
|
clarification_reason?: string | null;
|
|
}>;
|
|
requirements: AssistantRequirement[];
|
|
evidenceBundleContractV1: AssistantEvidenceBundleContractV1;
|
|
replyType: AssistantReplyType;
|
|
coverageReport: RequirementCoverageReport;
|
|
grounding: AnswerGroundingCheck;
|
|
retrievalResults: UnifiedRetrievalResult[];
|
|
}): AssistantContractsBundleV1 {
|
|
const queryFrameContractV1 = buildAssistantQueryFrameContractV1({
|
|
userMessage: input.userMessage,
|
|
normalizedQuestion: input.normalizedQuestion,
|
|
normalized: input.normalized,
|
|
routeSummary: input.routeSummary,
|
|
droppedIntentSegments: input.droppedIntentSegments,
|
|
analysisContext: input.analysisContext
|
|
});
|
|
const executionPlanContractV1 = buildAssistantExecutionPlanContractV1({
|
|
executionPlan: input.executionPlan,
|
|
requirements: input.requirements
|
|
});
|
|
const outcomeClassV1 = classifyAssistantOutcomeClassV1({
|
|
replyType: input.replyType,
|
|
coverageReport: input.coverageReport,
|
|
grounding: input.grounding,
|
|
retrievalResults: input.retrievalResults
|
|
});
|
|
const coverageContractV1 = buildAssistantCoverageContractV1({
|
|
coverageReport: input.coverageReport,
|
|
grounding: input.grounding,
|
|
outcomeClass: outcomeClassV1
|
|
});
|
|
return {
|
|
queryFrameContractV1,
|
|
executionPlanContractV1,
|
|
outcomeClassV1,
|
|
coverageContractV1,
|
|
assistantOrchestrationContractsV1: {
|
|
query_frame: queryFrameContractV1,
|
|
execution_plan: executionPlanContractV1,
|
|
evidence_bundle: input.evidenceBundleContractV1,
|
|
coverage: coverageContractV1
|
|
}
|
|
};
|
|
}
|