UNPKG

@openai/agents-core

Version:

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

67 lines • 2.42 kB
import logger from "../logger.mjs"; import { RunItemStreamEvent } from "../events.mjs"; import { RunCompactionItem, RunHandoffCallItem, RunHandoffOutputItem, RunMessageOutputItem, RunReasoningItem, RunToolApprovalItem, RunToolCallItem, RunToolCallOutputItem, RunToolSearchCallItem, RunToolSearchOutputItem, } from "../items.mjs"; export { isAbortError } from "../utils/abortSignals.mjs"; function getRunItemStreamEventName(item) { if (item instanceof RunMessageOutputItem) { return 'message_output_created'; } if (item instanceof RunHandoffCallItem) { return 'handoff_requested'; } if (item instanceof RunHandoffOutputItem) { return 'handoff_occurred'; } // tool_search uses dedicated run items because its payload shape and // downstream UI correlation differ from generic tool call/output events. if (item instanceof RunToolSearchCallItem) { return 'tool_search_called'; } if (item instanceof RunToolSearchOutputItem) { return 'tool_search_output_created'; } if (item instanceof RunToolCallItem) { return 'tool_called'; } if (item instanceof RunToolCallOutputItem) { return 'tool_output'; } if (item instanceof RunReasoningItem) { return 'reasoning_item_created'; } if (item instanceof RunCompactionItem) { return 'compaction_item_created'; } if (item instanceof RunToolApprovalItem) { return 'tool_approval_requested'; } return undefined; } function enqueueRunItemStreamEvent(result, item) { const itemName = getRunItemStreamEventName(item); if (!itemName) { if (logger.dontLogModelData || logger.dontLogToolData) { logger.warn('Unknown item type. Item data is redacted.'); } else { logger.warn('Unknown item type: ', item); } return; } result._addItem(new RunItemStreamEvent(itemName, item)); } export function streamStepItemsToRunResult(result, items) { for (const item of items) { enqueueRunItemStreamEvent(result, item); } } export function addStepToRunResult(result, step, options) { const skippedItems = options?.skipItems; for (const item of step.newStepItems) { if (skippedItems?.has(item)) { continue; } enqueueRunItemStreamEvent(result, item); } } //# sourceMappingURL=streaming.mjs.map