38 lines
1.4 KiB
TypeScript
38 lines
1.4 KiB
TypeScript
import type { AssistantDebugPayload, UnifiedRetrievalResult } from "../types/assistant";
|
|
import {
|
|
buildAssistantEvidenceBundleContractV1,
|
|
type AssistantEvidenceBundleContractV1
|
|
} from "./assistantOrchestrationContracts";
|
|
import type { AssistantRetrievalCallRecord } from "./assistantDeepTurnRetrievalRuntimeAdapter";
|
|
|
|
type RetrievalStatusItem = AssistantDebugPayload["retrieval_status"][number];
|
|
|
|
export interface AssistantEvidenceBundleAssembly {
|
|
evidenceBundleContractV1: AssistantEvidenceBundleContractV1;
|
|
retrievalStatus: RetrievalStatusItem[];
|
|
}
|
|
|
|
function buildRetrievalStatus(retrievalResults: UnifiedRetrievalResult[]): RetrievalStatusItem[] {
|
|
return retrievalResults.map((item) => ({
|
|
fragment_id: item.fragment_id,
|
|
requirement_ids: item.requirement_ids,
|
|
route: item.route,
|
|
status: item.status,
|
|
result_type: item.result_type
|
|
}));
|
|
}
|
|
|
|
export function assembleAssistantEvidenceBundle(input: {
|
|
retrievalCalls: AssistantRetrievalCallRecord[];
|
|
retrievalResults: UnifiedRetrievalResult[];
|
|
}): AssistantEvidenceBundleAssembly {
|
|
const retrievalResults = Array.isArray(input.retrievalResults) ? input.retrievalResults : [];
|
|
return {
|
|
evidenceBundleContractV1: buildAssistantEvidenceBundleContractV1({
|
|
retrievalCalls: Array.isArray(input.retrievalCalls) ? input.retrievalCalls : [],
|
|
retrievalResults
|
|
}),
|
|
retrievalStatus: buildRetrievalStatus(retrievalResults)
|
|
};
|
|
}
|