UNPKG

@openai/agents-core

Version:

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

78 lines • 2.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.withSandboxSpan = withSandboxSpan; const tracing_1 = require("../../tracing/index.js"); const events_1 = require("../events.js"); async function withSandboxSpan(name, data, fn, parent) { const startedAt = Date.now(); await (0, events_1.emitSandboxEvent)({ type: 'sandbox_operation', name, phase: 'start', timestamp: new Date(startedAt).toISOString(), data: { ...data }, }); const runWithEvents = async (span) => { try { const result = await fn(span); await (0, events_1.emitSandboxEvent)({ type: 'sandbox_operation', name, phase: 'end', timestamp: new Date().toISOString(), data: { ...data }, durationMs: Date.now() - startedAt, }); return result; } catch (error) { const serializedError = (0, events_1.serializeSandboxEventError)(error); recordSandboxSpanError(span, serializedError); await (0, events_1.emitSandboxEvent)({ type: 'sandbox_operation', name, phase: 'error', timestamp: new Date().toISOString(), data: { ...data }, durationMs: Date.now() - startedAt, error: serializedError, }); throw error; } }; if (!(0, tracing_1.getCurrentTrace)() && !parent) { return await runWithEvents(); } const runWithSpan = async () => await (0, tracing_1.withCustomSpan)(async (span) => await runWithEvents(span), { data: { name, data, }, }, parent); if (!(0, tracing_1.getCurrentTrace)() && parent) { const trace = parent instanceof tracing_1.Trace ? parent : new tracing_1.Trace({ traceId: parent.traceId, name: 'Agent workflow', metadata: parent.traceMetadata, tracingApiKey: parent.tracingApiKey, }); return await (0, tracing_1.withTraceContext)({ trace, span: parent instanceof tracing_1.Trace ? undefined : parent, }, runWithSpan); } return await runWithSpan(); } function recordSandboxSpanError(span, error) { if (!span) { return; } span.spanData.data = { ...span.spanData.data, error, error_retryable: error.retryable ?? null, }; } //# sourceMappingURL=spans.js.map