90 lines
4.7 KiB
JavaScript
90 lines
4.7 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.buildAssistantMcpDiscoveryDebugAttachmentFields = buildAssistantMcpDiscoveryDebugAttachmentFields;
|
|
exports.attachAssistantMcpDiscoveryDebug = attachAssistantMcpDiscoveryDebug;
|
|
function toRecordObject(value) {
|
|
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
return null;
|
|
}
|
|
return value;
|
|
}
|
|
function toNonEmptyString(value) {
|
|
if (value === null || value === undefined) {
|
|
return null;
|
|
}
|
|
const text = String(value).trim();
|
|
return text.length > 0 ? text : null;
|
|
}
|
|
function toStringArray(value) {
|
|
if (!Array.isArray(value)) {
|
|
return [];
|
|
}
|
|
const result = [];
|
|
for (const item of value) {
|
|
const text = toNonEmptyString(item);
|
|
if (text && !result.includes(text)) {
|
|
result.push(text);
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
function isMcpDiscoveryEntryPointContract(value) {
|
|
const record = toRecordObject(value);
|
|
return (record?.schema_version === "assistant_mcp_discovery_runtime_entry_point_v1" &&
|
|
record?.policy_owner === "assistantMcpDiscoveryRuntimeEntryPoint");
|
|
}
|
|
function isRouteCandidateContract(value) {
|
|
const record = toRecordObject(value);
|
|
return (record?.schema_version === "assistant_mcp_route_candidate_v1" &&
|
|
record?.policy_owner === "assistantMcpDiscoveryRuntimeBridge");
|
|
}
|
|
function resolveEntryPoint(input) {
|
|
if (isMcpDiscoveryEntryPointContract(input.entryPoint)) {
|
|
return input.entryPoint;
|
|
}
|
|
const runtimeMetaEntryPoint = input.addressRuntimeMeta?.mcpDiscoveryRuntimeEntryPoint ??
|
|
input.addressRuntimeMeta?.assistantMcpDiscoveryRuntimeEntryPoint ??
|
|
input.addressRuntimeMeta?.assistant_mcp_discovery_entry_point_v1;
|
|
return isMcpDiscoveryEntryPointContract(runtimeMetaEntryPoint) ? runtimeMetaEntryPoint : null;
|
|
}
|
|
function buildAssistantMcpDiscoveryDebugAttachmentFields(input) {
|
|
const entryPoint = resolveEntryPoint(input);
|
|
const bridge = toRecordObject(entryPoint?.bridge);
|
|
const planner = toRecordObject(bridge?.planner);
|
|
const chainAlignment = toRecordObject(planner?.catalog_chain_template_alignment);
|
|
const routeCandidate = isRouteCandidateContract(bridge?.route_candidate) ? bridge.route_candidate : null;
|
|
const answerDraft = toRecordObject(bridge?.answer_draft);
|
|
return {
|
|
assistant_mcp_discovery_entry_point_v1: entryPoint,
|
|
mcp_discovery_entry_status: toNonEmptyString(entryPoint?.entry_status),
|
|
mcp_discovery_attempted: Boolean(entryPoint?.discovery_attempted),
|
|
mcp_discovery_hot_runtime_wired: false,
|
|
mcp_discovery_bridge_status: toNonEmptyString(bridge?.bridge_status),
|
|
mcp_discovery_selected_chain_id: toNonEmptyString(planner?.selected_chain_id),
|
|
mcp_discovery_catalog_chain_template_matches: toStringArray(planner?.catalog_chain_template_matches),
|
|
mcp_discovery_catalog_chain_alignment_status: toNonEmptyString(chainAlignment?.alignment_status),
|
|
mcp_discovery_catalog_chain_top_match: toNonEmptyString(chainAlignment?.top_chain_template_match),
|
|
mcp_discovery_catalog_chain_selected_matches_top: chainAlignment?.selected_chain_matches_top === true,
|
|
mcp_discovery_route_candidate_v1: routeCandidate,
|
|
mcp_discovery_route_candidate_status: toNonEmptyString(routeCandidate?.candidate_status),
|
|
mcp_discovery_route_candidate_fact_family: toNonEmptyString(routeCandidate?.business_fact_family),
|
|
mcp_discovery_route_candidate_action_family: toNonEmptyString(routeCandidate?.action_family),
|
|
mcp_discovery_route_candidate_proof_expectation: toNonEmptyString(routeCandidate?.proof_expectation),
|
|
mcp_discovery_route_candidate_missing_axes: toStringArray(routeCandidate?.missing_axes),
|
|
mcp_discovery_route_candidate_provided_axes: toStringArray(routeCandidate?.provided_axes),
|
|
mcp_discovery_route_candidate_executable_now: routeCandidate?.executable_now === true,
|
|
mcp_discovery_route_candidate_enablement_reason: toNonEmptyString(routeCandidate?.enablement_reason),
|
|
mcp_discovery_route_candidate_next_action: toNonEmptyString(routeCandidate?.recommended_next_action),
|
|
mcp_discovery_answer_mode: toNonEmptyString(answerDraft?.answer_mode),
|
|
mcp_discovery_business_fact_answer_allowed: bridge?.business_fact_answer_allowed === true,
|
|
mcp_discovery_user_facing_response_allowed: bridge?.user_facing_response_allowed === true,
|
|
mcp_discovery_requires_clarification: bridge?.requires_user_clarification === true
|
|
};
|
|
}
|
|
function attachAssistantMcpDiscoveryDebug(debugPayload, input) {
|
|
return {
|
|
...debugPayload,
|
|
...buildAssistantMcpDiscoveryDebugAttachmentFields(input)
|
|
};
|
|
}
|