UNPKG

@openai/agents-core

Version:

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

92 lines • 3.4 kB
import { cloneManifest, Manifest } from "./manifest.mjs"; import { validateMountCredentialBoundaries, validateMountEnvironmentCredentialBoundaries, } from "./mountSecurity.mjs"; import { isRecord } from "./shared/typeGuards.mjs"; import { UserError } from "../errors.mjs"; export const DEFAULT_SANDBOX_ARCHIVE_LIMITS = { maxInputBytes: 1024 * 1024 * 1024, maxExtractedBytes: 4 * 1024 * 1024 * 1024, maxMembers: 100_000, }; export function normalizeSandboxClientCreateArgs(args, manifestOptions, validationOptions = {}) { if (args instanceof Manifest) { const manifest = cloneManifest(args); validateMountCredentialBoundaries(manifest); validateMountEnvironmentCredentialBoundaries(manifest, {}, { preserveDeferredValuePresence: validationOptions.environmentPreparation === 'client', }); return { manifest, options: manifestOptions, snapshot: readSnapshotOption(manifestOptions), concurrencyLimits: readConcurrencyLimitsOption(manifestOptions), archiveLimits: readArchiveLimitsOption(manifestOptions), }; } const manifest = args?.manifest; const normalizedManifest = manifest ? cloneManifest(manifest) : new Manifest(); validateMountCredentialBoundaries(normalizedManifest); validateMountEnvironmentCredentialBoundaries(normalizedManifest, {}, { preserveDeferredValuePresence: validationOptions.environmentPreparation === 'client', }); return { manifest: normalizedManifest, options: args?.options, snapshot: args?.snapshot, concurrencyLimits: args?.concurrencyLimits, archiveLimits: args?.archiveLimits, }; } export function resolveSandboxArchiveLimits(limits) { if (limits == null) { return null; } validateSandboxArchiveLimits(limits); return { maxInputBytes: limits.maxInputBytes === undefined ? DEFAULT_SANDBOX_ARCHIVE_LIMITS.maxInputBytes : limits.maxInputBytes, maxExtractedBytes: limits.maxExtractedBytes === undefined ? DEFAULT_SANDBOX_ARCHIVE_LIMITS.maxExtractedBytes : limits.maxExtractedBytes, maxMembers: limits.maxMembers === undefined ? DEFAULT_SANDBOX_ARCHIVE_LIMITS.maxMembers : limits.maxMembers, }; } export function validateSandboxArchiveLimits(limits) { if (limits == null) { return; } validatePositiveArchiveLimit('maxInputBytes', limits.maxInputBytes); validatePositiveArchiveLimit('maxExtractedBytes', limits.maxExtractedBytes); validatePositiveArchiveLimit('maxMembers', limits.maxMembers); } function validatePositiveArchiveLimit(name, value) { if (value == null) { return; } if (!Number.isSafeInteger(value) || value < 1) { throw new UserError(`archiveLimits.${name} must be at least 1.`); } } function readSnapshotOption(options) { if (!isRecord(options)) { return undefined; } return options.snapshot; } function readConcurrencyLimitsOption(options) { if (!isRecord(options)) { return undefined; } return options.concurrencyLimits; } function readArchiveLimitsOption(options) { if (!isRecord(options)) { return undefined; } return options.archiveLimits; } //# sourceMappingURL=client.mjs.map