@openai/agents-core
Version:
The OpenAI Agents SDK is a lightweight yet powerful framework for building multi-agent workflows.
67 lines • 2.42 kB
JavaScript
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