UNPKG

@openai/agents-core

Version:

The OpenAI Agents SDK is a lightweight yet powerful framework for building multi-agent workflows.

66 lines 2.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handleHostedMcpApprovals = handleHostedMcpApprovals; const items_1 = require("../items.js"); /** * Normalizes hosted MCP approval flows so streaming and non-streaming loops share identical * behavior. Handles synchronous approvals, previously decided approvals, and pending approvals. */ async function handleHostedMcpApprovals({ requests, agent, state, functionResults, appendIfNew, resolveApproval, }) { const pendingApprovals = new Set(); const pendingApprovalIds = new Set(); for (const approvalRequest of requests) { const rawItem = approvalRequest.requestItem.rawItem; if (rawItem.type !== 'hosted_tool_call') { continue; } const providerData = rawItem.providerData; if (!providerData) { continue; } const toolData = approvalRequest.mcpTool.providerData; const approvalRequestId = rawItem.id ?? providerData.id; if (toolData?.on_approval) { const approvalResult = await toolData.on_approval(state._context, approvalRequest.requestItem); const approvalResponseData = { approve: approvalResult.approve, approval_request_id: approvalRequestId ?? providerData.id, reason: approvalResult.reason, }; appendIfNew(new items_1.RunToolCallItem({ type: 'hosted_tool_call', name: 'mcp_approval_response', providerData: approvalResponseData, }, agent)); continue; } const approvalDecision = typeof resolveApproval === 'function' ? resolveApproval(rawItem) : undefined; if (typeof approvalDecision !== 'undefined' && approvalRequestId) { const approvalResponseData = { approve: approvalDecision, approval_request_id: approvalRequestId, reason: undefined, }; appendIfNew(new items_1.RunToolCallItem({ type: 'hosted_tool_call', name: 'mcp_approval_response', providerData: approvalResponseData, }, agent)); continue; } functionResults.push({ type: 'hosted_mcp_tool_approval', tool: approvalRequest.mcpTool, runItem: approvalRequest.requestItem, }); appendIfNew(approvalRequest.requestItem); pendingApprovals.add(approvalRequest.requestItem); if (approvalRequestId) { pendingApprovalIds.add(approvalRequestId); } } return { pendingApprovals, pendingApprovalIds }; } //# sourceMappingURL=mcpApprovals.js.map