"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeAssistantDeepTurnRetrievalPlan = executeAssistantDeepTurnRetrievalPlan; const retrievalResultNormalizer_1 = require("./retrievalResultNormalizer"); function buildRouteExecutorErrorRawResult(route, message) { return { status: "error", result_type: "summary", items: [], summary: { route }, evidence: [], why_included: [], selection_reason: [], risk_factors: [], business_interpretation: [], confidence: "low", limitations: ["Route executor failed."], errors: [message] }; } function normalizeRawResult(value) { if (value === null || value === undefined) { return null; } if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") { return value; } if (Array.isArray(value)) { return value; } if (typeof value === "object") { return value; } return null; } async function executeAssistantDeepTurnRetrievalPlan(input) { const normalizeRetrievalResultSafe = input.normalizeRetrievalResultFn ?? retrievalResultNormalizer_1.normalizeRetrievalResult; const retrievalCalls = []; const retrievalResultsRaw = []; const retrievalResults = []; for (const planItem of input.executionPlan) { if (!planItem.should_execute) { retrievalCalls.push({ fragment_id: planItem.fragment_id, requirement_ids: planItem.requirement_ids, route: planItem.route, status: "skipped", query_text: planItem.fragment_text, reason: input.mapNoRouteReason(planItem.no_route_reason) }); retrievalResults.push(input.buildSkippedResult(planItem)); continue; } retrievalCalls.push({ fragment_id: planItem.fragment_id, requirement_ids: planItem.requirement_ids, route: planItem.route, status: "executed", query_text: planItem.fragment_text, reason: null }); try { const raw = await input.executeRouteRuntime(planItem.route, planItem.fragment_text, { temporalHint: input.liveTemporalHint }); const normalizedRaw = normalizeRawResult(raw); retrievalResultsRaw.push({ fragment_id: planItem.fragment_id, route: planItem.route, raw_result: normalizedRaw }); retrievalResults.push(normalizeRetrievalResultSafe(planItem.fragment_id, planItem.requirement_ids, planItem.route, normalizedRaw)); } catch (error) { const message = error instanceof Error ? error.message : String(error); retrievalCalls[retrievalCalls.length - 1].status = "failed"; retrievalCalls[retrievalCalls.length - 1].reason = message; const rawError = buildRouteExecutorErrorRawResult(planItem.route, message); retrievalResultsRaw.push({ fragment_id: planItem.fragment_id, route: planItem.route, raw_result: rawError }); retrievalResults.push(normalizeRetrievalResultSafe(planItem.fragment_id, planItem.requirement_ids, planItem.route, rawError)); } } return { retrievalCalls, retrievalResultsRaw, retrievalResults }; }