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