{"version":3,"file":"picocolors-ClWS1B-Z.mjs","names":["Messages","isAutoParsableTool","hasAutoParseableInput","parseToolCall","isAutoParsableTool","isAutoParsableTool","hasAutoParseableInput","Completions","MessagesAPI.Messages","Messages","CompletionsAPI.Completions","Completions","TranscriptionsAPI.Transcriptions","TranslationsAPI.Translations","SpeechAPI.Speech","SessionsAPI.Sessions","TranscriptionSessionsAPI.TranscriptionSessions","_a","Runs","StepsAPI.Steps","RunsAPI.Runs","MessagesAPI.Messages","Runs","RealtimeAPI.Realtime","AssistantsAPI.Assistants","ThreadsAPI.Threads","Files","ContentAPI.Content","FilesAPI.Files","Files","ItemsAPI.Items","OutputItemsAPI.OutputItems","RunsAPI.Runs","Files","Graders","GradersAPI.Graders","Graders","Checkpoints","PermissionsAPI.Permissions","CheckpointsAPI.Checkpoints","MethodsAPI.Methods","JobsAPI.Jobs","CheckpointsAPI.Checkpoints","AlphaAPI.Alpha","Checkpoints","GraderModelsAPI.GraderModels","InputItemsAPI.InputItems","PartsAPI.Parts","FilesAPI.Files","FileBatchesAPI.FileBatches","API.Completions","API.Chat","API.Embeddings","API.Files","API.Images","API.Audio","API.Moderations","API.Models","API.FineTuning","API.Graders","API.VectorStores","API.Webhooks","API.Beta","API.Batches","API.Uploads","API.Responses","API.Conversations","API.Evals","API.Containers","Errors.OpenAIError","Shims.getDefaultFetch","Opts.FallbackEncoder","qs.stringify","Errors.APIUserAbortError","Errors.APIConnectionTimeoutError","Errors.APIConnectionError","Shims.CancelReadableStream","Pagination.PagePromise","Shims.ReadableStreamFrom","Errors.APIError","Errors.NotFoundError","Errors.ConflictError","Errors.RateLimitError","Errors.BadRequestError","Errors.AuthenticationError","Errors.InternalServerError","Errors.PermissionDeniedError","Errors.UnprocessableEntityError","Errors.InvalidWebhookSignatureError","Uploads.toFile","Files","UploadsAPIUploads"],"sources":["../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/tslib.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/utils/uuid.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/errors.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/core/error.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/utils/values.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/utils/sleep.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/version.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/detect-platform.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/shims.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/request-options.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/qs/formats.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/qs/utils.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/qs/stringify.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/utils/bytes.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/decoders/line.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/utils/log.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/core/streaming.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/parse.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/core/api-promise.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/core/pagination.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/uploads.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/to-file.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/core/resource.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/utils/path.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/chat/completions/messages.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/lib/parser.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/lib/chatCompletionUtils.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/lib/EventStream.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/lib/RunnableFunction.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/lib/AbstractChatCompletionRunner.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/lib/ChatCompletionRunner.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/_vendor/partial-json-parser/parser.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/lib/ChatCompletionStream.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/lib/ChatCompletionStreamingRunner.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/chat/completions/completions.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/chat/chat.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/headers.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/audio/speech.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/audio/transcriptions.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/audio/translations.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/audio/audio.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/batches.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/beta/assistants.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/beta/realtime/sessions.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/beta/realtime/transcription-sessions.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/beta/realtime/realtime.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/beta/threads/messages.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/beta/threads/runs/steps.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/utils/base64.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/internal/utils/env.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/lib/AssistantStream.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/beta/threads/runs/runs.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/beta/threads/threads.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/beta/beta.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/completions.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/containers/files/content.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/containers/files/files.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/containers/containers.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/conversations/items.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/conversations/conversations.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/embeddings.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/evals/runs/output-items.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/evals/runs/runs.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/evals/evals.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/files.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/fine-tuning/methods.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/fine-tuning/alpha/graders.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/fine-tuning/alpha/alpha.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/fine-tuning/checkpoints/permissions.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/fine-tuning/checkpoints/checkpoints.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/fine-tuning/jobs/checkpoints.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/fine-tuning/jobs/jobs.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/fine-tuning/fine-tuning.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/graders/grader-models.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/graders/graders.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/images.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/models.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/moderations.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/lib/ResponsesParser.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/lib/responses/ResponseStream.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/responses/input-items.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/responses/responses.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/uploads/parts.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/uploads/uploads.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/lib/Util.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/vector-stores/file-batches.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/vector-stores/files.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/vector-stores/vector-stores.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/resources/webhooks.mjs","../node_modules/.pnpm/openai@5.15.0_zod@4.1.5/node_modules/openai/client.mjs","../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js"],"sourcesContent":["function __classPrivateFieldSet(receiver, state, value, kind, f) {\n    if (kind === \"m\")\n        throw new TypeError(\"Private method is not writable\");\n    if (kind === \"a\" && !f)\n        throw new TypeError(\"Private accessor was defined without a setter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver))\n        throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n    return kind === \"a\" ? f.call(receiver, value) : f ? (f.value = value) : state.set(receiver, value), value;\n}\nfunction __classPrivateFieldGet(receiver, state, kind, f) {\n    if (kind === \"a\" && !f)\n        throw new TypeError(\"Private accessor was defined without a getter\");\n    if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver))\n        throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n    return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\nexport { __classPrivateFieldSet, __classPrivateFieldGet };\n","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n/**\n * https://stackoverflow.com/a/2117523\n */\nexport let uuid4 = function () {\n    const { crypto } = globalThis;\n    if (crypto?.randomUUID) {\n        uuid4 = crypto.randomUUID.bind(crypto);\n        return crypto.randomUUID();\n    }\n    const u8 = new Uint8Array(1);\n    const randomByte = crypto ? () => crypto.getRandomValues(u8)[0] : () => (Math.random() * 0xff) & 0xff;\n    return '10000000-1000-4000-8000-100000000000'.replace(/[018]/g, (c) => (+c ^ (randomByte() & (15 >> (+c / 4)))).toString(16));\n};\n//# sourceMappingURL=uuid.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport function isAbortError(err) {\n    return (typeof err === 'object' &&\n        err !== null &&\n        // Spec-compliant fetch implementations\n        (('name' in err && err.name === 'AbortError') ||\n            // Expo fetch\n            ('message' in err && String(err.message).includes('FetchRequestCanceledException'))));\n}\nexport const castToError = (err) => {\n    if (err instanceof Error)\n        return err;\n    if (typeof err === 'object' && err !== null) {\n        try {\n            if (Object.prototype.toString.call(err) === '[object Error]') {\n                // @ts-ignore - not all envs have native support for cause yet\n                const error = new Error(err.message, err.cause ? { cause: err.cause } : {});\n                if (err.stack)\n                    error.stack = err.stack;\n                // @ts-ignore - not all envs have native support for cause yet\n                if (err.cause && !error.cause)\n                    error.cause = err.cause;\n                if (err.name)\n                    error.name = err.name;\n                return error;\n            }\n        }\n        catch { }\n        try {\n            return new Error(JSON.stringify(err));\n        }\n        catch { }\n    }\n    return new Error(err);\n};\n//# sourceMappingURL=errors.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { castToError } from \"../internal/errors.mjs\";\nexport class OpenAIError extends Error {\n}\nexport class APIError extends OpenAIError {\n    constructor(status, error, message, headers) {\n        super(`${APIError.makeMessage(status, error, message)}`);\n        this.status = status;\n        this.headers = headers;\n        this.requestID = headers?.get('x-request-id');\n        this.error = error;\n        const data = error;\n        this.code = data?.['code'];\n        this.param = data?.['param'];\n        this.type = data?.['type'];\n    }\n    static makeMessage(status, error, message) {\n        const msg = error?.message ?\n            typeof error.message === 'string' ?\n                error.message\n                : JSON.stringify(error.message)\n            : error ? JSON.stringify(error)\n                : message;\n        if (status && msg) {\n            return `${status} ${msg}`;\n        }\n        if (status) {\n            return `${status} status code (no body)`;\n        }\n        if (msg) {\n            return msg;\n        }\n        return '(no status code or body)';\n    }\n    static generate(status, errorResponse, message, headers) {\n        if (!status || !headers) {\n            return new APIConnectionError({ message, cause: castToError(errorResponse) });\n        }\n        const error = errorResponse?.['error'];\n        if (status === 400) {\n            return new BadRequestError(status, error, message, headers);\n        }\n        if (status === 401) {\n            return new AuthenticationError(status, error, message, headers);\n        }\n        if (status === 403) {\n            return new PermissionDeniedError(status, error, message, headers);\n        }\n        if (status === 404) {\n            return new NotFoundError(status, error, message, headers);\n        }\n        if (status === 409) {\n            return new ConflictError(status, error, message, headers);\n        }\n        if (status === 422) {\n            return new UnprocessableEntityError(status, error, message, headers);\n        }\n        if (status === 429) {\n            return new RateLimitError(status, error, message, headers);\n        }\n        if (status >= 500) {\n            return new InternalServerError(status, error, message, headers);\n        }\n        return new APIError(status, error, message, headers);\n    }\n}\nexport class APIUserAbortError extends APIError {\n    constructor({ message } = {}) {\n        super(undefined, undefined, message || 'Request was aborted.', undefined);\n    }\n}\nexport class APIConnectionError extends APIError {\n    constructor({ message, cause }) {\n        super(undefined, undefined, message || 'Connection error.', undefined);\n        // in some environments the 'cause' property is already declared\n        // @ts-ignore\n        if (cause)\n            this.cause = cause;\n    }\n}\nexport class APIConnectionTimeoutError extends APIConnectionError {\n    constructor({ message } = {}) {\n        super({ message: message ?? 'Request timed out.' });\n    }\n}\nexport class BadRequestError extends APIError {\n}\nexport class AuthenticationError extends APIError {\n}\nexport class PermissionDeniedError extends APIError {\n}\nexport class NotFoundError extends APIError {\n}\nexport class ConflictError extends APIError {\n}\nexport class UnprocessableEntityError extends APIError {\n}\nexport class RateLimitError extends APIError {\n}\nexport class InternalServerError extends APIError {\n}\nexport class LengthFinishReasonError extends OpenAIError {\n    constructor() {\n        super(`Could not parse response content as the length limit was reached`);\n    }\n}\nexport class ContentFilterFinishReasonError extends OpenAIError {\n    constructor() {\n        super(`Could not parse response content as the request was rejected by the content filter`);\n    }\n}\nexport class InvalidWebhookSignatureError extends Error {\n    constructor(message) {\n        super(message);\n    }\n}\n//# sourceMappingURL=error.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { OpenAIError } from \"../../core/error.mjs\";\n// https://url.spec.whatwg.org/#url-scheme-string\nconst startsWithSchemeRegexp = /^[a-z][a-z0-9+.-]*:/i;\nexport const isAbsoluteURL = (url) => {\n    return startsWithSchemeRegexp.test(url);\n};\nexport let isArray = (val) => ((isArray = Array.isArray), isArray(val));\nexport let isReadonlyArray = isArray;\n/** Returns an object if the given value isn't an object, otherwise returns as-is */\nexport function maybeObj(x) {\n    if (typeof x !== 'object') {\n        return {};\n    }\n    return x ?? {};\n}\n// https://stackoverflow.com/a/34491287\nexport function isEmptyObj(obj) {\n    if (!obj)\n        return true;\n    for (const _k in obj)\n        return false;\n    return true;\n}\n// https://eslint.org/docs/latest/rules/no-prototype-builtins\nexport function hasOwn(obj, key) {\n    return Object.prototype.hasOwnProperty.call(obj, key);\n}\nexport function isObj(obj) {\n    return obj != null && typeof obj === 'object' && !Array.isArray(obj);\n}\nexport const ensurePresent = (value) => {\n    if (value == null) {\n        throw new OpenAIError(`Expected a value to be given but received ${value} instead.`);\n    }\n    return value;\n};\nexport const validatePositiveInteger = (name, n) => {\n    if (typeof n !== 'number' || !Number.isInteger(n)) {\n        throw new OpenAIError(`${name} must be an integer`);\n    }\n    if (n < 0) {\n        throw new OpenAIError(`${name} must be a positive integer`);\n    }\n    return n;\n};\nexport const coerceInteger = (value) => {\n    if (typeof value === 'number')\n        return Math.round(value);\n    if (typeof value === 'string')\n        return parseInt(value, 10);\n    throw new OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\nexport const coerceFloat = (value) => {\n    if (typeof value === 'number')\n        return value;\n    if (typeof value === 'string')\n        return parseFloat(value);\n    throw new OpenAIError(`Could not coerce ${value} (type: ${typeof value}) into a number`);\n};\nexport const coerceBoolean = (value) => {\n    if (typeof value === 'boolean')\n        return value;\n    if (typeof value === 'string')\n        return value === 'true';\n    return Boolean(value);\n};\nexport const maybeCoerceInteger = (value) => {\n    if (value === undefined) {\n        return undefined;\n    }\n    return coerceInteger(value);\n};\nexport const maybeCoerceFloat = (value) => {\n    if (value === undefined) {\n        return undefined;\n    }\n    return coerceFloat(value);\n};\nexport const maybeCoerceBoolean = (value) => {\n    if (value === undefined) {\n        return undefined;\n    }\n    return coerceBoolean(value);\n};\nexport const safeJSON = (text) => {\n    try {\n        return JSON.parse(text);\n    }\n    catch (err) {\n        return undefined;\n    }\n};\n//# sourceMappingURL=values.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));\n//# sourceMappingURL=sleep.mjs.map","export const VERSION = '5.15.0'; // x-release-please-version\n//# sourceMappingURL=version.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { VERSION } from \"../version.mjs\";\nexport const isRunningInBrowser = () => {\n    return (\n    // @ts-ignore\n    typeof window !== 'undefined' &&\n        // @ts-ignore\n        typeof window.document !== 'undefined' &&\n        // @ts-ignore\n        typeof navigator !== 'undefined');\n};\n/**\n * Note this does not detect 'browser'; for that, use getBrowserInfo().\n */\nfunction getDetectedPlatform() {\n    if (typeof Deno !== 'undefined' && Deno.build != null) {\n        return 'deno';\n    }\n    if (typeof EdgeRuntime !== 'undefined') {\n        return 'edge';\n    }\n    if (Object.prototype.toString.call(typeof globalThis.process !== 'undefined' ? globalThis.process : 0) === '[object process]') {\n        return 'node';\n    }\n    return 'unknown';\n}\nconst getPlatformProperties = () => {\n    const detectedPlatform = getDetectedPlatform();\n    if (detectedPlatform === 'deno') {\n        return {\n            'X-Stainless-Lang': 'js',\n            'X-Stainless-Package-Version': VERSION,\n            'X-Stainless-OS': normalizePlatform(Deno.build.os),\n            'X-Stainless-Arch': normalizeArch(Deno.build.arch),\n            'X-Stainless-Runtime': 'deno',\n            'X-Stainless-Runtime-Version': typeof Deno.version === 'string' ? Deno.version : Deno.version?.deno ?? 'unknown',\n        };\n    }\n    if (typeof EdgeRuntime !== 'undefined') {\n        return {\n            'X-Stainless-Lang': 'js',\n            'X-Stainless-Package-Version': VERSION,\n            'X-Stainless-OS': 'Unknown',\n            'X-Stainless-Arch': `other:${EdgeRuntime}`,\n            'X-Stainless-Runtime': 'edge',\n            'X-Stainless-Runtime-Version': globalThis.process.version,\n        };\n    }\n    // Check if Node.js\n    if (detectedPlatform === 'node') {\n        return {\n            'X-Stainless-Lang': 'js',\n            'X-Stainless-Package-Version': VERSION,\n            'X-Stainless-OS': normalizePlatform(globalThis.process.platform ?? 'unknown'),\n            'X-Stainless-Arch': normalizeArch(globalThis.process.arch ?? 'unknown'),\n            'X-Stainless-Runtime': 'node',\n            'X-Stainless-Runtime-Version': globalThis.process.version ?? 'unknown',\n        };\n    }\n    const browserInfo = getBrowserInfo();\n    if (browserInfo) {\n        return {\n            'X-Stainless-Lang': 'js',\n            'X-Stainless-Package-Version': VERSION,\n            'X-Stainless-OS': 'Unknown',\n            'X-Stainless-Arch': 'unknown',\n            'X-Stainless-Runtime': `browser:${browserInfo.browser}`,\n            'X-Stainless-Runtime-Version': browserInfo.version,\n        };\n    }\n    // TODO add support for Cloudflare workers, etc.\n    return {\n        'X-Stainless-Lang': 'js',\n        'X-Stainless-Package-Version': VERSION,\n        'X-Stainless-OS': 'Unknown',\n        'X-Stainless-Arch': 'unknown',\n        'X-Stainless-Runtime': 'unknown',\n        'X-Stainless-Runtime-Version': 'unknown',\n    };\n};\n// Note: modified from https://github.com/JS-DevTools/host-environment/blob/b1ab79ecde37db5d6e163c050e54fe7d287d7c92/src/isomorphic.browser.ts\nfunction getBrowserInfo() {\n    if (typeof navigator === 'undefined' || !navigator) {\n        return null;\n    }\n    // NOTE: The order matters here!\n    const browserPatterns = [\n        { key: 'edge', pattern: /Edge(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n        { key: 'ie', pattern: /MSIE(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n        { key: 'ie', pattern: /Trident(?:.*rv\\:(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n        { key: 'chrome', pattern: /Chrome(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n        { key: 'firefox', pattern: /Firefox(?:\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?/ },\n        { key: 'safari', pattern: /(?:Version\\W+(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?(?:\\W+Mobile\\S*)?\\W+Safari/ },\n    ];\n    // Find the FIRST matching browser\n    for (const { key, pattern } of browserPatterns) {\n        const match = pattern.exec(navigator.userAgent);\n        if (match) {\n            const major = match[1] || 0;\n            const minor = match[2] || 0;\n            const patch = match[3] || 0;\n            return { browser: key, version: `${major}.${minor}.${patch}` };\n        }\n    }\n    return null;\n}\nconst normalizeArch = (arch) => {\n    // Node docs:\n    // - https://nodejs.org/api/process.html#processarch\n    // Deno docs:\n    // - https://doc.deno.land/deno/stable/~/Deno.build\n    if (arch === 'x32')\n        return 'x32';\n    if (arch === 'x86_64' || arch === 'x64')\n        return 'x64';\n    if (arch === 'arm')\n        return 'arm';\n    if (arch === 'aarch64' || arch === 'arm64')\n        return 'arm64';\n    if (arch)\n        return `other:${arch}`;\n    return 'unknown';\n};\nconst normalizePlatform = (platform) => {\n    // Node platforms:\n    // - https://nodejs.org/api/process.html#processplatform\n    // Deno platforms:\n    // - https://doc.deno.land/deno/stable/~/Deno.build\n    // - https://github.com/denoland/deno/issues/14799\n    platform = platform.toLowerCase();\n    // NOTE: this iOS check is untested and may not work\n    // Node does not work natively on IOS, there is a fork at\n    // https://github.com/nodejs-mobile/nodejs-mobile\n    // however it is unknown at the time of writing how to detect if it is running\n    if (platform.includes('ios'))\n        return 'iOS';\n    if (platform === 'android')\n        return 'Android';\n    if (platform === 'darwin')\n        return 'MacOS';\n    if (platform === 'win32')\n        return 'Windows';\n    if (platform === 'freebsd')\n        return 'FreeBSD';\n    if (platform === 'openbsd')\n        return 'OpenBSD';\n    if (platform === 'linux')\n        return 'Linux';\n    if (platform)\n        return `Other:${platform}`;\n    return 'Unknown';\n};\nlet _platformHeaders;\nexport const getPlatformHeaders = () => {\n    return (_platformHeaders ?? (_platformHeaders = getPlatformProperties()));\n};\n//# sourceMappingURL=detect-platform.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport function getDefaultFetch() {\n    if (typeof fetch !== 'undefined') {\n        return fetch;\n    }\n    throw new Error('`fetch` is not defined as a global; Either pass `fetch` to the client, `new OpenAI({ fetch })` or polyfill the global, `globalThis.fetch = fetch`');\n}\nexport function makeReadableStream(...args) {\n    const ReadableStream = globalThis.ReadableStream;\n    if (typeof ReadableStream === 'undefined') {\n        // Note: All of the platforms / runtimes we officially support already define\n        // `ReadableStream` as a global, so this should only ever be hit on unsupported runtimes.\n        throw new Error('`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`');\n    }\n    return new ReadableStream(...args);\n}\nexport function ReadableStreamFrom(iterable) {\n    let iter = Symbol.asyncIterator in iterable ? iterable[Symbol.asyncIterator]() : iterable[Symbol.iterator]();\n    return makeReadableStream({\n        start() { },\n        async pull(controller) {\n            const { done, value } = await iter.next();\n            if (done) {\n                controller.close();\n            }\n            else {\n                controller.enqueue(value);\n            }\n        },\n        async cancel() {\n            await iter.return?.();\n        },\n    });\n}\n/**\n * Most browsers don't yet have async iterable support for ReadableStream,\n * and Node has a very different way of reading bytes from its \"ReadableStream\".\n *\n * This polyfill was pulled from https://github.com/MattiasBuelens/web-streams-polyfill/pull/122#issuecomment-1627354490\n */\nexport function ReadableStreamToAsyncIterable(stream) {\n    if (stream[Symbol.asyncIterator])\n        return stream;\n    const reader = stream.getReader();\n    return {\n        async next() {\n            try {\n                const result = await reader.read();\n                if (result?.done)\n                    reader.releaseLock(); // release lock when stream becomes closed\n                return result;\n            }\n            catch (e) {\n                reader.releaseLock(); // release lock when stream becomes errored\n                throw e;\n            }\n        },\n        async return() {\n            const cancelPromise = reader.cancel();\n            reader.releaseLock();\n            await cancelPromise;\n            return { done: true, value: undefined };\n        },\n        [Symbol.asyncIterator]() {\n            return this;\n        },\n    };\n}\n/**\n * Cancels a ReadableStream we don't need to consume.\n * See https://undici.nodejs.org/#/?id=garbage-collection\n */\nexport async function CancelReadableStream(stream) {\n    if (stream === null || typeof stream !== 'object')\n        return;\n    if (stream[Symbol.asyncIterator]) {\n        await stream[Symbol.asyncIterator]().return?.();\n        return;\n    }\n    const reader = stream.getReader();\n    const cancelPromise = reader.cancel();\n    reader.releaseLock();\n    await cancelPromise;\n}\n//# sourceMappingURL=shims.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport const FallbackEncoder = ({ headers, body }) => {\n    return {\n        bodyHeaders: {\n            'content-type': 'application/json',\n        },\n        body: JSON.stringify(body),\n    };\n};\n//# sourceMappingURL=request-options.mjs.map","export const default_format = 'RFC3986';\nexport const default_formatter = (v) => String(v);\nexport const formatters = {\n    RFC1738: (v) => String(v).replace(/%20/g, '+'),\n    RFC3986: default_formatter,\n};\nexport const RFC1738 = 'RFC1738';\nexport const RFC3986 = 'RFC3986';\n//# sourceMappingURL=formats.mjs.map","import { RFC1738 } from \"./formats.mjs\";\nimport { isArray } from \"../utils/values.mjs\";\nexport let has = (obj, key) => ((has = Object.hasOwn ?? Function.prototype.call.bind(Object.prototype.hasOwnProperty)),\n    has(obj, key));\nconst hex_table = /* @__PURE__ */ (() => {\n    const array = [];\n    for (let i = 0; i < 256; ++i) {\n        array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n    }\n    return array;\n})();\nfunction compact_queue(queue) {\n    while (queue.length > 1) {\n        const item = queue.pop();\n        if (!item)\n            continue;\n        const obj = item.obj[item.prop];\n        if (isArray(obj)) {\n            const compacted = [];\n            for (let j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted.push(obj[j]);\n                }\n            }\n            // @ts-ignore\n            item.obj[item.prop] = compacted;\n        }\n    }\n}\nfunction array_to_object(source, options) {\n    const obj = options && options.plainObjects ? Object.create(null) : {};\n    for (let i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n    return obj;\n}\nexport function merge(target, source, options = {}) {\n    if (!source) {\n        return target;\n    }\n    if (typeof source !== 'object') {\n        if (isArray(target)) {\n            target.push(source);\n        }\n        else if (target && typeof target === 'object') {\n            if ((options && (options.plainObjects || options.allowPrototypes)) || !has(Object.prototype, source)) {\n                target[source] = true;\n            }\n        }\n        else {\n            return [target, source];\n        }\n        return target;\n    }\n    if (!target || typeof target !== 'object') {\n        return [target].concat(source);\n    }\n    let mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        // @ts-ignore\n        mergeTarget = array_to_object(target, options);\n    }\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has(target, i)) {\n                const targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                }\n                else {\n                    target.push(item);\n                }\n            }\n            else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n    return Object.keys(source).reduce(function (acc, key) {\n        const value = source[key];\n        if (has(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        }\n        else {\n            acc[key] = value;\n        }\n        return acc;\n    }, mergeTarget);\n}\nexport function assign_single_source(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n}\nexport function decode(str, _, charset) {\n    const strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    }\n    catch (e) {\n        return strWithoutPlus;\n    }\n}\nconst limit = 1024;\nexport const encode = (str, _defaultEncoder, charset, _kind, format) => {\n    // This code was originally written by Brian White for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n    let string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    }\n    else if (typeof str !== 'string') {\n        string = String(str);\n    }\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n    let out = '';\n    for (let j = 0; j < string.length; j += limit) {\n        const segment = string.length >= limit ? string.slice(j, j + limit) : string;\n        const arr = [];\n        for (let i = 0; i < segment.length; ++i) {\n            let c = segment.charCodeAt(i);\n            if (c === 0x2d || // -\n                c === 0x2e || // .\n                c === 0x5f || // _\n                c === 0x7e || // ~\n                (c >= 0x30 && c <= 0x39) || // 0-9\n                (c >= 0x41 && c <= 0x5a) || // a-z\n                (c >= 0x61 && c <= 0x7a) || // A-Z\n                (format === RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n            ) {\n                arr[arr.length] = segment.charAt(i);\n                continue;\n            }\n            if (c < 0x80) {\n                arr[arr.length] = hex_table[c];\n                continue;\n            }\n            if (c < 0x800) {\n                arr[arr.length] = hex_table[0xc0 | (c >> 6)] + hex_table[0x80 | (c & 0x3f)];\n                continue;\n            }\n            if (c < 0xd800 || c >= 0xe000) {\n                arr[arr.length] =\n                    hex_table[0xe0 | (c >> 12)] + hex_table[0x80 | ((c >> 6) & 0x3f)] + hex_table[0x80 | (c & 0x3f)];\n                continue;\n            }\n            i += 1;\n            c = 0x10000 + (((c & 0x3ff) << 10) | (segment.charCodeAt(i) & 0x3ff));\n            arr[arr.length] =\n                hex_table[0xf0 | (c >> 18)] +\n                    hex_table[0x80 | ((c >> 12) & 0x3f)] +\n                    hex_table[0x80 | ((c >> 6) & 0x3f)] +\n                    hex_table[0x80 | (c & 0x3f)];\n        }\n        out += arr.join('');\n    }\n    return out;\n};\nexport function compact(value) {\n    const queue = [{ obj: { o: value }, prop: 'o' }];\n    const refs = [];\n    for (let i = 0; i < queue.length; ++i) {\n        const item = queue[i];\n        // @ts-ignore\n        const obj = item.obj[item.prop];\n        const keys = Object.keys(obj);\n        for (let j = 0; j < keys.length; ++j) {\n            const key = keys[j];\n            const val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue.push({ obj: obj, prop: key });\n                refs.push(val);\n            }\n        }\n    }\n    compact_queue(queue);\n    return value;\n}\nexport function is_regexp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\nexport function is_buffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n}\nexport function combine(a, b) {\n    return [].concat(a, b);\n}\nexport function maybe_map(val, fn) {\n    if (isArray(val)) {\n        const mapped = [];\n        for (let i = 0; i < val.length; i += 1) {\n            mapped.push(fn(val[i]));\n        }\n        return mapped;\n    }\n    return fn(val);\n}\n//# sourceMappingURL=utils.mjs.map","import { encode, is_buffer, maybe_map, has } from \"./utils.mjs\";\nimport { default_format, default_formatter, formatters } from \"./formats.mjs\";\nimport { isArray } from \"../utils/values.mjs\";\nconst array_prefix_generators = {\n    brackets(prefix) {\n        return String(prefix) + '[]';\n    },\n    comma: 'comma',\n    indices(prefix, key) {\n        return String(prefix) + '[' + key + ']';\n    },\n    repeat(prefix) {\n        return String(prefix);\n    },\n};\nconst push_to_array = function (arr, value_or_array) {\n    Array.prototype.push.apply(arr, isArray(value_or_array) ? value_or_array : [value_or_array]);\n};\nlet toISOString;\nconst defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    allowEmptyArrays: false,\n    arrayFormat: 'indices',\n    charset: 'utf-8',\n    charsetSentinel: false,\n    delimiter: '&',\n    encode: true,\n    encodeDotInKeys: false,\n    encoder: encode,\n    encodeValuesOnly: false,\n    format: default_format,\n    formatter: default_formatter,\n    /** @deprecated */\n    indices: false,\n    serializeDate(date) {\n        return (toISOString ?? (toISOString = Function.prototype.call.bind(Date.prototype.toISOString)))(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false,\n};\nfunction is_non_nullish_primitive(v) {\n    return (typeof v === 'string' ||\n        typeof v === 'number' ||\n        typeof v === 'boolean' ||\n        typeof v === 'symbol' ||\n        typeof v === 'bigint');\n}\nconst sentinel = {};\nfunction inner_stringify(object, prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, sideChannel) {\n    let obj = object;\n    let tmp_sc = sideChannel;\n    let step = 0;\n    let find_flag = false;\n    while ((tmp_sc = tmp_sc.get(sentinel)) !== void undefined && !find_flag) {\n        // Where object last appeared in the ref tree\n        const pos = tmp_sc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            }\n            else {\n                find_flag = true; // Break while\n            }\n        }\n        if (typeof tmp_sc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    }\n    else if (obj instanceof Date) {\n        obj = serializeDate?.(obj);\n    }\n    else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = maybe_map(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate?.(value);\n            }\n            return value;\n        });\n    }\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ?\n                // @ts-expect-error\n                encoder(prefix, defaults.encoder, charset, 'key', format)\n                : prefix;\n        }\n        obj = '';\n    }\n    if (is_non_nullish_primitive(obj) || is_buffer(obj)) {\n        if (encoder) {\n            const key_value = encodeValuesOnly ? prefix\n                // @ts-expect-error\n                : encoder(prefix, defaults.encoder, charset, 'key', format);\n            return [\n                formatter?.(key_value) +\n                    '=' +\n                    // @ts-expect-error\n                    formatter?.(encoder(obj, defaults.encoder, charset, 'value', format)),\n            ];\n        }\n        return [formatter?.(prefix) + '=' + formatter?.(String(obj))];\n    }\n    const values = [];\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n    let obj_keys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        if (encodeValuesOnly && encoder) {\n            // @ts-expect-error values only\n            obj = maybe_map(obj, encoder);\n        }\n        obj_keys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    }\n    else if (isArray(filter)) {\n        obj_keys = filter;\n    }\n    else {\n        const keys = Object.keys(obj);\n        obj_keys = sort ? keys.sort(sort) : keys;\n    }\n    const encoded_prefix = encodeDotInKeys ? String(prefix).replace(/\\./g, '%2E') : String(prefix);\n    const adjusted_prefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encoded_prefix + '[]' : encoded_prefix;\n    if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n        return adjusted_prefix + '[]';\n    }\n    for (let j = 0; j < obj_keys.length; ++j) {\n        const key = obj_keys[j];\n        const value = \n        // @ts-ignore\n        typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n        if (skipNulls && value === null) {\n            continue;\n        }\n        // @ts-ignore\n        const encoded_key = allowDots && encodeDotInKeys ? key.replace(/\\./g, '%2E') : key;\n        const key_prefix = isArray(obj) ?\n            typeof generateArrayPrefix === 'function' ?\n                generateArrayPrefix(adjusted_prefix, encoded_key)\n                : adjusted_prefix\n            : adjusted_prefix + (allowDots ? '.' + encoded_key : '[' + encoded_key + ']');\n        sideChannel.set(object, step);\n        const valueSideChannel = new WeakMap();\n        valueSideChannel.set(sentinel, sideChannel);\n        push_to_array(values, inner_stringify(value, key_prefix, generateArrayPrefix, commaRoundTrip, allowEmptyArrays, strictNullHandling, skipNulls, encodeDotInKeys, \n        // @ts-ignore\n        generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset, valueSideChannel));\n    }\n    return values;\n}\nfunction normalize_stringify_options(opts = defaults) {\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n    if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n        throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n    const charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n    let format = default_format;\n    if (typeof opts.format !== 'undefined') {\n        if (!has(formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    const formatter = formatters[format];\n    let filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n    let arrayFormat;\n    if (opts.arrayFormat && opts.arrayFormat in array_prefix_generators) {\n        arrayFormat = opts.arrayFormat;\n    }\n    else if ('indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    }\n    else {\n        arrayFormat = defaults.arrayFormat;\n    }\n    if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n    const allowDots = typeof opts.allowDots === 'undefined' ?\n        !!opts.encodeDotInKeys === true ?\n            true\n            : defaults.allowDots\n        : !!opts.allowDots;\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        // @ts-ignore\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        arrayFormat: arrayFormat,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        commaRoundTrip: !!opts.commaRoundTrip,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        // @ts-ignore\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling,\n    };\n}\nexport function stringify(object, opts = {}) {\n    let obj = object;\n    const options = normalize_stringify_options(opts);\n    let obj_keys;\n    let filter;\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    }\n    else if (isArray(options.filter)) {\n        filter = options.filter;\n        obj_keys = filter;\n    }\n    const keys = [];\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n    const generateArrayPrefix = array_prefix_generators[options.arrayFormat];\n    const commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n    if (!obj_keys) {\n        obj_keys = Object.keys(obj);\n    }\n    if (options.sort) {\n        obj_keys.sort(options.sort);\n    }\n    const sideChannel = new WeakMap();\n    for (let i = 0; i < obj_keys.length; ++i) {\n        const key = obj_keys[i];\n        if (options.skipNulls && obj[key] === null) {\n            continue;\n        }\n        push_to_array(keys, inner_stringify(obj[key], key, \n        // @ts-expect-error\n        generateArrayPrefix, commaRoundTrip, options.allowEmptyArrays, options.strictNullHandling, options.skipNulls, options.encodeDotInKeys, options.encode ? options.encoder : null, options.filter, options.sort, options.allowDots, options.serializeDate, options.format, options.formatter, options.encodeValuesOnly, options.charset, sideChannel));\n    }\n    const joined = keys.join(options.delimiter);\n    let prefix = options.addQueryPrefix === true ? '?' : '';\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        }\n        else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n    return joined.length > 0 ? prefix + joined : '';\n}\n//# sourceMappingURL=stringify.mjs.map","export function concatBytes(buffers) {\n    let length = 0;\n    for (const buffer of buffers) {\n        length += buffer.length;\n    }\n    const output = new Uint8Array(length);\n    let index = 0;\n    for (const buffer of buffers) {\n        output.set(buffer, index);\n        index += buffer.length;\n    }\n    return output;\n}\nlet encodeUTF8_;\nexport function encodeUTF8(str) {\n    let encoder;\n    return (encodeUTF8_ ??\n        ((encoder = new globalThis.TextEncoder()), (encodeUTF8_ = encoder.encode.bind(encoder))))(str);\n}\nlet decodeUTF8_;\nexport function decodeUTF8(bytes) {\n    let decoder;\n    return (decodeUTF8_ ??\n        ((decoder = new globalThis.TextDecoder()), (decodeUTF8_ = decoder.decode.bind(decoder))))(bytes);\n}\n//# sourceMappingURL=bytes.mjs.map","var _LineDecoder_buffer, _LineDecoder_carriageReturnIndex;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../tslib.mjs\";\nimport { concatBytes, decodeUTF8, encodeUTF8 } from \"../utils/bytes.mjs\";\n/**\n * A re-implementation of httpx's `LineDecoder` in Python that handles incrementally\n * reading lines from text.\n *\n * https://github.com/encode/httpx/blob/920333ea98118e9cf617f246905d7b202510941c/httpx/_decoders.py#L258\n */\nexport class LineDecoder {\n    constructor() {\n        _LineDecoder_buffer.set(this, void 0);\n        _LineDecoder_carriageReturnIndex.set(this, void 0);\n        __classPrivateFieldSet(this, _LineDecoder_buffer, new Uint8Array(), \"f\");\n        __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n    }\n    decode(chunk) {\n        if (chunk == null) {\n            return [];\n        }\n        const binaryChunk = chunk instanceof ArrayBuffer ? new Uint8Array(chunk)\n            : typeof chunk === 'string' ? encodeUTF8(chunk)\n                : chunk;\n        __classPrivateFieldSet(this, _LineDecoder_buffer, concatBytes([__classPrivateFieldGet(this, _LineDecoder_buffer, \"f\"), binaryChunk]), \"f\");\n        const lines = [];\n        let patternIndex;\n        while ((patternIndex = findNewlineIndex(__classPrivateFieldGet(this, _LineDecoder_buffer, \"f\"), __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\"))) != null) {\n            if (patternIndex.carriage && __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") == null) {\n                // skip until we either get a corresponding `\\n`, a new `\\r` or nothing\n                __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, patternIndex.index, \"f\");\n                continue;\n            }\n            // we got double \\r or \\rtext\\n\n            if (__classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") != null &&\n                (patternIndex.index !== __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") + 1 || patternIndex.carriage)) {\n                lines.push(decodeUTF8(__classPrivateFieldGet(this, _LineDecoder_buffer, \"f\").subarray(0, __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") - 1)));\n                __classPrivateFieldSet(this, _LineDecoder_buffer, __classPrivateFieldGet(this, _LineDecoder_buffer, \"f\").subarray(__classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\")), \"f\");\n                __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n                continue;\n            }\n            const endIndex = __classPrivateFieldGet(this, _LineDecoder_carriageReturnIndex, \"f\") !== null ? patternIndex.preceding - 1 : patternIndex.preceding;\n            const line = decodeUTF8(__classPrivateFieldGet(this, _LineDecoder_buffer, \"f\").subarray(0, endIndex));\n            lines.push(line);\n            __classPrivateFieldSet(this, _LineDecoder_buffer, __classPrivateFieldGet(this, _LineDecoder_buffer, \"f\").subarray(patternIndex.index), \"f\");\n            __classPrivateFieldSet(this, _LineDecoder_carriageReturnIndex, null, \"f\");\n        }\n        return lines;\n    }\n    flush() {\n        if (!__classPrivateFieldGet(this, _LineDecoder_buffer, \"f\").length) {\n            return [];\n        }\n        return this.decode('\\n');\n    }\n}\n_LineDecoder_buffer = new WeakMap(), _LineDecoder_carriageReturnIndex = new WeakMap();\n// prettier-ignore\nLineDecoder.NEWLINE_CHARS = new Set(['\\n', '\\r']);\nLineDecoder.NEWLINE_REGEXP = /\\r\\n|[\\n\\r]/g;\n/**\n * This function searches the buffer for the end patterns, (\\r or \\n)\n * and returns an object with the index preceding the matched newline and the\n * index after the newline char. `null` is returned if no new line is found.\n *\n * ```ts\n * findNewLineIndex('abc\\ndef') -> { preceding: 2, index: 3 }\n * ```\n */\nfunction findNewlineIndex(buffer, startIndex) {\n    const newline = 0x0a; // \\n\n    const carriage = 0x0d; // \\r\n    for (let i = startIndex ?? 0; i < buffer.length; i++) {\n        if (buffer[i] === newline) {\n            return { preceding: i, index: i + 1, carriage: false };\n        }\n        if (buffer[i] === carriage) {\n            return { preceding: i, index: i + 1, carriage: true };\n        }\n    }\n    return null;\n}\nexport function findDoubleNewlineIndex(buffer) {\n    // This function searches the buffer for the end patterns (\\r\\r, \\n\\n, \\r\\n\\r\\n)\n    // and returns the index right after the first occurrence of any pattern,\n    // or -1 if none of the patterns are found.\n    const newline = 0x0a; // \\n\n    const carriage = 0x0d; // \\r\n    for (let i = 0; i < buffer.length - 1; i++) {\n        if (buffer[i] === newline && buffer[i + 1] === newline) {\n            // \\n\\n\n            return i + 2;\n        }\n        if (buffer[i] === carriage && buffer[i + 1] === carriage) {\n            // \\r\\r\n            return i + 2;\n        }\n        if (buffer[i] === carriage &&\n            buffer[i + 1] === newline &&\n            i + 3 < buffer.length &&\n            buffer[i + 2] === carriage &&\n            buffer[i + 3] === newline) {\n            // \\r\\n\\r\\n\n            return i + 4;\n        }\n    }\n    return -1;\n}\n//# sourceMappingURL=line.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { hasOwn } from \"./values.mjs\";\nconst levelNumbers = {\n    off: 0,\n    error: 200,\n    warn: 300,\n    info: 400,\n    debug: 500,\n};\nexport const parseLogLevel = (maybeLevel, sourceName, client) => {\n    if (!maybeLevel) {\n        return undefined;\n    }\n    if (hasOwn(levelNumbers, maybeLevel)) {\n        return maybeLevel;\n    }\n    loggerFor(client).warn(`${sourceName} was set to ${JSON.stringify(maybeLevel)}, expected one of ${JSON.stringify(Object.keys(levelNumbers))}`);\n    return undefined;\n};\nfunction noop() { }\nfunction makeLogFn(fnLevel, logger, logLevel) {\n    if (!logger || levelNumbers[fnLevel] > levelNumbers[logLevel]) {\n        return noop;\n    }\n    else {\n        // Don't wrap logger functions, we want the stacktrace intact!\n        return logger[fnLevel].bind(logger);\n    }\n}\nconst noopLogger = {\n    error: noop,\n    warn: noop,\n    info: noop,\n    debug: noop,\n};\nlet cachedLoggers = /* @__PURE__ */ new WeakMap();\nexport function loggerFor(client) {\n    const logger = client.logger;\n    const logLevel = client.logLevel ?? 'off';\n    if (!logger) {\n        return noopLogger;\n    }\n    const cachedLogger = cachedLoggers.get(logger);\n    if (cachedLogger && cachedLogger[0] === logLevel) {\n        return cachedLogger[1];\n    }\n    const levelLogger = {\n        error: makeLogFn('error', logger, logLevel),\n        warn: makeLogFn('warn', logger, logLevel),\n        info: makeLogFn('info', logger, logLevel),\n        debug: makeLogFn('debug', logger, logLevel),\n    };\n    cachedLoggers.set(logger, [logLevel, levelLogger]);\n    return levelLogger;\n}\nexport const formatRequestDetails = (details) => {\n    if (details.options) {\n        details.options = { ...details.options };\n        delete details.options['headers']; // redundant + leaks internals\n    }\n    if (details.headers) {\n        details.headers = Object.fromEntries((details.headers instanceof Headers ? [...details.headers] : Object.entries(details.headers)).map(([name, value]) => [\n            name,\n            (name.toLowerCase() === 'authorization' ||\n                name.toLowerCase() === 'cookie' ||\n                name.toLowerCase() === 'set-cookie') ?\n                '***'\n                : value,\n        ]));\n    }\n    if ('retryOfRequestLogID' in details) {\n        if (details.retryOfRequestLogID) {\n            details.retryOf = details.retryOfRequestLogID;\n        }\n        delete details.retryOfRequestLogID;\n    }\n    return details;\n};\n//# sourceMappingURL=log.mjs.map","var _Stream_client;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { OpenAIError } from \"./error.mjs\";\nimport { makeReadableStream } from \"../internal/shims.mjs\";\nimport { findDoubleNewlineIndex, LineDecoder } from \"../internal/decoders/line.mjs\";\nimport { ReadableStreamToAsyncIterable } from \"../internal/shims.mjs\";\nimport { isAbortError } from \"../internal/errors.mjs\";\nimport { encodeUTF8 } from \"../internal/utils/bytes.mjs\";\nimport { loggerFor } from \"../internal/utils/log.mjs\";\nimport { APIError } from \"./error.mjs\";\nexport class Stream {\n    constructor(iterator, controller, client) {\n        this.iterator = iterator;\n        _Stream_client.set(this, void 0);\n        this.controller = controller;\n        __classPrivateFieldSet(this, _Stream_client, client, \"f\");\n    }\n    static fromSSEResponse(response, controller, client) {\n        let consumed = false;\n        const logger = client ? loggerFor(client) : console;\n        async function* iterator() {\n            if (consumed) {\n                throw new OpenAIError('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n            }\n            consumed = true;\n            let done = false;\n            try {\n                for await (const sse of _iterSSEMessages(response, controller)) {\n                    if (done)\n                        continue;\n                    if (sse.data.startsWith('[DONE]')) {\n                        done = true;\n                        continue;\n                    }\n                    if (sse.event === null || !sse.event.startsWith('thread.')) {\n                        let data;\n                        try {\n                            data = JSON.parse(sse.data);\n                        }\n                        catch (e) {\n                            logger.error(`Could not parse message into JSON:`, sse.data);\n                            logger.error(`From chunk:`, sse.raw);\n                            throw e;\n                        }\n                        if (data && data.error) {\n                            throw new APIError(undefined, data.error, undefined, response.headers);\n                        }\n                        yield data;\n                    }\n                    else {\n                        let data;\n                        try {\n                            data = JSON.parse(sse.data);\n                        }\n                        catch (e) {\n                            console.error(`Could not parse message into JSON:`, sse.data);\n                            console.error(`From chunk:`, sse.raw);\n                            throw e;\n                        }\n                        // TODO: Is this where the error should be thrown?\n                        if (sse.event == 'error') {\n                            throw new APIError(undefined, data.error, data.message, undefined);\n                        }\n                        yield { event: sse.event, data: data };\n                    }\n                }\n                done = true;\n            }\n            catch (e) {\n                // If the user calls `stream.controller.abort()`, we should exit without throwing.\n                if (isAbortError(e))\n                    return;\n                throw e;\n            }\n            finally {\n                // If the user `break`s, abort the ongoing request.\n                if (!done)\n                    controller.abort();\n            }\n        }\n        return new Stream(iterator, controller, client);\n    }\n    /**\n     * Generates a Stream from a newline-separated ReadableStream\n     * where each item is a JSON value.\n     */\n    static fromReadableStream(readableStream, controller, client) {\n        let consumed = false;\n        async function* iterLines() {\n            const lineDecoder = new LineDecoder();\n            const iter = ReadableStreamToAsyncIterable(readableStream);\n            for await (const chunk of iter) {\n                for (const line of lineDecoder.decode(chunk)) {\n                    yield line;\n                }\n            }\n            for (const line of lineDecoder.flush()) {\n                yield line;\n            }\n        }\n        async function* iterator() {\n            if (consumed) {\n                throw new OpenAIError('Cannot iterate over a consumed stream, use `.tee()` to split the stream.');\n            }\n            consumed = true;\n            let done = false;\n            try {\n                for await (const line of iterLines()) {\n                    if (done)\n                        continue;\n                    if (line)\n                        yield JSON.parse(line);\n                }\n                done = true;\n            }\n            catch (e) {\n                // If the user calls `stream.controller.abort()`, we should exit without throwing.\n                if (isAbortError(e))\n                    return;\n                throw e;\n            }\n            finally {\n                // If the user `break`s, abort the ongoing request.\n                if (!done)\n                    controller.abort();\n            }\n        }\n        return new Stream(iterator, controller, client);\n    }\n    [(_Stream_client = new WeakMap(), Symbol.asyncIterator)]() {\n        return this.iterator();\n    }\n    /**\n     * Splits the stream into two streams which can be\n     * independently read from at different speeds.\n     */\n    tee() {\n        const left = [];\n        const right = [];\n        const iterator = this.iterator();\n        const teeIterator = (queue) => {\n            return {\n                next: () => {\n                    if (queue.length === 0) {\n                        const result = iterator.next();\n                        left.push(result);\n                        right.push(result);\n                    }\n                    return queue.shift();\n                },\n            };\n        };\n        return [\n            new Stream(() => teeIterator(left), this.controller, __classPrivateFieldGet(this, _Stream_client, \"f\")),\n            new Stream(() => teeIterator(right), this.controller, __classPrivateFieldGet(this, _Stream_client, \"f\")),\n        ];\n    }\n    /**\n     * Converts this stream to a newline-separated ReadableStream of\n     * JSON stringified values in the stream\n     * which can be turned back into a Stream with `Stream.fromReadableStream()`.\n     */\n    toReadableStream() {\n        const self = this;\n        let iter;\n        return makeReadableStream({\n            async start() {\n                iter = self[Symbol.asyncIterator]();\n            },\n            async pull(ctrl) {\n                try {\n                    const { value, done } = await iter.next();\n                    if (done)\n                        return ctrl.close();\n                    const bytes = encodeUTF8(JSON.stringify(value) + '\\n');\n                    ctrl.enqueue(bytes);\n                }\n                catch (err) {\n                    ctrl.error(err);\n                }\n            },\n            async cancel() {\n                await iter.return?.();\n            },\n        });\n    }\n}\nexport async function* _iterSSEMessages(response, controller) {\n    if (!response.body) {\n        controller.abort();\n        if (typeof globalThis.navigator !== 'undefined' &&\n            globalThis.navigator.product === 'ReactNative') {\n            throw new OpenAIError(`The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api`);\n        }\n        throw new OpenAIError(`Attempted to iterate over a response with no body`);\n    }\n    const sseDecoder = new SSEDecoder();\n    const lineDecoder = new LineDecoder();\n    const iter = ReadableStreamToAsyncIterable(response.body);\n    for await (const sseChunk of iterSSEChunks(iter)) {\n        for (const line of lineDecoder.decode(sseChunk)) {\n            const sse = sseDecoder.decode(line);\n            if (sse)\n                yield sse;\n        }\n    }\n    for (const line of lineDecoder.flush()) {\n        const sse = sseDecoder.decode(line);\n        if (sse)\n            yield sse;\n    }\n}\n/**\n * Given an async iterable iterator, iterates over it and yields full\n * SSE chunks, i.e. yields when a double new-line is encountered.\n */\nasync function* iterSSEChunks(iterator) {\n    let data = new Uint8Array();\n    for await (const chunk of iterator) {\n        if (chunk == null) {\n            continue;\n        }\n        const binaryChunk = chunk instanceof ArrayBuffer ? new Uint8Array(chunk)\n            : typeof chunk === 'string' ? encodeUTF8(chunk)\n                : chunk;\n        let newData = new Uint8Array(data.length + binaryChunk.length);\n        newData.set(data);\n        newData.set(binaryChunk, data.length);\n        data = newData;\n        let patternIndex;\n        while ((patternIndex = findDoubleNewlineIndex(data)) !== -1) {\n            yield data.slice(0, patternIndex);\n            data = data.slice(patternIndex);\n        }\n    }\n    if (data.length > 0) {\n        yield data;\n    }\n}\nclass SSEDecoder {\n    constructor() {\n        this.event = null;\n        this.data = [];\n        this.chunks = [];\n    }\n    decode(line) {\n        if (line.endsWith('\\r')) {\n            line = line.substring(0, line.length - 1);\n        }\n        if (!line) {\n            // empty line and we didn't previously encounter any messages\n            if (!this.event && !this.data.length)\n                return null;\n            const sse = {\n                event: this.event,\n                data: this.data.join('\\n'),\n                raw: this.chunks,\n            };\n            this.event = null;\n            this.data = [];\n            this.chunks = [];\n            return sse;\n        }\n        this.chunks.push(line);\n        if (line.startsWith(':')) {\n            return null;\n        }\n        let [fieldname, _, value] = partition(line, ':');\n        if (value.startsWith(' ')) {\n            value = value.substring(1);\n        }\n        if (fieldname === 'event') {\n            this.event = value;\n        }\n        else if (fieldname === 'data') {\n            this.data.push(value);\n        }\n        return null;\n    }\n}\nfunction partition(str, delimiter) {\n    const index = str.indexOf(delimiter);\n    if (index !== -1) {\n        return [str.substring(0, index), delimiter, str.substring(index + delimiter.length)];\n    }\n    return [str, '', ''];\n}\n//# sourceMappingURL=streaming.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { Stream } from \"../core/streaming.mjs\";\nimport { formatRequestDetails, loggerFor } from \"./utils/log.mjs\";\nexport async function defaultParseResponse(client, props) {\n    const { response, requestLogID, retryOfRequestLogID, startTime } = props;\n    const body = await (async () => {\n        if (props.options.stream) {\n            loggerFor(client).debug('response', response.status, response.url, response.headers, response.body);\n            // Note: there is an invariant here that isn't represented in the type system\n            // that if you set `stream: true` the response type must also be `Stream<T>`\n            if (props.options.__streamClass) {\n                return props.options.__streamClass.fromSSEResponse(response, props.controller, client);\n            }\n            return Stream.fromSSEResponse(response, props.controller, client);\n        }\n        // fetch refuses to read the body when the status code is 204.\n        if (response.status === 204) {\n            return null;\n        }\n        if (props.options.__binaryResponse) {\n            return response;\n        }\n        const contentType = response.headers.get('content-type');\n        const mediaType = contentType?.split(';')[0]?.trim();\n        const isJSON = mediaType?.includes('application/json') || mediaType?.endsWith('+json');\n        if (isJSON) {\n            const json = await response.json();\n            return addRequestID(json, response);\n        }\n        const text = await response.text();\n        return text;\n    })();\n    loggerFor(client).debug(`[${requestLogID}] response parsed`, formatRequestDetails({\n        retryOfRequestLogID,\n        url: response.url,\n        status: response.status,\n        body,\n        durationMs: Date.now() - startTime,\n    }));\n    return body;\n}\nexport function addRequestID(value, response) {\n    if (!value || typeof value !== 'object' || Array.isArray(value)) {\n        return value;\n    }\n    return Object.defineProperty(value, '_request_id', {\n        value: response.headers.get('x-request-id'),\n        enumerable: false,\n    });\n}\n//# sourceMappingURL=parse.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar _APIPromise_client;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { defaultParseResponse, addRequestID, } from \"../internal/parse.mjs\";\n/**\n * A subclass of `Promise` providing additional helper methods\n * for interacting with the SDK.\n */\nexport class APIPromise extends Promise {\n    constructor(client, responsePromise, parseResponse = defaultParseResponse) {\n        super((resolve) => {\n            // this is maybe a bit weird but this has to be a no-op to not implicitly\n            // parse the response body; instead .then, .catch, .finally are overridden\n            // to parse the response\n            resolve(null);\n        });\n        this.responsePromise = responsePromise;\n        this.parseResponse = parseResponse;\n        _APIPromise_client.set(this, void 0);\n        __classPrivateFieldSet(this, _APIPromise_client, client, \"f\");\n    }\n    _thenUnwrap(transform) {\n        return new APIPromise(__classPrivateFieldGet(this, _APIPromise_client, \"f\"), this.responsePromise, async (client, props) => addRequestID(transform(await this.parseResponse(client, props), props), props.response));\n    }\n    /**\n     * Gets the raw `Response` instance instead of parsing the response\n     * data.\n     *\n     * If you want to parse the response body but still get the `Response`\n     * instance, you can use {@link withResponse()}.\n     *\n     * 👋 Getting the wrong TypeScript type for `Response`?\n     * Try setting `\"moduleResolution\": \"NodeNext\"` or add `\"lib\": [\"DOM\"]`\n     * to your `tsconfig.json`.\n     */\n    asResponse() {\n        return this.responsePromise.then((p) => p.response);\n    }\n    /**\n     * Gets the parsed response data, the raw `Response` instance and the ID of the request,\n     * returned via the X-Request-ID header which is useful for debugging requests and reporting\n     * issues to OpenAI.\n     *\n     * If you just want to get the raw `Response` instance without parsing it,\n     * you can use {@link asResponse()}.\n     *\n     * 👋 Getting the wrong TypeScript type for `Response`?\n     * Try setting `\"moduleResolution\": \"NodeNext\"` or add `\"lib\": [\"DOM\"]`\n     * to your `tsconfig.json`.\n     */\n    async withResponse() {\n        const [data, response] = await Promise.all([this.parse(), this.asResponse()]);\n        return { data, response, request_id: response.headers.get('x-request-id') };\n    }\n    parse() {\n        if (!this.parsedPromise) {\n            this.parsedPromise = this.responsePromise.then((data) => this.parseResponse(__classPrivateFieldGet(this, _APIPromise_client, \"f\"), data));\n        }\n        return this.parsedPromise;\n    }\n    then(onfulfilled, onrejected) {\n        return this.parse().then(onfulfilled, onrejected);\n    }\n    catch(onrejected) {\n        return this.parse().catch(onrejected);\n    }\n    finally(onfinally) {\n        return this.parse().finally(onfinally);\n    }\n}\n_APIPromise_client = new WeakMap();\n//# sourceMappingURL=api-promise.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar _AbstractPage_client;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { OpenAIError } from \"./error.mjs\";\nimport { defaultParseResponse } from \"../internal/parse.mjs\";\nimport { APIPromise } from \"./api-promise.mjs\";\nimport { maybeObj } from \"../internal/utils/values.mjs\";\nexport class AbstractPage {\n    constructor(client, response, body, options) {\n        _AbstractPage_client.set(this, void 0);\n        __classPrivateFieldSet(this, _AbstractPage_client, client, \"f\");\n        this.options = options;\n        this.response = response;\n        this.body = body;\n    }\n    hasNextPage() {\n        const items = this.getPaginatedItems();\n        if (!items.length)\n            return false;\n        return this.nextPageRequestOptions() != null;\n    }\n    async getNextPage() {\n        const nextOptions = this.nextPageRequestOptions();\n        if (!nextOptions) {\n            throw new OpenAIError('No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.');\n        }\n        return await __classPrivateFieldGet(this, _AbstractPage_client, \"f\").requestAPIList(this.constructor, nextOptions);\n    }\n    async *iterPages() {\n        let page = this;\n        yield page;\n        while (page.hasNextPage()) {\n            page = await page.getNextPage();\n            yield page;\n        }\n    }\n    async *[(_AbstractPage_client = new WeakMap(), Symbol.asyncIterator)]() {\n        for await (const page of this.iterPages()) {\n            for (const item of page.getPaginatedItems()) {\n                yield item;\n            }\n        }\n    }\n}\n/**\n * This subclass of Promise will resolve to an instantiated Page once the request completes.\n *\n * It also implements AsyncIterable to allow auto-paginating iteration on an unawaited list call, eg:\n *\n *    for await (const item of client.items.list()) {\n *      console.log(item)\n *    }\n */\nexport class PagePromise extends APIPromise {\n    constructor(client, request, Page) {\n        super(client, request, async (client, props) => new Page(client, props.response, await defaultParseResponse(client, props), props.options));\n    }\n    /**\n     * Allow auto-paginating iteration on an unawaited list call, eg:\n     *\n     *    for await (const item of client.items.list()) {\n     *      console.log(item)\n     *    }\n     */\n    async *[Symbol.asyncIterator]() {\n        const page = await this;\n        for await (const item of page) {\n            yield item;\n        }\n    }\n}\n/**\n * Note: no pagination actually occurs yet, this is for forwards-compatibility.\n */\nexport class Page extends AbstractPage {\n    constructor(client, response, body, options) {\n        super(client, response, body, options);\n        this.data = body.data || [];\n        this.object = body.object;\n    }\n    getPaginatedItems() {\n        return this.data ?? [];\n    }\n    nextPageRequestOptions() {\n        return null;\n    }\n}\nexport class CursorPage extends AbstractPage {\n    constructor(client, response, body, options) {\n        super(client, response, body, options);\n        this.data = body.data || [];\n        this.has_more = body.has_more || false;\n    }\n    getPaginatedItems() {\n        return this.data ?? [];\n    }\n    hasNextPage() {\n        if (this.has_more === false) {\n            return false;\n        }\n        return super.hasNextPage();\n    }\n    nextPageRequestOptions() {\n        const data = this.getPaginatedItems();\n        const id = data[data.length - 1]?.id;\n        if (!id) {\n            return null;\n        }\n        return {\n            ...this.options,\n            query: {\n                ...maybeObj(this.options.query),\n                after: id,\n            },\n        };\n    }\n}\nexport class ConversationCursorPage extends AbstractPage {\n    constructor(client, response, body, options) {\n        super(client, response, body, options);\n        this.data = body.data || [];\n        this.has_more = body.has_more || false;\n        this.last_id = body.last_id || '';\n    }\n    getPaginatedItems() {\n        return this.data ?? [];\n    }\n    hasNextPage() {\n        if (this.has_more === false) {\n            return false;\n        }\n        return super.hasNextPage();\n    }\n    nextPageRequestOptions() {\n        const cursor = this.last_id;\n        if (!cursor) {\n            return null;\n        }\n        return {\n            ...this.options,\n            query: {\n                ...maybeObj(this.options.query),\n                after: cursor,\n            },\n        };\n    }\n}\n//# sourceMappingURL=pagination.mjs.map","import { ReadableStreamFrom } from \"./shims.mjs\";\nexport const checkFileSupport = () => {\n    if (typeof File === 'undefined') {\n        const { process } = globalThis;\n        const isOldNode = typeof process?.versions?.node === 'string' && parseInt(process.versions.node.split('.')) < 20;\n        throw new Error('`File` is not defined as a global, which is required for file uploads.' +\n            (isOldNode ?\n                \" Update to Node 20 LTS or newer, or set `globalThis.File` to `import('node:buffer').File`.\"\n                : ''));\n    }\n};\n/**\n * Construct a `File` instance. This is used to ensure a helpful error is thrown\n * for environments that don't define a global `File` yet.\n */\nexport function makeFile(fileBits, fileName, options) {\n    checkFileSupport();\n    return new File(fileBits, fileName ?? 'unknown_file', options);\n}\nexport function getName(value) {\n    return (((typeof value === 'object' &&\n        value !== null &&\n        (('name' in value && value.name && String(value.name)) ||\n            ('url' in value && value.url && String(value.url)) ||\n            ('filename' in value && value.filename && String(value.filename)) ||\n            ('path' in value && value.path && String(value.path)))) ||\n        '')\n        .split(/[\\\\/]/)\n        .pop() || undefined);\n}\nexport const isAsyncIterable = (value) => value != null && typeof value === 'object' && typeof value[Symbol.asyncIterator] === 'function';\n/**\n * Returns a multipart/form-data request if any part of the given request body contains a File / Blob value.\n * Otherwise returns the request as is.\n */\nexport const maybeMultipartFormRequestOptions = async (opts, fetch) => {\n    if (!hasUploadableValue(opts.body))\n        return opts;\n    return { ...opts, body: await createForm(opts.body, fetch) };\n};\nexport const multipartFormRequestOptions = async (opts, fetch) => {\n    return { ...opts, body: await createForm(opts.body, fetch) };\n};\nconst supportsFormDataMap = /* @__PURE__ */ new WeakMap();\n/**\n * node-fetch doesn't support the global FormData object in recent node versions. Instead of sending\n * properly-encoded form data, it just stringifies the object, resulting in a request body of \"[object FormData]\".\n * This function detects if the fetch function provided supports the global FormData object to avoid\n * confusing error messages later on.\n */\nfunction supportsFormData(fetchObject) {\n    const fetch = typeof fetchObject === 'function' ? fetchObject : fetchObject.fetch;\n    const cached = supportsFormDataMap.get(fetch);\n    if (cached)\n        return cached;\n    const promise = (async () => {\n        try {\n            const FetchResponse = ('Response' in fetch ?\n                fetch.Response\n                : (await fetch('data:,')).constructor);\n            const data = new FormData();\n            if (data.toString() === (await new FetchResponse(data).text())) {\n                return false;\n            }\n            return true;\n        }\n        catch {\n            // avoid false negatives\n            return true;\n        }\n    })();\n    supportsFormDataMap.set(fetch, promise);\n    return promise;\n}\nexport const createForm = async (body, fetch) => {\n    if (!(await supportsFormData(fetch))) {\n        throw new TypeError('The provided fetch function does not support file uploads with the current global FormData class.');\n    }\n    const form = new FormData();\n    await Promise.all(Object.entries(body || {}).map(([key, value]) => addFormValue(form, key, value)));\n    return form;\n};\n// We check for Blob not File because Bun.File doesn't inherit from File,\n// but they both inherit from Blob and have a `name` property at runtime.\nconst isNamedBlob = (value) => value instanceof Blob && 'name' in value;\nconst isUploadable = (value) => typeof value === 'object' &&\n    value !== null &&\n    (value instanceof Response || isAsyncIterable(value) || isNamedBlob(value));\nconst hasUploadableValue = (value) => {\n    if (isUploadable(value))\n        return true;\n    if (Array.isArray(value))\n        return value.some(hasUploadableValue);\n    if (value && typeof value === 'object') {\n        for (const k in value) {\n            if (hasUploadableValue(value[k]))\n                return true;\n        }\n    }\n    return false;\n};\nconst addFormValue = async (form, key, value) => {\n    if (value === undefined)\n        return;\n    if (value == null) {\n        throw new TypeError(`Received null for \"${key}\"; to pass null in FormData, you must use the string 'null'`);\n    }\n    // TODO: make nested formats configurable\n    if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n        form.append(key, String(value));\n    }\n    else if (value instanceof Response) {\n        form.append(key, makeFile([await value.blob()], getName(value)));\n    }\n    else if (isAsyncIterable(value)) {\n        form.append(key, makeFile([await new Response(ReadableStreamFrom(value)).blob()], getName(value)));\n    }\n    else if (isNamedBlob(value)) {\n        form.append(key, value, getName(value));\n    }\n    else if (Array.isArray(value)) {\n        await Promise.all(value.map((entry) => addFormValue(form, key + '[]', entry)));\n    }\n    else if (typeof value === 'object') {\n        await Promise.all(Object.entries(value).map(([name, prop]) => addFormValue(form, `${key}[${name}]`, prop)));\n    }\n    else {\n        throw new TypeError(`Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${value} instead`);\n    }\n};\n//# sourceMappingURL=uploads.mjs.map","import { getName, makeFile, isAsyncIterable } from \"./uploads.mjs\";\nimport { checkFileSupport } from \"./uploads.mjs\";\n/**\n * This check adds the arrayBuffer() method type because it is available and used at runtime\n */\nconst isBlobLike = (value) => value != null &&\n    typeof value === 'object' &&\n    typeof value.size === 'number' &&\n    typeof value.type === 'string' &&\n    typeof value.text === 'function' &&\n    typeof value.slice === 'function' &&\n    typeof value.arrayBuffer === 'function';\n/**\n * This check adds the arrayBuffer() method type because it is available and used at runtime\n */\nconst isFileLike = (value) => value != null &&\n    typeof value === 'object' &&\n    typeof value.name === 'string' &&\n    typeof value.lastModified === 'number' &&\n    isBlobLike(value);\nconst isResponseLike = (value) => value != null &&\n    typeof value === 'object' &&\n    typeof value.url === 'string' &&\n    typeof value.blob === 'function';\n/**\n * Helper for creating a {@link File} to pass to an SDK upload method from a variety of different data formats\n * @param value the raw content of the file.  Can be an {@link Uploadable}, {@link BlobLikePart}, or {@link AsyncIterable} of {@link BlobLikePart}s\n * @param {string=} name the name of the file. If omitted, toFile will try to determine a file name from bits if possible\n * @param {Object=} options additional properties\n * @param {string=} options.type the MIME type of the content\n * @param {number=} options.lastModified the last modified timestamp\n * @returns a {@link File} with the given properties\n */\nexport async function toFile(value, name, options) {\n    checkFileSupport();\n    // If it's a promise, resolve it.\n    value = await value;\n    // If we've been given a `File` we don't need to do anything\n    if (isFileLike(value)) {\n        if (value instanceof File) {\n            return value;\n        }\n        return makeFile([await value.arrayBuffer()], value.name);\n    }\n    if (isResponseLike(value)) {\n        const blob = await value.blob();\n        name || (name = new URL(value.url).pathname.split(/[\\\\/]/).pop());\n        return makeFile(await getBytes(blob), name, options);\n    }\n    const parts = await getBytes(value);\n    name || (name = getName(value));\n    if (!options?.type) {\n        const type = parts.find((part) => typeof part === 'object' && 'type' in part && part.type);\n        if (typeof type === 'string') {\n            options = { ...options, type };\n        }\n    }\n    return makeFile(parts, name, options);\n}\nasync function getBytes(value) {\n    let parts = [];\n    if (typeof value === 'string' ||\n        ArrayBuffer.isView(value) || // includes Uint8Array, Buffer, etc.\n        value instanceof ArrayBuffer) {\n        parts.push(value);\n    }\n    else if (isBlobLike(value)) {\n        parts.push(value instanceof Blob ? value : await value.arrayBuffer());\n    }\n    else if (isAsyncIterable(value) // includes Readable, ReadableStream, etc.\n    ) {\n        for await (const chunk of value) {\n            parts.push(...(await getBytes(chunk))); // TODO, consider validating?\n        }\n    }\n    else {\n        const constructor = value?.constructor?.name;\n        throw new Error(`Unexpected data type: ${typeof value}${constructor ? `; constructor: ${constructor}` : ''}${propsForError(value)}`);\n    }\n    return parts;\n}\nfunction propsForError(value) {\n    if (typeof value !== 'object' || value === null)\n        return '';\n    const props = Object.getOwnPropertyNames(value);\n    return `; props: [${props.map((p) => `\"${p}\"`).join(', ')}]`;\n}\n//# sourceMappingURL=to-file.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nexport class APIResource {\n    constructor(client) {\n        this._client = client;\n    }\n}\n//# sourceMappingURL=resource.mjs.map","import { OpenAIError } from \"../../core/error.mjs\";\n/**\n * Percent-encode everything that isn't safe to have in a path without encoding safe chars.\n *\n * Taken from https://datatracker.ietf.org/doc/html/rfc3986#section-3.3:\n * > unreserved  = ALPHA / DIGIT / \"-\" / \".\" / \"_\" / \"~\"\n * > sub-delims  = \"!\" / \"$\" / \"&\" / \"'\" / \"(\" / \")\" / \"*\" / \"+\" / \",\" / \";\" / \"=\"\n * > pchar       = unreserved / pct-encoded / sub-delims / \":\" / \"@\"\n */\nexport function encodeURIPath(str) {\n    return str.replace(/[^A-Za-z0-9\\-._~!$&'()*+,;=:@]+/g, encodeURIComponent);\n}\nconst EMPTY = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.create(null));\nexport const createPathTagFunction = (pathEncoder = encodeURIPath) => function path(statics, ...params) {\n    // If there are no params, no processing is needed.\n    if (statics.length === 1)\n        return statics[0];\n    let postPath = false;\n    const invalidSegments = [];\n    const path = statics.reduce((previousValue, currentValue, index) => {\n        if (/[?#]/.test(currentValue)) {\n            postPath = true;\n        }\n        const value = params[index];\n        let encoded = (postPath ? encodeURIComponent : pathEncoder)('' + value);\n        if (index !== params.length &&\n            (value == null ||\n                (typeof value === 'object' &&\n                    // handle values from other realms\n                    value.toString ===\n                        Object.getPrototypeOf(Object.getPrototypeOf(value.hasOwnProperty ?? EMPTY) ?? EMPTY)\n                            ?.toString))) {\n            encoded = value + '';\n            invalidSegments.push({\n                start: previousValue.length + currentValue.length,\n                length: encoded.length,\n                error: `Value of type ${Object.prototype.toString\n                    .call(value)\n                    .slice(8, -1)} is not a valid path parameter`,\n            });\n        }\n        return previousValue + currentValue + (index === params.length ? '' : encoded);\n    }, '');\n    const pathOnly = path.split(/[?#]/, 1)[0];\n    const invalidSegmentPattern = /(?<=^|\\/)(?:\\.|%2e){1,2}(?=\\/|$)/gi;\n    let match;\n    // Find all invalid segments\n    while ((match = invalidSegmentPattern.exec(pathOnly)) !== null) {\n        invalidSegments.push({\n            start: match.index,\n            length: match[0].length,\n            error: `Value \"${match[0]}\" can\\'t be safely passed as a path parameter`,\n        });\n    }\n    invalidSegments.sort((a, b) => a.start - b.start);\n    if (invalidSegments.length > 0) {\n        let lastEnd = 0;\n        const underline = invalidSegments.reduce((acc, segment) => {\n            const spaces = ' '.repeat(segment.start - lastEnd);\n            const arrows = '^'.repeat(segment.length);\n            lastEnd = segment.start + segment.length;\n            return acc + spaces + arrows;\n        }, '');\n        throw new OpenAIError(`Path parameters result in path with invalid segments:\\n${invalidSegments\n            .map((e) => e.error)\n            .join('\\n')}\\n${path}\\n${underline}`);\n    }\n    return path;\n};\n/**\n * URI-encodes path params and ensures no unsafe /./ or /../ path segments are introduced.\n */\nexport const path = /* @__PURE__ */ createPathTagFunction(encodeURIPath);\n//# sourceMappingURL=path.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Messages extends APIResource {\n    /**\n     * Get the messages in a stored chat completion. Only Chat Completions that have\n     * been created with the `store` parameter set to `true` will be returned.\n     *\n     * @example\n     * ```ts\n     * // Automatically fetches more pages as needed.\n     * for await (const chatCompletionStoreMessage of client.chat.completions.messages.list(\n     *   'completion_id',\n     * )) {\n     *   // ...\n     * }\n     * ```\n     */\n    list(completionID, query = {}, options) {\n        return this._client.getAPIList(path `/chat/completions/${completionID}/messages`, (CursorPage), { query, ...options });\n    }\n}\n//# sourceMappingURL=messages.mjs.map","import { ContentFilterFinishReasonError, LengthFinishReasonError, OpenAIError } from \"../error.mjs\";\nexport function isChatCompletionFunctionTool(tool) {\n    return tool !== undefined && 'function' in tool && tool.function !== undefined;\n}\nexport function makeParseableResponseFormat(response_format, parser) {\n    const obj = { ...response_format };\n    Object.defineProperties(obj, {\n        $brand: {\n            value: 'auto-parseable-response-format',\n            enumerable: false,\n        },\n        $parseRaw: {\n            value: parser,\n            enumerable: false,\n        },\n    });\n    return obj;\n}\nexport function makeParseableTextFormat(response_format, parser) {\n    const obj = { ...response_format };\n    Object.defineProperties(obj, {\n        $brand: {\n            value: 'auto-parseable-response-format',\n            enumerable: false,\n        },\n        $parseRaw: {\n            value: parser,\n            enumerable: false,\n        },\n    });\n    return obj;\n}\nexport function isAutoParsableResponseFormat(response_format) {\n    return response_format?.['$brand'] === 'auto-parseable-response-format';\n}\nexport function makeParseableTool(tool, { parser, callback, }) {\n    const obj = { ...tool };\n    Object.defineProperties(obj, {\n        $brand: {\n            value: 'auto-parseable-tool',\n            enumerable: false,\n        },\n        $parseRaw: {\n            value: parser,\n            enumerable: false,\n        },\n        $callback: {\n            value: callback,\n            enumerable: false,\n        },\n    });\n    return obj;\n}\nexport function isAutoParsableTool(tool) {\n    return tool?.['$brand'] === 'auto-parseable-tool';\n}\nexport function maybeParseChatCompletion(completion, params) {\n    if (!params || !hasAutoParseableInput(params)) {\n        return {\n            ...completion,\n            choices: completion.choices.map((choice) => {\n                assertToolCallsAreChatCompletionFunctionToolCalls(choice.message.tool_calls);\n                return {\n                    ...choice,\n                    message: {\n                        ...choice.message,\n                        parsed: null,\n                        ...(choice.message.tool_calls ?\n                            {\n                                tool_calls: choice.message.tool_calls,\n                            }\n                            : undefined),\n                    },\n                };\n            }),\n        };\n    }\n    return parseChatCompletion(completion, params);\n}\nexport function parseChatCompletion(completion, params) {\n    const choices = completion.choices.map((choice) => {\n        if (choice.finish_reason === 'length') {\n            throw new LengthFinishReasonError();\n        }\n        if (choice.finish_reason === 'content_filter') {\n            throw new ContentFilterFinishReasonError();\n        }\n        assertToolCallsAreChatCompletionFunctionToolCalls(choice.message.tool_calls);\n        return {\n            ...choice,\n            message: {\n                ...choice.message,\n                ...(choice.message.tool_calls ?\n                    {\n                        tool_calls: choice.message.tool_calls?.map((toolCall) => parseToolCall(params, toolCall)) ?? undefined,\n                    }\n                    : undefined),\n                parsed: choice.message.content && !choice.message.refusal ?\n                    parseResponseFormat(params, choice.message.content)\n                    : null,\n            },\n        };\n    });\n    return { ...completion, choices };\n}\nfunction parseResponseFormat(params, content) {\n    if (params.response_format?.type !== 'json_schema') {\n        return null;\n    }\n    if (params.response_format?.type === 'json_schema') {\n        if ('$parseRaw' in params.response_format) {\n            const response_format = params.response_format;\n            return response_format.$parseRaw(content);\n        }\n        return JSON.parse(content);\n    }\n    return null;\n}\nfunction parseToolCall(params, toolCall) {\n    const inputTool = params.tools?.find((inputTool) => isChatCompletionFunctionTool(inputTool) && inputTool.function?.name === toolCall.function.name); // TS doesn't narrow based on isChatCompletionTool\n    return {\n        ...toolCall,\n        function: {\n            ...toolCall.function,\n            parsed_arguments: isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCall.function.arguments)\n                : inputTool?.function.strict ? JSON.parse(toolCall.function.arguments)\n                    : null,\n        },\n    };\n}\nexport function shouldParseToolCall(params, toolCall) {\n    if (!params || !('tools' in params) || !params.tools) {\n        return false;\n    }\n    const inputTool = params.tools?.find((inputTool) => isChatCompletionFunctionTool(inputTool) && inputTool.function?.name === toolCall.function.name);\n    return (isChatCompletionFunctionTool(inputTool) &&\n        (isAutoParsableTool(inputTool) || inputTool?.function.strict || false));\n}\nexport function hasAutoParseableInput(params) {\n    if (isAutoParsableResponseFormat(params.response_format)) {\n        return true;\n    }\n    return (params.tools?.some((t) => isAutoParsableTool(t) || (t.type === 'function' && t.function.strict === true)) ?? false);\n}\nexport function assertToolCallsAreChatCompletionFunctionToolCalls(toolCalls) {\n    for (const toolCall of toolCalls || []) {\n        if (toolCall.type !== 'function') {\n            throw new OpenAIError(`Currently only \\`function\\` tool calls are supported; Received \\`${toolCall.type}\\``);\n        }\n    }\n}\nexport function validateInputTools(tools) {\n    for (const tool of tools ?? []) {\n        if (tool.type !== 'function') {\n            throw new OpenAIError(`Currently only \\`function\\` tool types support auto-parsing; Received \\`${tool.type}\\``);\n        }\n        if (tool.function.strict !== true) {\n            throw new OpenAIError(`The \\`${tool.function.name}\\` tool is not marked with \\`strict: true\\`. Only strict function tools can be auto-parsed`);\n        }\n    }\n}\n//# sourceMappingURL=parser.mjs.map","export const isAssistantMessage = (message) => {\n    return message?.role === 'assistant';\n};\nexport const isToolMessage = (message) => {\n    return message?.role === 'tool';\n};\nexport function isPresent(obj) {\n    return obj != null;\n}\n//# sourceMappingURL=chatCompletionUtils.mjs.map","var _EventStream_instances, _EventStream_connectedPromise, _EventStream_resolveConnectedPromise, _EventStream_rejectConnectedPromise, _EventStream_endPromise, _EventStream_resolveEndPromise, _EventStream_rejectEndPromise, _EventStream_listeners, _EventStream_ended, _EventStream_errored, _EventStream_aborted, _EventStream_catchingPromiseCreated, _EventStream_handleError;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { APIUserAbortError, OpenAIError } from \"../error.mjs\";\nexport class EventStream {\n    constructor() {\n        _EventStream_instances.add(this);\n        this.controller = new AbortController();\n        _EventStream_connectedPromise.set(this, void 0);\n        _EventStream_resolveConnectedPromise.set(this, () => { });\n        _EventStream_rejectConnectedPromise.set(this, () => { });\n        _EventStream_endPromise.set(this, void 0);\n        _EventStream_resolveEndPromise.set(this, () => { });\n        _EventStream_rejectEndPromise.set(this, () => { });\n        _EventStream_listeners.set(this, {});\n        _EventStream_ended.set(this, false);\n        _EventStream_errored.set(this, false);\n        _EventStream_aborted.set(this, false);\n        _EventStream_catchingPromiseCreated.set(this, false);\n        __classPrivateFieldSet(this, _EventStream_connectedPromise, new Promise((resolve, reject) => {\n            __classPrivateFieldSet(this, _EventStream_resolveConnectedPromise, resolve, \"f\");\n            __classPrivateFieldSet(this, _EventStream_rejectConnectedPromise, reject, \"f\");\n        }), \"f\");\n        __classPrivateFieldSet(this, _EventStream_endPromise, new Promise((resolve, reject) => {\n            __classPrivateFieldSet(this, _EventStream_resolveEndPromise, resolve, \"f\");\n            __classPrivateFieldSet(this, _EventStream_rejectEndPromise, reject, \"f\");\n        }), \"f\");\n        // Don't let these promises cause unhandled rejection errors.\n        // we will manually cause an unhandled rejection error later\n        // if the user hasn't registered any error listener or called\n        // any promise-returning method.\n        __classPrivateFieldGet(this, _EventStream_connectedPromise, \"f\").catch(() => { });\n        __classPrivateFieldGet(this, _EventStream_endPromise, \"f\").catch(() => { });\n    }\n    _run(executor) {\n        // Unfortunately if we call `executor()` immediately we get runtime errors about\n        // references to `this` before the `super()` constructor call returns.\n        setTimeout(() => {\n            executor().then(() => {\n                this._emitFinal();\n                this._emit('end');\n            }, __classPrivateFieldGet(this, _EventStream_instances, \"m\", _EventStream_handleError).bind(this));\n        }, 0);\n    }\n    _connected() {\n        if (this.ended)\n            return;\n        __classPrivateFieldGet(this, _EventStream_resolveConnectedPromise, \"f\").call(this);\n        this._emit('connect');\n    }\n    get ended() {\n        return __classPrivateFieldGet(this, _EventStream_ended, \"f\");\n    }\n    get errored() {\n        return __classPrivateFieldGet(this, _EventStream_errored, \"f\");\n    }\n    get aborted() {\n        return __classPrivateFieldGet(this, _EventStream_aborted, \"f\");\n    }\n    abort() {\n        this.controller.abort();\n    }\n    /**\n     * Adds the listener function to the end of the listeners array for the event.\n     * No checks are made to see if the listener has already been added. Multiple calls passing\n     * the same combination of event and listener will result in the listener being added, and\n     * called, multiple times.\n     * @returns this ChatCompletionStream, so that calls can be chained\n     */\n    on(event, listener) {\n        const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = []);\n        listeners.push({ listener });\n        return this;\n    }\n    /**\n     * Removes the specified listener from the listener array for the event.\n     * off() will remove, at most, one instance of a listener from the listener array. If any single\n     * listener has been added multiple times to the listener array for the specified event, then\n     * off() must be called multiple times to remove each instance.\n     * @returns this ChatCompletionStream, so that calls can be chained\n     */\n    off(event, listener) {\n        const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event];\n        if (!listeners)\n            return this;\n        const index = listeners.findIndex((l) => l.listener === listener);\n        if (index >= 0)\n            listeners.splice(index, 1);\n        return this;\n    }\n    /**\n     * Adds a one-time listener function for the event. The next time the event is triggered,\n     * this listener is removed and then invoked.\n     * @returns this ChatCompletionStream, so that calls can be chained\n     */\n    once(event, listener) {\n        const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = []);\n        listeners.push({ listener, once: true });\n        return this;\n    }\n    /**\n     * This is similar to `.once()`, but returns a Promise that resolves the next time\n     * the event is triggered, instead of calling a listener callback.\n     * @returns a Promise that resolves the next time given event is triggered,\n     * or rejects if an error is emitted.  (If you request the 'error' event,\n     * returns a promise that resolves with the error).\n     *\n     * Example:\n     *\n     *   const message = await stream.emitted('message') // rejects if the stream errors\n     */\n    emitted(event) {\n        return new Promise((resolve, reject) => {\n            __classPrivateFieldSet(this, _EventStream_catchingPromiseCreated, true, \"f\");\n            if (event !== 'error')\n                this.once('error', reject);\n            this.once(event, resolve);\n        });\n    }\n    async done() {\n        __classPrivateFieldSet(this, _EventStream_catchingPromiseCreated, true, \"f\");\n        await __classPrivateFieldGet(this, _EventStream_endPromise, \"f\");\n    }\n    _emit(event, ...args) {\n        // make sure we don't emit any events after end\n        if (__classPrivateFieldGet(this, _EventStream_ended, \"f\")) {\n            return;\n        }\n        if (event === 'end') {\n            __classPrivateFieldSet(this, _EventStream_ended, true, \"f\");\n            __classPrivateFieldGet(this, _EventStream_resolveEndPromise, \"f\").call(this);\n        }\n        const listeners = __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event];\n        if (listeners) {\n            __classPrivateFieldGet(this, _EventStream_listeners, \"f\")[event] = listeners.filter((l) => !l.once);\n            listeners.forEach(({ listener }) => listener(...args));\n        }\n        if (event === 'abort') {\n            const error = args[0];\n            if (!__classPrivateFieldGet(this, _EventStream_catchingPromiseCreated, \"f\") && !listeners?.length) {\n                Promise.reject(error);\n            }\n            __classPrivateFieldGet(this, _EventStream_rejectConnectedPromise, \"f\").call(this, error);\n            __classPrivateFieldGet(this, _EventStream_rejectEndPromise, \"f\").call(this, error);\n            this._emit('end');\n            return;\n        }\n        if (event === 'error') {\n            // NOTE: _emit('error', error) should only be called from #handleError().\n            const error = args[0];\n            if (!__classPrivateFieldGet(this, _EventStream_catchingPromiseCreated, \"f\") && !listeners?.length) {\n                // Trigger an unhandled rejection if the user hasn't registered any error handlers.\n                // If you are seeing stack traces here, make sure to handle errors via either:\n                // - runner.on('error', () => ...)\n                // - await runner.done()\n                // - await runner.finalChatCompletion()\n                // - etc.\n                Promise.reject(error);\n            }\n            __classPrivateFieldGet(this, _EventStream_rejectConnectedPromise, \"f\").call(this, error);\n            __classPrivateFieldGet(this, _EventStream_rejectEndPromise, \"f\").call(this, error);\n            this._emit('end');\n        }\n    }\n    _emitFinal() { }\n}\n_EventStream_connectedPromise = new WeakMap(), _EventStream_resolveConnectedPromise = new WeakMap(), _EventStream_rejectConnectedPromise = new WeakMap(), _EventStream_endPromise = new WeakMap(), _EventStream_resolveEndPromise = new WeakMap(), _EventStream_rejectEndPromise = new WeakMap(), _EventStream_listeners = new WeakMap(), _EventStream_ended = new WeakMap(), _EventStream_errored = new WeakMap(), _EventStream_aborted = new WeakMap(), _EventStream_catchingPromiseCreated = new WeakMap(), _EventStream_instances = new WeakSet(), _EventStream_handleError = function _EventStream_handleError(error) {\n    __classPrivateFieldSet(this, _EventStream_errored, true, \"f\");\n    if (error instanceof Error && error.name === 'AbortError') {\n        error = new APIUserAbortError();\n    }\n    if (error instanceof APIUserAbortError) {\n        __classPrivateFieldSet(this, _EventStream_aborted, true, \"f\");\n        return this._emit('abort', error);\n    }\n    if (error instanceof OpenAIError) {\n        return this._emit('error', error);\n    }\n    if (error instanceof Error) {\n        const openAIError = new OpenAIError(error.message);\n        // @ts-ignore\n        openAIError.cause = error;\n        return this._emit('error', openAIError);\n    }\n    return this._emit('error', new OpenAIError(String(error)));\n};\n//# sourceMappingURL=EventStream.mjs.map","export function isRunnableFunctionWithParse(fn) {\n    return typeof fn.parse === 'function';\n}\n/**\n * This is helper class for passing a `function` and `parse` where the `function`\n * argument type matches the `parse` return type.\n */\nexport class ParsingToolFunction {\n    constructor(input) {\n        this.type = 'function';\n        this.function = input;\n    }\n}\n//# sourceMappingURL=RunnableFunction.mjs.map","var _AbstractChatCompletionRunner_instances, _AbstractChatCompletionRunner_getFinalContent, _AbstractChatCompletionRunner_getFinalMessage, _AbstractChatCompletionRunner_getFinalFunctionToolCall, _AbstractChatCompletionRunner_getFinalFunctionToolCallResult, _AbstractChatCompletionRunner_calculateTotalUsage, _AbstractChatCompletionRunner_validateParams, _AbstractChatCompletionRunner_stringifyFunctionCallResult;\nimport { __classPrivateFieldGet } from \"../internal/tslib.mjs\";\nimport { OpenAIError } from \"../error.mjs\";\nimport { isAutoParsableTool, parseChatCompletion } from \"../lib/parser.mjs\";\nimport { isAssistantMessage, isToolMessage } from \"./chatCompletionUtils.mjs\";\nimport { EventStream } from \"./EventStream.mjs\";\nimport { isRunnableFunctionWithParse, } from \"./RunnableFunction.mjs\";\nconst DEFAULT_MAX_CHAT_COMPLETIONS = 10;\nexport class AbstractChatCompletionRunner extends EventStream {\n    constructor() {\n        super(...arguments);\n        _AbstractChatCompletionRunner_instances.add(this);\n        this._chatCompletions = [];\n        this.messages = [];\n    }\n    _addChatCompletion(chatCompletion) {\n        this._chatCompletions.push(chatCompletion);\n        this._emit('chatCompletion', chatCompletion);\n        const message = chatCompletion.choices[0]?.message;\n        if (message)\n            this._addMessage(message);\n        return chatCompletion;\n    }\n    _addMessage(message, emit = true) {\n        if (!('content' in message))\n            message.content = null;\n        this.messages.push(message);\n        if (emit) {\n            this._emit('message', message);\n            if (isToolMessage(message) && message.content) {\n                // Note, this assumes that {role: 'tool', content: …} is always the result of a call of tool of type=function.\n                this._emit('functionToolCallResult', message.content);\n            }\n            else if (isAssistantMessage(message) && message.tool_calls) {\n                for (const tool_call of message.tool_calls) {\n                    if (tool_call.type === 'function') {\n                        this._emit('functionToolCall', tool_call.function);\n                    }\n                }\n            }\n        }\n    }\n    /**\n     * @returns a promise that resolves with the final ChatCompletion, or rejects\n     * if an error occurred or the stream ended prematurely without producing a ChatCompletion.\n     */\n    async finalChatCompletion() {\n        await this.done();\n        const completion = this._chatCompletions[this._chatCompletions.length - 1];\n        if (!completion)\n            throw new OpenAIError('stream ended without producing a ChatCompletion');\n        return completion;\n    }\n    /**\n     * @returns a promise that resolves with the content of the final ChatCompletionMessage, or rejects\n     * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n     */\n    async finalContent() {\n        await this.done();\n        return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalContent).call(this);\n    }\n    /**\n     * @returns a promise that resolves with the the final assistant ChatCompletionMessage response,\n     * or rejects if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n     */\n    async finalMessage() {\n        await this.done();\n        return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this);\n    }\n    /**\n     * @returns a promise that resolves with the content of the final FunctionCall, or rejects\n     * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage.\n     */\n    async finalFunctionToolCall() {\n        await this.done();\n        return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionToolCall).call(this);\n    }\n    async finalFunctionToolCallResult() {\n        await this.done();\n        return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionToolCallResult).call(this);\n    }\n    async totalUsage() {\n        await this.done();\n        return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_calculateTotalUsage).call(this);\n    }\n    allChatCompletions() {\n        return [...this._chatCompletions];\n    }\n    _emitFinal() {\n        const completion = this._chatCompletions[this._chatCompletions.length - 1];\n        if (completion)\n            this._emit('finalChatCompletion', completion);\n        const finalMessage = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this);\n        if (finalMessage)\n            this._emit('finalMessage', finalMessage);\n        const finalContent = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalContent).call(this);\n        if (finalContent)\n            this._emit('finalContent', finalContent);\n        const finalFunctionCall = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionToolCall).call(this);\n        if (finalFunctionCall)\n            this._emit('finalFunctionToolCall', finalFunctionCall);\n        const finalFunctionCallResult = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalFunctionToolCallResult).call(this);\n        if (finalFunctionCallResult != null)\n            this._emit('finalFunctionToolCallResult', finalFunctionCallResult);\n        if (this._chatCompletions.some((c) => c.usage)) {\n            this._emit('totalUsage', __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_calculateTotalUsage).call(this));\n        }\n    }\n    async _createChatCompletion(client, params, options) {\n        const signal = options?.signal;\n        if (signal) {\n            if (signal.aborted)\n                this.controller.abort();\n            signal.addEventListener('abort', () => this.controller.abort());\n        }\n        __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_validateParams).call(this, params);\n        const chatCompletion = await client.chat.completions.create({ ...params, stream: false }, { ...options, signal: this.controller.signal });\n        this._connected();\n        return this._addChatCompletion(parseChatCompletion(chatCompletion, params));\n    }\n    async _runChatCompletion(client, params, options) {\n        for (const message of params.messages) {\n            this._addMessage(message, false);\n        }\n        return await this._createChatCompletion(client, params, options);\n    }\n    async _runTools(client, params, options) {\n        const role = 'tool';\n        const { tool_choice = 'auto', stream, ...restParams } = params;\n        const singleFunctionToCall = typeof tool_choice !== 'string' && tool_choice.type === 'function' && tool_choice?.function?.name;\n        const { maxChatCompletions = DEFAULT_MAX_CHAT_COMPLETIONS } = options || {};\n        // TODO(someday): clean this logic up\n        const inputTools = params.tools.map((tool) => {\n            if (isAutoParsableTool(tool)) {\n                if (!tool.$callback) {\n                    throw new OpenAIError('Tool given to `.runTools()` that does not have an associated function');\n                }\n                return {\n                    type: 'function',\n                    function: {\n                        function: tool.$callback,\n                        name: tool.function.name,\n                        description: tool.function.description || '',\n                        parameters: tool.function.parameters,\n                        parse: tool.$parseRaw,\n                        strict: true,\n                    },\n                };\n            }\n            return tool;\n        });\n        const functionsByName = {};\n        for (const f of inputTools) {\n            if (f.type === 'function') {\n                functionsByName[f.function.name || f.function.function.name] = f.function;\n            }\n        }\n        const tools = 'tools' in params ?\n            inputTools.map((t) => t.type === 'function' ?\n                {\n                    type: 'function',\n                    function: {\n                        name: t.function.name || t.function.function.name,\n                        parameters: t.function.parameters,\n                        description: t.function.description,\n                        strict: t.function.strict,\n                    },\n                }\n                : t)\n            : undefined;\n        for (const message of params.messages) {\n            this._addMessage(message, false);\n        }\n        for (let i = 0; i < maxChatCompletions; ++i) {\n            const chatCompletion = await this._createChatCompletion(client, {\n                ...restParams,\n                tool_choice,\n                tools,\n                messages: [...this.messages],\n            }, options);\n            const message = chatCompletion.choices[0]?.message;\n            if (!message) {\n                throw new OpenAIError(`missing message in ChatCompletion response`);\n            }\n            if (!message.tool_calls?.length) {\n                return;\n            }\n            for (const tool_call of message.tool_calls) {\n                if (tool_call.type !== 'function')\n                    continue;\n                const tool_call_id = tool_call.id;\n                const { name, arguments: args } = tool_call.function;\n                const fn = functionsByName[name];\n                if (!fn) {\n                    const content = `Invalid tool_call: ${JSON.stringify(name)}. Available options are: ${Object.keys(functionsByName)\n                        .map((name) => JSON.stringify(name))\n                        .join(', ')}. Please try again`;\n                    this._addMessage({ role, tool_call_id, content });\n                    continue;\n                }\n                else if (singleFunctionToCall && singleFunctionToCall !== name) {\n                    const content = `Invalid tool_call: ${JSON.stringify(name)}. ${JSON.stringify(singleFunctionToCall)} requested. Please try again`;\n                    this._addMessage({ role, tool_call_id, content });\n                    continue;\n                }\n                let parsed;\n                try {\n                    parsed = isRunnableFunctionWithParse(fn) ? await fn.parse(args) : args;\n                }\n                catch (error) {\n                    const content = error instanceof Error ? error.message : String(error);\n                    this._addMessage({ role, tool_call_id, content });\n                    continue;\n                }\n                // @ts-expect-error it can't rule out `never` type.\n                const rawContent = await fn.function(parsed, this);\n                const content = __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_stringifyFunctionCallResult).call(this, rawContent);\n                this._addMessage({ role, tool_call_id, content });\n                if (singleFunctionToCall) {\n                    return;\n                }\n            }\n        }\n        return;\n    }\n}\n_AbstractChatCompletionRunner_instances = new WeakSet(), _AbstractChatCompletionRunner_getFinalContent = function _AbstractChatCompletionRunner_getFinalContent() {\n    return __classPrivateFieldGet(this, _AbstractChatCompletionRunner_instances, \"m\", _AbstractChatCompletionRunner_getFinalMessage).call(this).content ?? null;\n}, _AbstractChatCompletionRunner_getFinalMessage = function _AbstractChatCompletionRunner_getFinalMessage() {\n    let i = this.messages.length;\n    while (i-- > 0) {\n        const message = this.messages[i];\n        if (isAssistantMessage(message)) {\n            // TODO: support audio here\n            const ret = {\n                ...message,\n                content: message.content ?? null,\n                refusal: message.refusal ?? null,\n            };\n            return ret;\n        }\n    }\n    throw new OpenAIError('stream ended without producing a ChatCompletionMessage with role=assistant');\n}, _AbstractChatCompletionRunner_getFinalFunctionToolCall = function _AbstractChatCompletionRunner_getFinalFunctionToolCall() {\n    for (let i = this.messages.length - 1; i >= 0; i--) {\n        const message = this.messages[i];\n        if (isAssistantMessage(message) && message?.tool_calls?.length) {\n            return message.tool_calls.filter((x) => x.type === 'function').at(-1)?.function;\n        }\n    }\n    return;\n}, _AbstractChatCompletionRunner_getFinalFunctionToolCallResult = function _AbstractChatCompletionRunner_getFinalFunctionToolCallResult() {\n    for (let i = this.messages.length - 1; i >= 0; i--) {\n        const message = this.messages[i];\n        if (isToolMessage(message) &&\n            message.content != null &&\n            typeof message.content === 'string' &&\n            this.messages.some((x) => x.role === 'assistant' &&\n                x.tool_calls?.some((y) => y.type === 'function' && y.id === message.tool_call_id))) {\n            return message.content;\n        }\n    }\n    return;\n}, _AbstractChatCompletionRunner_calculateTotalUsage = function _AbstractChatCompletionRunner_calculateTotalUsage() {\n    const total = {\n        completion_tokens: 0,\n        prompt_tokens: 0,\n        total_tokens: 0,\n    };\n    for (const { usage } of this._chatCompletions) {\n        if (usage) {\n            total.completion_tokens += usage.completion_tokens;\n            total.prompt_tokens += usage.prompt_tokens;\n            total.total_tokens += usage.total_tokens;\n        }\n    }\n    return total;\n}, _AbstractChatCompletionRunner_validateParams = function _AbstractChatCompletionRunner_validateParams(params) {\n    if (params.n != null && params.n > 1) {\n        throw new OpenAIError('ChatCompletion convenience helpers only support n=1 at this time. To use n>1, please use chat.completions.create() directly.');\n    }\n}, _AbstractChatCompletionRunner_stringifyFunctionCallResult = function _AbstractChatCompletionRunner_stringifyFunctionCallResult(rawContent) {\n    return (typeof rawContent === 'string' ? rawContent\n        : rawContent === undefined ? 'undefined'\n            : JSON.stringify(rawContent));\n};\n//# sourceMappingURL=AbstractChatCompletionRunner.mjs.map","import { AbstractChatCompletionRunner, } from \"./AbstractChatCompletionRunner.mjs\";\nimport { isAssistantMessage } from \"./chatCompletionUtils.mjs\";\nexport class ChatCompletionRunner extends AbstractChatCompletionRunner {\n    static runTools(client, params, options) {\n        const runner = new ChatCompletionRunner();\n        const opts = {\n            ...options,\n            headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },\n        };\n        runner._run(() => runner._runTools(client, params, opts));\n        return runner;\n    }\n    _addMessage(message, emit = true) {\n        super._addMessage(message, emit);\n        if (isAssistantMessage(message) && message.content) {\n            this._emit('content', message.content);\n        }\n    }\n}\n//# sourceMappingURL=ChatCompletionRunner.mjs.map","const STR = 0b000000001;\nconst NUM = 0b000000010;\nconst ARR = 0b000000100;\nconst OBJ = 0b000001000;\nconst NULL = 0b000010000;\nconst BOOL = 0b000100000;\nconst NAN = 0b001000000;\nconst INFINITY = 0b010000000;\nconst MINUS_INFINITY = 0b100000000;\nconst INF = INFINITY | MINUS_INFINITY;\nconst SPECIAL = NULL | BOOL | INF | NAN;\nconst ATOM = STR | NUM | SPECIAL;\nconst COLLECTION = ARR | OBJ;\nconst ALL = ATOM | COLLECTION;\nconst Allow = {\n    STR,\n    NUM,\n    ARR,\n    OBJ,\n    NULL,\n    BOOL,\n    NAN,\n    INFINITY,\n    MINUS_INFINITY,\n    INF,\n    SPECIAL,\n    ATOM,\n    COLLECTION,\n    ALL,\n};\n// The JSON string segment was unable to be parsed completely\nclass PartialJSON extends Error {\n}\nclass MalformedJSON extends Error {\n}\n/**\n * Parse incomplete JSON\n * @param {string} jsonString Partial JSON to be parsed\n * @param {number} allowPartial Specify what types are allowed to be partial, see {@link Allow} for details\n * @returns The parsed JSON\n * @throws {PartialJSON} If the JSON is incomplete (related to the `allow` parameter)\n * @throws {MalformedJSON} If the JSON is malformed\n */\nfunction parseJSON(jsonString, allowPartial = Allow.ALL) {\n    if (typeof jsonString !== 'string') {\n        throw new TypeError(`expecting str, got ${typeof jsonString}`);\n    }\n    if (!jsonString.trim()) {\n        throw new Error(`${jsonString} is empty`);\n    }\n    return _parseJSON(jsonString.trim(), allowPartial);\n}\nconst _parseJSON = (jsonString, allow) => {\n    const length = jsonString.length;\n    let index = 0;\n    const markPartialJSON = (msg) => {\n        throw new PartialJSON(`${msg} at position ${index}`);\n    };\n    const throwMalformedError = (msg) => {\n        throw new MalformedJSON(`${msg} at position ${index}`);\n    };\n    const parseAny = () => {\n        skipBlank();\n        if (index >= length)\n            markPartialJSON('Unexpected end of input');\n        if (jsonString[index] === '\"')\n            return parseStr();\n        if (jsonString[index] === '{')\n            return parseObj();\n        if (jsonString[index] === '[')\n            return parseArr();\n        if (jsonString.substring(index, index + 4) === 'null' ||\n            (Allow.NULL & allow && length - index < 4 && 'null'.startsWith(jsonString.substring(index)))) {\n            index += 4;\n            return null;\n        }\n        if (jsonString.substring(index, index + 4) === 'true' ||\n            (Allow.BOOL & allow && length - index < 4 && 'true'.startsWith(jsonString.substring(index)))) {\n            index += 4;\n            return true;\n        }\n        if (jsonString.substring(index, index + 5) === 'false' ||\n            (Allow.BOOL & allow && length - index < 5 && 'false'.startsWith(jsonString.substring(index)))) {\n            index += 5;\n            return false;\n        }\n        if (jsonString.substring(index, index + 8) === 'Infinity' ||\n            (Allow.INFINITY & allow && length - index < 8 && 'Infinity'.startsWith(jsonString.substring(index)))) {\n            index += 8;\n            return Infinity;\n        }\n        if (jsonString.substring(index, index + 9) === '-Infinity' ||\n            (Allow.MINUS_INFINITY & allow &&\n                1 < length - index &&\n                length - index < 9 &&\n                '-Infinity'.startsWith(jsonString.substring(index)))) {\n            index += 9;\n            return -Infinity;\n        }\n        if (jsonString.substring(index, index + 3) === 'NaN' ||\n            (Allow.NAN & allow && length - index < 3 && 'NaN'.startsWith(jsonString.substring(index)))) {\n            index += 3;\n            return NaN;\n        }\n        return parseNum();\n    };\n    const parseStr = () => {\n        const start = index;\n        let escape = false;\n        index++; // skip initial quote\n        while (index < length && (jsonString[index] !== '\"' || (escape && jsonString[index - 1] === '\\\\'))) {\n            escape = jsonString[index] === '\\\\' ? !escape : false;\n            index++;\n        }\n        if (jsonString.charAt(index) == '\"') {\n            try {\n                return JSON.parse(jsonString.substring(start, ++index - Number(escape)));\n            }\n            catch (e) {\n                throwMalformedError(String(e));\n            }\n        }\n        else if (Allow.STR & allow) {\n            try {\n                return JSON.parse(jsonString.substring(start, index - Number(escape)) + '\"');\n            }\n            catch (e) {\n                // SyntaxError: Invalid escape sequence\n                return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf('\\\\')) + '\"');\n            }\n        }\n        markPartialJSON('Unterminated string literal');\n    };\n    const parseObj = () => {\n        index++; // skip initial brace\n        skipBlank();\n        const obj = {};\n        try {\n            while (jsonString[index] !== '}') {\n                skipBlank();\n                if (index >= length && Allow.OBJ & allow)\n                    return obj;\n                const key = parseStr();\n                skipBlank();\n                index++; // skip colon\n                try {\n                    const value = parseAny();\n                    Object.defineProperty(obj, key, { value, writable: true, enumerable: true, configurable: true });\n                }\n                catch (e) {\n                    if (Allow.OBJ & allow)\n                        return obj;\n                    else\n                        throw e;\n                }\n                skipBlank();\n                if (jsonString[index] === ',')\n                    index++; // skip comma\n            }\n        }\n        catch (e) {\n            if (Allow.OBJ & allow)\n                return obj;\n            else\n                markPartialJSON(\"Expected '}' at end of object\");\n        }\n        index++; // skip final brace\n        return obj;\n    };\n    const parseArr = () => {\n        index++; // skip initial bracket\n        const arr = [];\n        try {\n            while (jsonString[index] !== ']') {\n                arr.push(parseAny());\n                skipBlank();\n                if (jsonString[index] === ',') {\n                    index++; // skip comma\n                }\n            }\n        }\n        catch (e) {\n            if (Allow.ARR & allow) {\n                return arr;\n            }\n            markPartialJSON(\"Expected ']' at end of array\");\n        }\n        index++; // skip final bracket\n        return arr;\n    };\n    const parseNum = () => {\n        if (index === 0) {\n            if (jsonString === '-' && Allow.NUM & allow)\n                markPartialJSON(\"Not sure what '-' is\");\n            try {\n                return JSON.parse(jsonString);\n            }\n            catch (e) {\n                if (Allow.NUM & allow) {\n                    try {\n                        if ('.' === jsonString[jsonString.length - 1])\n                            return JSON.parse(jsonString.substring(0, jsonString.lastIndexOf('.')));\n                        return JSON.parse(jsonString.substring(0, jsonString.lastIndexOf('e')));\n                    }\n                    catch (e) { }\n                }\n                throwMalformedError(String(e));\n            }\n        }\n        const start = index;\n        if (jsonString[index] === '-')\n            index++;\n        while (jsonString[index] && !',]}'.includes(jsonString[index]))\n            index++;\n        if (index == length && !(Allow.NUM & allow))\n            markPartialJSON('Unterminated number literal');\n        try {\n            return JSON.parse(jsonString.substring(start, index));\n        }\n        catch (e) {\n            if (jsonString.substring(start, index) === '-' && Allow.NUM & allow)\n                markPartialJSON(\"Not sure what '-' is\");\n            try {\n                return JSON.parse(jsonString.substring(start, jsonString.lastIndexOf('e')));\n            }\n            catch (e) {\n                throwMalformedError(String(e));\n            }\n        }\n    };\n    const skipBlank = () => {\n        while (index < length && ' \\n\\r\\t'.includes(jsonString[index])) {\n            index++;\n        }\n    };\n    return parseAny();\n};\n// using this function with malformed JSON is undefined behavior\nconst partialParse = (input) => parseJSON(input, Allow.ALL ^ Allow.NUM);\nexport { partialParse, PartialJSON, MalformedJSON };\n//# sourceMappingURL=parser.mjs.map","var _ChatCompletionStream_instances, _ChatCompletionStream_params, _ChatCompletionStream_choiceEventStates, _ChatCompletionStream_currentChatCompletionSnapshot, _ChatCompletionStream_beginRequest, _ChatCompletionStream_getChoiceEventState, _ChatCompletionStream_addChunk, _ChatCompletionStream_emitToolCallDoneEvent, _ChatCompletionStream_emitContentDoneEvents, _ChatCompletionStream_endRequest, _ChatCompletionStream_getAutoParseableResponseFormat, _ChatCompletionStream_accumulateChatCompletion;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { partialParse } from \"../_vendor/partial-json-parser/parser.mjs\";\nimport { APIUserAbortError, ContentFilterFinishReasonError, LengthFinishReasonError, OpenAIError, } from \"../error.mjs\";\nimport { hasAutoParseableInput, isAutoParsableResponseFormat, isAutoParsableTool, isChatCompletionFunctionTool, maybeParseChatCompletion, shouldParseToolCall, } from \"../lib/parser.mjs\";\nimport { Stream } from \"../streaming.mjs\";\nimport { AbstractChatCompletionRunner, } from \"./AbstractChatCompletionRunner.mjs\";\nexport class ChatCompletionStream extends AbstractChatCompletionRunner {\n    constructor(params) {\n        super();\n        _ChatCompletionStream_instances.add(this);\n        _ChatCompletionStream_params.set(this, void 0);\n        _ChatCompletionStream_choiceEventStates.set(this, void 0);\n        _ChatCompletionStream_currentChatCompletionSnapshot.set(this, void 0);\n        __classPrivateFieldSet(this, _ChatCompletionStream_params, params, \"f\");\n        __classPrivateFieldSet(this, _ChatCompletionStream_choiceEventStates, [], \"f\");\n    }\n    get currentChatCompletionSnapshot() {\n        return __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n    }\n    /**\n     * Intended for use on the frontend, consuming a stream produced with\n     * `.toReadableStream()` on the backend.\n     *\n     * Note that messages sent to the model do not appear in `.on('message')`\n     * in this context.\n     */\n    static fromReadableStream(stream) {\n        const runner = new ChatCompletionStream(null);\n        runner._run(() => runner._fromReadableStream(stream));\n        return runner;\n    }\n    static createChatCompletion(client, params, options) {\n        const runner = new ChatCompletionStream(params);\n        runner._run(() => runner._runChatCompletion(client, { ...params, stream: true }, { ...options, headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' } }));\n        return runner;\n    }\n    async _createChatCompletion(client, params, options) {\n        super._createChatCompletion;\n        const signal = options?.signal;\n        if (signal) {\n            if (signal.aborted)\n                this.controller.abort();\n            signal.addEventListener('abort', () => this.controller.abort());\n        }\n        __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_beginRequest).call(this);\n        const stream = await client.chat.completions.create({ ...params, stream: true }, { ...options, signal: this.controller.signal });\n        this._connected();\n        for await (const chunk of stream) {\n            __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_addChunk).call(this, chunk);\n        }\n        if (stream.controller.signal?.aborted) {\n            throw new APIUserAbortError();\n        }\n        return this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n    }\n    async _fromReadableStream(readableStream, options) {\n        const signal = options?.signal;\n        if (signal) {\n            if (signal.aborted)\n                this.controller.abort();\n            signal.addEventListener('abort', () => this.controller.abort());\n        }\n        __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_beginRequest).call(this);\n        this._connected();\n        const stream = Stream.fromReadableStream(readableStream, this.controller);\n        let chatId;\n        for await (const chunk of stream) {\n            if (chatId && chatId !== chunk.id) {\n                // A new request has been made.\n                this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n            }\n            __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_addChunk).call(this, chunk);\n            chatId = chunk.id;\n        }\n        if (stream.controller.signal?.aborted) {\n            throw new APIUserAbortError();\n        }\n        return this._addChatCompletion(__classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_endRequest).call(this));\n    }\n    [(_ChatCompletionStream_params = new WeakMap(), _ChatCompletionStream_choiceEventStates = new WeakMap(), _ChatCompletionStream_currentChatCompletionSnapshot = new WeakMap(), _ChatCompletionStream_instances = new WeakSet(), _ChatCompletionStream_beginRequest = function _ChatCompletionStream_beginRequest() {\n        if (this.ended)\n            return;\n        __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, undefined, \"f\");\n    }, _ChatCompletionStream_getChoiceEventState = function _ChatCompletionStream_getChoiceEventState(choice) {\n        let state = __classPrivateFieldGet(this, _ChatCompletionStream_choiceEventStates, \"f\")[choice.index];\n        if (state) {\n            return state;\n        }\n        state = {\n            content_done: false,\n            refusal_done: false,\n            logprobs_content_done: false,\n            logprobs_refusal_done: false,\n            done_tool_calls: new Set(),\n            current_tool_call_index: null,\n        };\n        __classPrivateFieldGet(this, _ChatCompletionStream_choiceEventStates, \"f\")[choice.index] = state;\n        return state;\n    }, _ChatCompletionStream_addChunk = function _ChatCompletionStream_addChunk(chunk) {\n        if (this.ended)\n            return;\n        const completion = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_accumulateChatCompletion).call(this, chunk);\n        this._emit('chunk', chunk, completion);\n        for (const choice of chunk.choices) {\n            const choiceSnapshot = completion.choices[choice.index];\n            if (choice.delta.content != null &&\n                choiceSnapshot.message?.role === 'assistant' &&\n                choiceSnapshot.message?.content) {\n                this._emit('content', choice.delta.content, choiceSnapshot.message.content);\n                this._emit('content.delta', {\n                    delta: choice.delta.content,\n                    snapshot: choiceSnapshot.message.content,\n                    parsed: choiceSnapshot.message.parsed,\n                });\n            }\n            if (choice.delta.refusal != null &&\n                choiceSnapshot.message?.role === 'assistant' &&\n                choiceSnapshot.message?.refusal) {\n                this._emit('refusal.delta', {\n                    delta: choice.delta.refusal,\n                    snapshot: choiceSnapshot.message.refusal,\n                });\n            }\n            if (choice.logprobs?.content != null && choiceSnapshot.message?.role === 'assistant') {\n                this._emit('logprobs.content.delta', {\n                    content: choice.logprobs?.content,\n                    snapshot: choiceSnapshot.logprobs?.content ?? [],\n                });\n            }\n            if (choice.logprobs?.refusal != null && choiceSnapshot.message?.role === 'assistant') {\n                this._emit('logprobs.refusal.delta', {\n                    refusal: choice.logprobs?.refusal,\n                    snapshot: choiceSnapshot.logprobs?.refusal ?? [],\n                });\n            }\n            const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n            if (choiceSnapshot.finish_reason) {\n                __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitContentDoneEvents).call(this, choiceSnapshot);\n                if (state.current_tool_call_index != null) {\n                    __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitToolCallDoneEvent).call(this, choiceSnapshot, state.current_tool_call_index);\n                }\n            }\n            for (const toolCall of choice.delta.tool_calls ?? []) {\n                if (state.current_tool_call_index !== toolCall.index) {\n                    __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitContentDoneEvents).call(this, choiceSnapshot);\n                    // new tool call started, the previous one is done\n                    if (state.current_tool_call_index != null) {\n                        __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_emitToolCallDoneEvent).call(this, choiceSnapshot, state.current_tool_call_index);\n                    }\n                }\n                state.current_tool_call_index = toolCall.index;\n            }\n            for (const toolCallDelta of choice.delta.tool_calls ?? []) {\n                const toolCallSnapshot = choiceSnapshot.message.tool_calls?.[toolCallDelta.index];\n                if (!toolCallSnapshot?.type) {\n                    continue;\n                }\n                if (toolCallSnapshot?.type === 'function') {\n                    this._emit('tool_calls.function.arguments.delta', {\n                        name: toolCallSnapshot.function?.name,\n                        index: toolCallDelta.index,\n                        arguments: toolCallSnapshot.function.arguments,\n                        parsed_arguments: toolCallSnapshot.function.parsed_arguments,\n                        arguments_delta: toolCallDelta.function?.arguments ?? '',\n                    });\n                }\n                else {\n                    assertNever(toolCallSnapshot?.type);\n                }\n            }\n        }\n    }, _ChatCompletionStream_emitToolCallDoneEvent = function _ChatCompletionStream_emitToolCallDoneEvent(choiceSnapshot, toolCallIndex) {\n        const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n        if (state.done_tool_calls.has(toolCallIndex)) {\n            // we've already fired the done event\n            return;\n        }\n        const toolCallSnapshot = choiceSnapshot.message.tool_calls?.[toolCallIndex];\n        if (!toolCallSnapshot) {\n            throw new Error('no tool call snapshot');\n        }\n        if (!toolCallSnapshot.type) {\n            throw new Error('tool call snapshot missing `type`');\n        }\n        if (toolCallSnapshot.type === 'function') {\n            const inputTool = __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\")?.tools?.find((tool) => isChatCompletionFunctionTool(tool) && tool.function.name === toolCallSnapshot.function.name); // TS doesn't narrow based on isChatCompletionTool\n            this._emit('tool_calls.function.arguments.done', {\n                name: toolCallSnapshot.function.name,\n                index: toolCallIndex,\n                arguments: toolCallSnapshot.function.arguments,\n                parsed_arguments: isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCallSnapshot.function.arguments)\n                    : inputTool?.function.strict ? JSON.parse(toolCallSnapshot.function.arguments)\n                        : null,\n            });\n        }\n        else {\n            assertNever(toolCallSnapshot.type);\n        }\n    }, _ChatCompletionStream_emitContentDoneEvents = function _ChatCompletionStream_emitContentDoneEvents(choiceSnapshot) {\n        const state = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getChoiceEventState).call(this, choiceSnapshot);\n        if (choiceSnapshot.message.content && !state.content_done) {\n            state.content_done = true;\n            const responseFormat = __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getAutoParseableResponseFormat).call(this);\n            this._emit('content.done', {\n                content: choiceSnapshot.message.content,\n                parsed: responseFormat ? responseFormat.$parseRaw(choiceSnapshot.message.content) : null,\n            });\n        }\n        if (choiceSnapshot.message.refusal && !state.refusal_done) {\n            state.refusal_done = true;\n            this._emit('refusal.done', { refusal: choiceSnapshot.message.refusal });\n        }\n        if (choiceSnapshot.logprobs?.content && !state.logprobs_content_done) {\n            state.logprobs_content_done = true;\n            this._emit('logprobs.content.done', { content: choiceSnapshot.logprobs.content });\n        }\n        if (choiceSnapshot.logprobs?.refusal && !state.logprobs_refusal_done) {\n            state.logprobs_refusal_done = true;\n            this._emit('logprobs.refusal.done', { refusal: choiceSnapshot.logprobs.refusal });\n        }\n    }, _ChatCompletionStream_endRequest = function _ChatCompletionStream_endRequest() {\n        if (this.ended) {\n            throw new OpenAIError(`stream has ended, this shouldn't happen`);\n        }\n        const snapshot = __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n        if (!snapshot) {\n            throw new OpenAIError(`request ended without sending any chunks`);\n        }\n        __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, undefined, \"f\");\n        __classPrivateFieldSet(this, _ChatCompletionStream_choiceEventStates, [], \"f\");\n        return finalizeChatCompletion(snapshot, __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"));\n    }, _ChatCompletionStream_getAutoParseableResponseFormat = function _ChatCompletionStream_getAutoParseableResponseFormat() {\n        const responseFormat = __classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\")?.response_format;\n        if (isAutoParsableResponseFormat(responseFormat)) {\n            return responseFormat;\n        }\n        return null;\n    }, _ChatCompletionStream_accumulateChatCompletion = function _ChatCompletionStream_accumulateChatCompletion(chunk) {\n        var _a, _b, _c, _d;\n        let snapshot = __classPrivateFieldGet(this, _ChatCompletionStream_currentChatCompletionSnapshot, \"f\");\n        const { choices, ...rest } = chunk;\n        if (!snapshot) {\n            snapshot = __classPrivateFieldSet(this, _ChatCompletionStream_currentChatCompletionSnapshot, {\n                ...rest,\n                choices: [],\n            }, \"f\");\n        }\n        else {\n            Object.assign(snapshot, rest);\n        }\n        for (const { delta, finish_reason, index, logprobs = null, ...other } of chunk.choices) {\n            let choice = snapshot.choices[index];\n            if (!choice) {\n                choice = snapshot.choices[index] = { finish_reason, index, message: {}, logprobs, ...other };\n            }\n            if (logprobs) {\n                if (!choice.logprobs) {\n                    choice.logprobs = Object.assign({}, logprobs);\n                }\n                else {\n                    const { content, refusal, ...rest } = logprobs;\n                    assertIsEmpty(rest);\n                    Object.assign(choice.logprobs, rest);\n                    if (content) {\n                        (_a = choice.logprobs).content ?? (_a.content = []);\n                        choice.logprobs.content.push(...content);\n                    }\n                    if (refusal) {\n                        (_b = choice.logprobs).refusal ?? (_b.refusal = []);\n                        choice.logprobs.refusal.push(...refusal);\n                    }\n                }\n            }\n            if (finish_reason) {\n                choice.finish_reason = finish_reason;\n                if (__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\") && hasAutoParseableInput(__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"))) {\n                    if (finish_reason === 'length') {\n                        throw new LengthFinishReasonError();\n                    }\n                    if (finish_reason === 'content_filter') {\n                        throw new ContentFilterFinishReasonError();\n                    }\n                }\n            }\n            Object.assign(choice, other);\n            if (!delta)\n                continue; // Shouldn't happen; just in case.\n            const { content, refusal, function_call, role, tool_calls, ...rest } = delta;\n            assertIsEmpty(rest);\n            Object.assign(choice.message, rest);\n            if (refusal) {\n                choice.message.refusal = (choice.message.refusal || '') + refusal;\n            }\n            if (role)\n                choice.message.role = role;\n            if (function_call) {\n                if (!choice.message.function_call) {\n                    choice.message.function_call = function_call;\n                }\n                else {\n                    if (function_call.name)\n                        choice.message.function_call.name = function_call.name;\n                    if (function_call.arguments) {\n                        (_c = choice.message.function_call).arguments ?? (_c.arguments = '');\n                        choice.message.function_call.arguments += function_call.arguments;\n                    }\n                }\n            }\n            if (content) {\n                choice.message.content = (choice.message.content || '') + content;\n                if (!choice.message.refusal && __classPrivateFieldGet(this, _ChatCompletionStream_instances, \"m\", _ChatCompletionStream_getAutoParseableResponseFormat).call(this)) {\n                    choice.message.parsed = partialParse(choice.message.content);\n                }\n            }\n            if (tool_calls) {\n                if (!choice.message.tool_calls)\n                    choice.message.tool_calls = [];\n                for (const { index, id, type, function: fn, ...rest } of tool_calls) {\n                    const tool_call = ((_d = choice.message.tool_calls)[index] ?? (_d[index] = {}));\n                    Object.assign(tool_call, rest);\n                    if (id)\n                        tool_call.id = id;\n                    if (type)\n                        tool_call.type = type;\n                    if (fn)\n                        tool_call.function ?? (tool_call.function = { name: fn.name ?? '', arguments: '' });\n                    if (fn?.name)\n                        tool_call.function.name = fn.name;\n                    if (fn?.arguments) {\n                        tool_call.function.arguments += fn.arguments;\n                        if (shouldParseToolCall(__classPrivateFieldGet(this, _ChatCompletionStream_params, \"f\"), tool_call)) {\n                            tool_call.function.parsed_arguments = partialParse(tool_call.function.arguments);\n                        }\n                    }\n                }\n            }\n        }\n        return snapshot;\n    }, Symbol.asyncIterator)]() {\n        const pushQueue = [];\n        const readQueue = [];\n        let done = false;\n        this.on('chunk', (chunk) => {\n            const reader = readQueue.shift();\n            if (reader) {\n                reader.resolve(chunk);\n            }\n            else {\n                pushQueue.push(chunk);\n            }\n        });\n        this.on('end', () => {\n            done = true;\n            for (const reader of readQueue) {\n                reader.resolve(undefined);\n            }\n            readQueue.length = 0;\n        });\n        this.on('abort', (err) => {\n            done = true;\n            for (const reader of readQueue) {\n                reader.reject(err);\n            }\n            readQueue.length = 0;\n        });\n        this.on('error', (err) => {\n            done = true;\n            for (const reader of readQueue) {\n                reader.reject(err);\n            }\n            readQueue.length = 0;\n        });\n        return {\n            next: async () => {\n                if (!pushQueue.length) {\n                    if (done) {\n                        return { value: undefined, done: true };\n                    }\n                    return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));\n                }\n                const chunk = pushQueue.shift();\n                return { value: chunk, done: false };\n            },\n            return: async () => {\n                this.abort();\n                return { value: undefined, done: true };\n            },\n        };\n    }\n    toReadableStream() {\n        const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n        return stream.toReadableStream();\n    }\n}\nfunction finalizeChatCompletion(snapshot, params) {\n    const { id, choices, created, model, system_fingerprint, ...rest } = snapshot;\n    const completion = {\n        ...rest,\n        id,\n        choices: choices.map(({ message, finish_reason, index, logprobs, ...choiceRest }) => {\n            if (!finish_reason) {\n                throw new OpenAIError(`missing finish_reason for choice ${index}`);\n            }\n            const { content = null, function_call, tool_calls, ...messageRest } = message;\n            const role = message.role; // this is what we expect; in theory it could be different which would make our types a slight lie but would be fine.\n            if (!role) {\n                throw new OpenAIError(`missing role for choice ${index}`);\n            }\n            if (function_call) {\n                const { arguments: args, name } = function_call;\n                if (args == null) {\n                    throw new OpenAIError(`missing function_call.arguments for choice ${index}`);\n                }\n                if (!name) {\n                    throw new OpenAIError(`missing function_call.name for choice ${index}`);\n                }\n                return {\n                    ...choiceRest,\n                    message: {\n                        content,\n                        function_call: { arguments: args, name },\n                        role,\n                        refusal: message.refusal ?? null,\n                    },\n                    finish_reason,\n                    index,\n                    logprobs,\n                };\n            }\n            if (tool_calls) {\n                return {\n                    ...choiceRest,\n                    index,\n                    finish_reason,\n                    logprobs,\n                    message: {\n                        ...messageRest,\n                        role,\n                        content,\n                        refusal: message.refusal ?? null,\n                        tool_calls: tool_calls.map((tool_call, i) => {\n                            const { function: fn, type, id, ...toolRest } = tool_call;\n                            const { arguments: args, name, ...fnRest } = fn || {};\n                            if (id == null) {\n                                throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].id\\n${str(snapshot)}`);\n                            }\n                            if (type == null) {\n                                throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].type\\n${str(snapshot)}`);\n                            }\n                            if (name == null) {\n                                throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].function.name\\n${str(snapshot)}`);\n                            }\n                            if (args == null) {\n                                throw new OpenAIError(`missing choices[${index}].tool_calls[${i}].function.arguments\\n${str(snapshot)}`);\n                            }\n                            return { ...toolRest, id, type, function: { ...fnRest, name, arguments: args } };\n                        }),\n                    },\n                };\n            }\n            return {\n                ...choiceRest,\n                message: { ...messageRest, content, role, refusal: message.refusal ?? null },\n                finish_reason,\n                index,\n                logprobs,\n            };\n        }),\n        created,\n        model,\n        object: 'chat.completion',\n        ...(system_fingerprint ? { system_fingerprint } : {}),\n    };\n    return maybeParseChatCompletion(completion, params);\n}\nfunction str(x) {\n    return JSON.stringify(x);\n}\n/**\n * Ensures the given argument is an empty object, useful for\n * asserting that all known properties on an object have been\n * destructured.\n */\nfunction assertIsEmpty(obj) {\n    return;\n}\nfunction assertNever(_x) { }\n//# sourceMappingURL=ChatCompletionStream.mjs.map","import { ChatCompletionStream } from \"./ChatCompletionStream.mjs\";\nexport class ChatCompletionStreamingRunner extends ChatCompletionStream {\n    static fromReadableStream(stream) {\n        const runner = new ChatCompletionStreamingRunner(null);\n        runner._run(() => runner._fromReadableStream(stream));\n        return runner;\n    }\n    static runTools(client, params, options) {\n        const runner = new ChatCompletionStreamingRunner(\n        // @ts-expect-error TODO these types are incompatible\n        params);\n        const opts = {\n            ...options,\n            headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'runTools' },\n        };\n        runner._run(() => runner._runTools(client, params, opts));\n        return runner;\n    }\n}\n//# sourceMappingURL=ChatCompletionStreamingRunner.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as MessagesAPI from \"./messages.mjs\";\nimport { Messages } from \"./messages.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nimport { ChatCompletionRunner } from \"../../../lib/ChatCompletionRunner.mjs\";\nimport { ChatCompletionStreamingRunner } from \"../../../lib/ChatCompletionStreamingRunner.mjs\";\nimport { ChatCompletionStream } from \"../../../lib/ChatCompletionStream.mjs\";\nimport { parseChatCompletion, validateInputTools } from \"../../../lib/parser.mjs\";\nexport class Completions extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.messages = new MessagesAPI.Messages(this._client);\n    }\n    create(body, options) {\n        return this._client.post('/chat/completions', { body, ...options, stream: body.stream ?? false });\n    }\n    /**\n     * Get a stored chat completion. Only Chat Completions that have been created with\n     * the `store` parameter set to `true` will be returned.\n     *\n     * @example\n     * ```ts\n     * const chatCompletion =\n     *   await client.chat.completions.retrieve('completion_id');\n     * ```\n     */\n    retrieve(completionID, options) {\n        return this._client.get(path `/chat/completions/${completionID}`, options);\n    }\n    /**\n     * Modify a stored chat completion. Only Chat Completions that have been created\n     * with the `store` parameter set to `true` can be modified. Currently, the only\n     * supported modification is to update the `metadata` field.\n     *\n     * @example\n     * ```ts\n     * const chatCompletion = await client.chat.completions.update(\n     *   'completion_id',\n     *   { metadata: { foo: 'string' } },\n     * );\n     * ```\n     */\n    update(completionID, body, options) {\n        return this._client.post(path `/chat/completions/${completionID}`, { body, ...options });\n    }\n    /**\n     * List stored Chat Completions. Only Chat Completions that have been stored with\n     * the `store` parameter set to `true` will be returned.\n     *\n     * @example\n     * ```ts\n     * // Automatically fetches more pages as needed.\n     * for await (const chatCompletion of client.chat.completions.list()) {\n     *   // ...\n     * }\n     * ```\n     */\n    list(query = {}, options) {\n        return this._client.getAPIList('/chat/completions', (CursorPage), { query, ...options });\n    }\n    /**\n     * Delete a stored chat completion. Only Chat Completions that have been created\n     * with the `store` parameter set to `true` can be deleted.\n     *\n     * @example\n     * ```ts\n     * const chatCompletionDeleted =\n     *   await client.chat.completions.delete('completion_id');\n     * ```\n     */\n    delete(completionID, options) {\n        return this._client.delete(path `/chat/completions/${completionID}`, options);\n    }\n    parse(body, options) {\n        validateInputTools(body.tools);\n        return this._client.chat.completions\n            .create(body, {\n            ...options,\n            headers: {\n                ...options?.headers,\n                'X-Stainless-Helper-Method': 'chat.completions.parse',\n            },\n        })\n            ._thenUnwrap((completion) => parseChatCompletion(completion, body));\n    }\n    runTools(body, options) {\n        if (body.stream) {\n            return ChatCompletionStreamingRunner.runTools(this._client, body, options);\n        }\n        return ChatCompletionRunner.runTools(this._client, body, options);\n    }\n    /**\n     * Creates a chat completion stream\n     */\n    stream(body, options) {\n        return ChatCompletionStream.createChatCompletion(this._client, body, options);\n    }\n}\nexport { ChatCompletionStreamingRunner } from \"../../../lib/ChatCompletionStreamingRunner.mjs\";\nexport { ParsingToolFunction, } from \"../../../lib/RunnableFunction.mjs\";\nexport { ChatCompletionStream } from \"../../../lib/ChatCompletionStream.mjs\";\nexport { ChatCompletionRunner } from \"../../../lib/ChatCompletionRunner.mjs\";\nCompletions.Messages = Messages;\n//# sourceMappingURL=completions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as CompletionsAPI from \"./completions/completions.mjs\";\nimport { Completions, } from \"./completions/completions.mjs\";\nexport class Chat extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.completions = new CompletionsAPI.Completions(this._client);\n    }\n}\nChat.Completions = Completions;\n//# sourceMappingURL=chat.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { isReadonlyArray } from \"./utils/values.mjs\";\nconst brand_privateNullableHeaders = /* @__PURE__ */ Symbol('brand.privateNullableHeaders');\nfunction* iterateHeaders(headers) {\n    if (!headers)\n        return;\n    if (brand_privateNullableHeaders in headers) {\n        const { values, nulls } = headers;\n        yield* values.entries();\n        for (const name of nulls) {\n            yield [name, null];\n        }\n        return;\n    }\n    let shouldClear = false;\n    let iter;\n    if (headers instanceof Headers) {\n        iter = headers.entries();\n    }\n    else if (isReadonlyArray(headers)) {\n        iter = headers;\n    }\n    else {\n        shouldClear = true;\n        iter = Object.entries(headers ?? {});\n    }\n    for (let row of iter) {\n        const name = row[0];\n        if (typeof name !== 'string')\n            throw new TypeError('expected header name to be a string');\n        const values = isReadonlyArray(row[1]) ? row[1] : [row[1]];\n        let didClear = false;\n        for (const value of values) {\n            if (value === undefined)\n                continue;\n            // Objects keys always overwrite older headers, they never append.\n            // Yield a null to clear the header before adding the new values.\n            if (shouldClear && !didClear) {\n                didClear = true;\n                yield [name, null];\n            }\n            yield [name, value];\n        }\n    }\n}\nexport const buildHeaders = (newHeaders) => {\n    const targetHeaders = new Headers();\n    const nullHeaders = new Set();\n    for (const headers of newHeaders) {\n        const seenHeaders = new Set();\n        for (const [name, value] of iterateHeaders(headers)) {\n            const lowerName = name.toLowerCase();\n            if (!seenHeaders.has(lowerName)) {\n                targetHeaders.delete(name);\n                seenHeaders.add(lowerName);\n            }\n            if (value === null) {\n                targetHeaders.delete(name);\n                nullHeaders.add(lowerName);\n            }\n            else {\n                targetHeaders.append(name, value);\n                nullHeaders.delete(lowerName);\n            }\n        }\n    }\n    return { [brand_privateNullableHeaders]: true, values: targetHeaders, nulls: nullHeaders };\n};\nexport const isEmptyHeaders = (headers) => {\n    for (const _ of iterateHeaders(headers))\n        return false;\n    return true;\n};\n//# sourceMappingURL=headers.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nexport class Speech extends APIResource {\n    /**\n     * Generates audio from the input text.\n     *\n     * @example\n     * ```ts\n     * const speech = await client.audio.speech.create({\n     *   input: 'input',\n     *   model: 'string',\n     *   voice: 'ash',\n     * });\n     *\n     * const content = await speech.blob();\n     * console.log(content);\n     * ```\n     */\n    create(body, options) {\n        return this._client.post('/audio/speech', {\n            body,\n            ...options,\n            headers: buildHeaders([{ Accept: 'application/octet-stream' }, options?.headers]),\n            __binaryResponse: true,\n        });\n    }\n}\n//# sourceMappingURL=speech.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { multipartFormRequestOptions } from \"../../internal/uploads.mjs\";\nexport class Transcriptions extends APIResource {\n    create(body, options) {\n        return this._client.post('/audio/transcriptions', multipartFormRequestOptions({\n            body,\n            ...options,\n            stream: body.stream ?? false,\n            __metadata: { model: body.model },\n        }, this._client));\n    }\n}\n//# sourceMappingURL=transcriptions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { multipartFormRequestOptions } from \"../../internal/uploads.mjs\";\nexport class Translations extends APIResource {\n    create(body, options) {\n        return this._client.post('/audio/translations', multipartFormRequestOptions({ body, ...options, __metadata: { model: body.model } }, this._client));\n    }\n}\n//# sourceMappingURL=translations.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as SpeechAPI from \"./speech.mjs\";\nimport { Speech } from \"./speech.mjs\";\nimport * as TranscriptionsAPI from \"./transcriptions.mjs\";\nimport { Transcriptions, } from \"./transcriptions.mjs\";\nimport * as TranslationsAPI from \"./translations.mjs\";\nimport { Translations, } from \"./translations.mjs\";\nexport class Audio extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.transcriptions = new TranscriptionsAPI.Transcriptions(this._client);\n        this.translations = new TranslationsAPI.Translations(this._client);\n        this.speech = new SpeechAPI.Speech(this._client);\n    }\n}\nAudio.Transcriptions = Transcriptions;\nAudio.Translations = Translations;\nAudio.Speech = Speech;\n//# sourceMappingURL=audio.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nimport { CursorPage } from \"../core/pagination.mjs\";\nimport { path } from \"../internal/utils/path.mjs\";\nexport class Batches extends APIResource {\n    /**\n     * Creates and executes a batch from an uploaded file of requests\n     */\n    create(body, options) {\n        return this._client.post('/batches', { body, ...options });\n    }\n    /**\n     * Retrieves a batch.\n     */\n    retrieve(batchID, options) {\n        return this._client.get(path `/batches/${batchID}`, options);\n    }\n    /**\n     * List your organization's batches.\n     */\n    list(query = {}, options) {\n        return this._client.getAPIList('/batches', (CursorPage), { query, ...options });\n    }\n    /**\n     * Cancels an in-progress batch. The batch will be in status `cancelling` for up to\n     * 10 minutes, before changing to `cancelled`, where it will have partial results\n     * (if any) available in the output file.\n     */\n    cancel(batchID, options) {\n        return this._client.post(path `/batches/${batchID}/cancel`, options);\n    }\n}\n//# sourceMappingURL=batches.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { CursorPage } from \"../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Assistants extends APIResource {\n    /**\n     * Create an assistant with a model and instructions.\n     *\n     * @example\n     * ```ts\n     * const assistant = await client.beta.assistants.create({\n     *   model: 'gpt-4o',\n     * });\n     * ```\n     */\n    create(body, options) {\n        return this._client.post('/assistants', {\n            body,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Retrieves an assistant.\n     *\n     * @example\n     * ```ts\n     * const assistant = await client.beta.assistants.retrieve(\n     *   'assistant_id',\n     * );\n     * ```\n     */\n    retrieve(assistantID, options) {\n        return this._client.get(path `/assistants/${assistantID}`, {\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Modifies an assistant.\n     *\n     * @example\n     * ```ts\n     * const assistant = await client.beta.assistants.update(\n     *   'assistant_id',\n     * );\n     * ```\n     */\n    update(assistantID, body, options) {\n        return this._client.post(path `/assistants/${assistantID}`, {\n            body,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Returns a list of assistants.\n     *\n     * @example\n     * ```ts\n     * // Automatically fetches more pages as needed.\n     * for await (const assistant of client.beta.assistants.list()) {\n     *   // ...\n     * }\n     * ```\n     */\n    list(query = {}, options) {\n        return this._client.getAPIList('/assistants', (CursorPage), {\n            query,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Delete an assistant.\n     *\n     * @example\n     * ```ts\n     * const assistantDeleted =\n     *   await client.beta.assistants.delete('assistant_id');\n     * ```\n     */\n    delete(assistantID, options) {\n        return this._client.delete(path `/assistants/${assistantID}`, {\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n}\n//# sourceMappingURL=assistants.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nexport class Sessions extends APIResource {\n    /**\n     * Create an ephemeral API token for use in client-side applications with the\n     * Realtime API. Can be configured with the same session parameters as the\n     * `session.update` client event.\n     *\n     * It responds with a session object, plus a `client_secret` key which contains a\n     * usable ephemeral API token that can be used to authenticate browser clients for\n     * the Realtime API.\n     *\n     * @example\n     * ```ts\n     * const session =\n     *   await client.beta.realtime.sessions.create();\n     * ```\n     */\n    create(body, options) {\n        return this._client.post('/realtime/sessions', {\n            body,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n}\n//# sourceMappingURL=sessions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nexport class TranscriptionSessions extends APIResource {\n    /**\n     * Create an ephemeral API token for use in client-side applications with the\n     * Realtime API specifically for realtime transcriptions. Can be configured with\n     * the same session parameters as the `transcription_session.update` client event.\n     *\n     * It responds with a session object, plus a `client_secret` key which contains a\n     * usable ephemeral API token that can be used to authenticate browser clients for\n     * the Realtime API.\n     *\n     * @example\n     * ```ts\n     * const transcriptionSession =\n     *   await client.beta.realtime.transcriptionSessions.create();\n     * ```\n     */\n    create(body, options) {\n        return this._client.post('/realtime/transcription_sessions', {\n            body,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n}\n//# sourceMappingURL=transcription-sessions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as SessionsAPI from \"./sessions.mjs\";\nimport { Sessions, } from \"./sessions.mjs\";\nimport * as TranscriptionSessionsAPI from \"./transcription-sessions.mjs\";\nimport { TranscriptionSessions, } from \"./transcription-sessions.mjs\";\nexport class Realtime extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.sessions = new SessionsAPI.Sessions(this._client);\n        this.transcriptionSessions = new TranscriptionSessionsAPI.TranscriptionSessions(this._client);\n    }\n}\nRealtime.Sessions = Sessions;\nRealtime.TranscriptionSessions = TranscriptionSessions;\n//# sourceMappingURL=realtime.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Messages extends APIResource {\n    /**\n     * Create a message.\n     *\n     * @deprecated The Assistants API is deprecated in favor of the Responses API\n     */\n    create(threadID, body, options) {\n        return this._client.post(path `/threads/${threadID}/messages`, {\n            body,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Retrieve a message.\n     *\n     * @deprecated The Assistants API is deprecated in favor of the Responses API\n     */\n    retrieve(messageID, params, options) {\n        const { thread_id } = params;\n        return this._client.get(path `/threads/${thread_id}/messages/${messageID}`, {\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Modifies a message.\n     *\n     * @deprecated The Assistants API is deprecated in favor of the Responses API\n     */\n    update(messageID, params, options) {\n        const { thread_id, ...body } = params;\n        return this._client.post(path `/threads/${thread_id}/messages/${messageID}`, {\n            body,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Returns a list of messages for a given thread.\n     *\n     * @deprecated The Assistants API is deprecated in favor of the Responses API\n     */\n    list(threadID, query = {}, options) {\n        return this._client.getAPIList(path `/threads/${threadID}/messages`, (CursorPage), {\n            query,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Deletes a message.\n     *\n     * @deprecated The Assistants API is deprecated in favor of the Responses API\n     */\n    delete(messageID, params, options) {\n        const { thread_id } = params;\n        return this._client.delete(path `/threads/${thread_id}/messages/${messageID}`, {\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n}\n//# sourceMappingURL=messages.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport { CursorPage } from \"../../../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../../../internal/headers.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\n/**\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Steps extends APIResource {\n    /**\n     * Retrieves a run step.\n     *\n     * @deprecated The Assistants API is deprecated in favor of the Responses API\n     */\n    retrieve(stepID, params, options) {\n        const { thread_id, run_id, ...query } = params;\n        return this._client.get(path `/threads/${thread_id}/runs/${run_id}/steps/${stepID}`, {\n            query,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Returns a list of run steps belonging to a run.\n     *\n     * @deprecated The Assistants API is deprecated in favor of the Responses API\n     */\n    list(runID, params, options) {\n        const { thread_id, ...query } = params;\n        return this._client.getAPIList(path `/threads/${thread_id}/runs/${runID}/steps`, (CursorPage), {\n            query,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n}\n//# sourceMappingURL=steps.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { OpenAIError } from \"../../core/error.mjs\";\nimport { encodeUTF8 } from \"./bytes.mjs\";\nexport const toBase64 = (data) => {\n    if (!data)\n        return '';\n    if (typeof globalThis.Buffer !== 'undefined') {\n        return globalThis.Buffer.from(data).toString('base64');\n    }\n    if (typeof data === 'string') {\n        data = encodeUTF8(data);\n    }\n    if (typeof btoa !== 'undefined') {\n        return btoa(String.fromCharCode.apply(null, data));\n    }\n    throw new OpenAIError('Cannot generate base64 string; Expected `Buffer` or `btoa` to be defined');\n};\nexport const fromBase64 = (str) => {\n    if (typeof globalThis.Buffer !== 'undefined') {\n        const buf = globalThis.Buffer.from(str, 'base64');\n        return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n    }\n    if (typeof atob !== 'undefined') {\n        const bstr = atob(str);\n        const buf = new Uint8Array(bstr.length);\n        for (let i = 0; i < bstr.length; i++) {\n            buf[i] = bstr.charCodeAt(i);\n        }\n        return buf;\n    }\n    throw new OpenAIError('Cannot decode base64 string; Expected `Buffer` or `atob` to be defined');\n};\n/**\n * Converts a Base64 encoded string to a Float32Array.\n * @param base64Str - The Base64 encoded string.\n * @returns An Array of numbers interpreted as Float32 values.\n */\nexport const toFloat32Array = (base64Str) => {\n    if (typeof Buffer !== 'undefined') {\n        // for Node.js environment\n        const buf = Buffer.from(base64Str, 'base64');\n        return Array.from(new Float32Array(buf.buffer, buf.byteOffset, buf.length / Float32Array.BYTES_PER_ELEMENT));\n    }\n    else {\n        // for legacy web platform APIs\n        const binaryStr = atob(base64Str);\n        const len = binaryStr.length;\n        const bytes = new Uint8Array(len);\n        for (let i = 0; i < len; i++) {\n            bytes[i] = binaryStr.charCodeAt(i);\n        }\n        return Array.from(new Float32Array(bytes.buffer));\n    }\n};\n//# sourceMappingURL=base64.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\n/**\n * Read an environment variable.\n *\n * Trims beginning and trailing whitespace.\n *\n * Will return undefined if the environment variable doesn't exist or cannot be accessed.\n */\nexport const readEnv = (env) => {\n    if (typeof globalThis.process !== 'undefined') {\n        return globalThis.process.env?.[env]?.trim() ?? undefined;\n    }\n    if (typeof globalThis.Deno !== 'undefined') {\n        return globalThis.Deno.env?.get?.(env)?.trim();\n    }\n    return undefined;\n};\n//# sourceMappingURL=env.mjs.map","var _AssistantStream_instances, _a, _AssistantStream_events, _AssistantStream_runStepSnapshots, _AssistantStream_messageSnapshots, _AssistantStream_messageSnapshot, _AssistantStream_finalRun, _AssistantStream_currentContentIndex, _AssistantStream_currentContent, _AssistantStream_currentToolCallIndex, _AssistantStream_currentToolCall, _AssistantStream_currentEvent, _AssistantStream_currentRunSnapshot, _AssistantStream_currentRunStepSnapshot, _AssistantStream_addEvent, _AssistantStream_endRequest, _AssistantStream_handleMessage, _AssistantStream_handleRunStep, _AssistantStream_handleEvent, _AssistantStream_accumulateRunStep, _AssistantStream_accumulateMessage, _AssistantStream_accumulateContent, _AssistantStream_handleRun;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { Stream } from \"../streaming.mjs\";\nimport { APIUserAbortError, OpenAIError } from \"../error.mjs\";\nimport { EventStream } from \"./EventStream.mjs\";\nimport { isObj } from \"../internal/utils.mjs\";\nexport class AssistantStream extends EventStream {\n    constructor() {\n        super(...arguments);\n        _AssistantStream_instances.add(this);\n        //Track all events in a single list for reference\n        _AssistantStream_events.set(this, []);\n        //Used to accumulate deltas\n        //We are accumulating many types so the value here is not strict\n        _AssistantStream_runStepSnapshots.set(this, {});\n        _AssistantStream_messageSnapshots.set(this, {});\n        _AssistantStream_messageSnapshot.set(this, void 0);\n        _AssistantStream_finalRun.set(this, void 0);\n        _AssistantStream_currentContentIndex.set(this, void 0);\n        _AssistantStream_currentContent.set(this, void 0);\n        _AssistantStream_currentToolCallIndex.set(this, void 0);\n        _AssistantStream_currentToolCall.set(this, void 0);\n        //For current snapshot methods\n        _AssistantStream_currentEvent.set(this, void 0);\n        _AssistantStream_currentRunSnapshot.set(this, void 0);\n        _AssistantStream_currentRunStepSnapshot.set(this, void 0);\n    }\n    [(_AssistantStream_events = new WeakMap(), _AssistantStream_runStepSnapshots = new WeakMap(), _AssistantStream_messageSnapshots = new WeakMap(), _AssistantStream_messageSnapshot = new WeakMap(), _AssistantStream_finalRun = new WeakMap(), _AssistantStream_currentContentIndex = new WeakMap(), _AssistantStream_currentContent = new WeakMap(), _AssistantStream_currentToolCallIndex = new WeakMap(), _AssistantStream_currentToolCall = new WeakMap(), _AssistantStream_currentEvent = new WeakMap(), _AssistantStream_currentRunSnapshot = new WeakMap(), _AssistantStream_currentRunStepSnapshot = new WeakMap(), _AssistantStream_instances = new WeakSet(), Symbol.asyncIterator)]() {\n        const pushQueue = [];\n        const readQueue = [];\n        let done = false;\n        //Catch all for passing along all events\n        this.on('event', (event) => {\n            const reader = readQueue.shift();\n            if (reader) {\n                reader.resolve(event);\n            }\n            else {\n                pushQueue.push(event);\n            }\n        });\n        this.on('end', () => {\n            done = true;\n            for (const reader of readQueue) {\n                reader.resolve(undefined);\n            }\n            readQueue.length = 0;\n        });\n        this.on('abort', (err) => {\n            done = true;\n            for (const reader of readQueue) {\n                reader.reject(err);\n            }\n            readQueue.length = 0;\n        });\n        this.on('error', (err) => {\n            done = true;\n            for (const reader of readQueue) {\n                reader.reject(err);\n            }\n            readQueue.length = 0;\n        });\n        return {\n            next: async () => {\n                if (!pushQueue.length) {\n                    if (done) {\n                        return { value: undefined, done: true };\n                    }\n                    return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));\n                }\n                const chunk = pushQueue.shift();\n                return { value: chunk, done: false };\n            },\n            return: async () => {\n                this.abort();\n                return { value: undefined, done: true };\n            },\n        };\n    }\n    static fromReadableStream(stream) {\n        const runner = new _a();\n        runner._run(() => runner._fromReadableStream(stream));\n        return runner;\n    }\n    async _fromReadableStream(readableStream, options) {\n        const signal = options?.signal;\n        if (signal) {\n            if (signal.aborted)\n                this.controller.abort();\n            signal.addEventListener('abort', () => this.controller.abort());\n        }\n        this._connected();\n        const stream = Stream.fromReadableStream(readableStream, this.controller);\n        for await (const event of stream) {\n            __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n        }\n        if (stream.controller.signal?.aborted) {\n            throw new APIUserAbortError();\n        }\n        return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n    }\n    toReadableStream() {\n        const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n        return stream.toReadableStream();\n    }\n    static createToolAssistantStream(runId, runs, params, options) {\n        const runner = new _a();\n        runner._run(() => runner._runToolAssistantStream(runId, runs, params, {\n            ...options,\n            headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n        }));\n        return runner;\n    }\n    async _createToolAssistantStream(run, runId, params, options) {\n        const signal = options?.signal;\n        if (signal) {\n            if (signal.aborted)\n                this.controller.abort();\n            signal.addEventListener('abort', () => this.controller.abort());\n        }\n        const body = { ...params, stream: true };\n        const stream = await run.submitToolOutputs(runId, body, {\n            ...options,\n            signal: this.controller.signal,\n        });\n        this._connected();\n        for await (const event of stream) {\n            __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n        }\n        if (stream.controller.signal?.aborted) {\n            throw new APIUserAbortError();\n        }\n        return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n    }\n    static createThreadAssistantStream(params, thread, options) {\n        const runner = new _a();\n        runner._run(() => runner._threadAssistantStream(params, thread, {\n            ...options,\n            headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n        }));\n        return runner;\n    }\n    static createAssistantStream(threadId, runs, params, options) {\n        const runner = new _a();\n        runner._run(() => runner._runAssistantStream(threadId, runs, params, {\n            ...options,\n            headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n        }));\n        return runner;\n    }\n    currentEvent() {\n        return __classPrivateFieldGet(this, _AssistantStream_currentEvent, \"f\");\n    }\n    currentRun() {\n        return __classPrivateFieldGet(this, _AssistantStream_currentRunSnapshot, \"f\");\n    }\n    currentMessageSnapshot() {\n        return __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\");\n    }\n    currentRunStepSnapshot() {\n        return __classPrivateFieldGet(this, _AssistantStream_currentRunStepSnapshot, \"f\");\n    }\n    async finalRunSteps() {\n        await this.done();\n        return Object.values(__classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\"));\n    }\n    async finalMessages() {\n        await this.done();\n        return Object.values(__classPrivateFieldGet(this, _AssistantStream_messageSnapshots, \"f\"));\n    }\n    async finalRun() {\n        await this.done();\n        if (!__classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\"))\n            throw Error('Final run was not received.');\n        return __classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\");\n    }\n    async _createThreadAssistantStream(thread, params, options) {\n        const signal = options?.signal;\n        if (signal) {\n            if (signal.aborted)\n                this.controller.abort();\n            signal.addEventListener('abort', () => this.controller.abort());\n        }\n        const body = { ...params, stream: true };\n        const stream = await thread.createAndRun(body, { ...options, signal: this.controller.signal });\n        this._connected();\n        for await (const event of stream) {\n            __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n        }\n        if (stream.controller.signal?.aborted) {\n            throw new APIUserAbortError();\n        }\n        return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n    }\n    async _createAssistantStream(run, threadId, params, options) {\n        const signal = options?.signal;\n        if (signal) {\n            if (signal.aborted)\n                this.controller.abort();\n            signal.addEventListener('abort', () => this.controller.abort());\n        }\n        const body = { ...params, stream: true };\n        const stream = await run.create(threadId, body, { ...options, signal: this.controller.signal });\n        this._connected();\n        for await (const event of stream) {\n            __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_addEvent).call(this, event);\n        }\n        if (stream.controller.signal?.aborted) {\n            throw new APIUserAbortError();\n        }\n        return this._addRun(__classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_endRequest).call(this));\n    }\n    static accumulateDelta(acc, delta) {\n        for (const [key, deltaValue] of Object.entries(delta)) {\n            if (!acc.hasOwnProperty(key)) {\n                acc[key] = deltaValue;\n                continue;\n            }\n            let accValue = acc[key];\n            if (accValue === null || accValue === undefined) {\n                acc[key] = deltaValue;\n                continue;\n            }\n            // We don't accumulate these special properties\n            if (key === 'index' || key === 'type') {\n                acc[key] = deltaValue;\n                continue;\n            }\n            // Type-specific accumulation logic\n            if (typeof accValue === 'string' && typeof deltaValue === 'string') {\n                accValue += deltaValue;\n            }\n            else if (typeof accValue === 'number' && typeof deltaValue === 'number') {\n                accValue += deltaValue;\n            }\n            else if (isObj(accValue) && isObj(deltaValue)) {\n                accValue = this.accumulateDelta(accValue, deltaValue);\n            }\n            else if (Array.isArray(accValue) && Array.isArray(deltaValue)) {\n                if (accValue.every((x) => typeof x === 'string' || typeof x === 'number')) {\n                    accValue.push(...deltaValue); // Use spread syntax for efficient addition\n                    continue;\n                }\n                for (const deltaEntry of deltaValue) {\n                    if (!isObj(deltaEntry)) {\n                        throw new Error(`Expected array delta entry to be an object but got: ${deltaEntry}`);\n                    }\n                    const index = deltaEntry['index'];\n                    if (index == null) {\n                        console.error(deltaEntry);\n                        throw new Error('Expected array delta entry to have an `index` property');\n                    }\n                    if (typeof index !== 'number') {\n                        throw new Error(`Expected array delta entry \\`index\\` property to be a number but got ${index}`);\n                    }\n                    const accEntry = accValue[index];\n                    if (accEntry == null) {\n                        accValue.push(deltaEntry);\n                    }\n                    else {\n                        accValue[index] = this.accumulateDelta(accEntry, deltaEntry);\n                    }\n                }\n                continue;\n            }\n            else {\n                throw Error(`Unhandled record type: ${key}, deltaValue: ${deltaValue}, accValue: ${accValue}`);\n            }\n            acc[key] = accValue;\n        }\n        return acc;\n    }\n    _addRun(run) {\n        return run;\n    }\n    async _threadAssistantStream(params, thread, options) {\n        return await this._createThreadAssistantStream(thread, params, options);\n    }\n    async _runAssistantStream(threadId, runs, params, options) {\n        return await this._createAssistantStream(runs, threadId, params, options);\n    }\n    async _runToolAssistantStream(runId, runs, params, options) {\n        return await this._createToolAssistantStream(runs, runId, params, options);\n    }\n}\n_a = AssistantStream, _AssistantStream_addEvent = function _AssistantStream_addEvent(event) {\n    if (this.ended)\n        return;\n    __classPrivateFieldSet(this, _AssistantStream_currentEvent, event, \"f\");\n    __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleEvent).call(this, event);\n    switch (event.event) {\n        case 'thread.created':\n            //No action on this event.\n            break;\n        case 'thread.run.created':\n        case 'thread.run.queued':\n        case 'thread.run.in_progress':\n        case 'thread.run.requires_action':\n        case 'thread.run.completed':\n        case 'thread.run.incomplete':\n        case 'thread.run.failed':\n        case 'thread.run.cancelling':\n        case 'thread.run.cancelled':\n        case 'thread.run.expired':\n            __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleRun).call(this, event);\n            break;\n        case 'thread.run.step.created':\n        case 'thread.run.step.in_progress':\n        case 'thread.run.step.delta':\n        case 'thread.run.step.completed':\n        case 'thread.run.step.failed':\n        case 'thread.run.step.cancelled':\n        case 'thread.run.step.expired':\n            __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleRunStep).call(this, event);\n            break;\n        case 'thread.message.created':\n        case 'thread.message.in_progress':\n        case 'thread.message.delta':\n        case 'thread.message.completed':\n        case 'thread.message.incomplete':\n            __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_handleMessage).call(this, event);\n            break;\n        case 'error':\n            //This is included for completeness, but errors are processed in the SSE event processing so this should not occur\n            throw new Error('Encountered an error event in event processing - errors should be processed earlier');\n        default:\n            assertNever(event);\n    }\n}, _AssistantStream_endRequest = function _AssistantStream_endRequest() {\n    if (this.ended) {\n        throw new OpenAIError(`stream has ended, this shouldn't happen`);\n    }\n    if (!__classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\"))\n        throw Error('Final run has not been received');\n    return __classPrivateFieldGet(this, _AssistantStream_finalRun, \"f\");\n}, _AssistantStream_handleMessage = function _AssistantStream_handleMessage(event) {\n    const [accumulatedMessage, newContent] = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateMessage).call(this, event, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n    __classPrivateFieldSet(this, _AssistantStream_messageSnapshot, accumulatedMessage, \"f\");\n    __classPrivateFieldGet(this, _AssistantStream_messageSnapshots, \"f\")[accumulatedMessage.id] = accumulatedMessage;\n    for (const content of newContent) {\n        const snapshotContent = accumulatedMessage.content[content.index];\n        if (snapshotContent?.type == 'text') {\n            this._emit('textCreated', snapshotContent.text);\n        }\n    }\n    switch (event.event) {\n        case 'thread.message.created':\n            this._emit('messageCreated', event.data);\n            break;\n        case 'thread.message.in_progress':\n            break;\n        case 'thread.message.delta':\n            this._emit('messageDelta', event.data.delta, accumulatedMessage);\n            if (event.data.delta.content) {\n                for (const content of event.data.delta.content) {\n                    //If it is text delta, emit a text delta event\n                    if (content.type == 'text' && content.text) {\n                        let textDelta = content.text;\n                        let snapshot = accumulatedMessage.content[content.index];\n                        if (snapshot && snapshot.type == 'text') {\n                            this._emit('textDelta', textDelta, snapshot.text);\n                        }\n                        else {\n                            throw Error('The snapshot associated with this text delta is not text or missing');\n                        }\n                    }\n                    if (content.index != __classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\")) {\n                        //See if we have in progress content\n                        if (__classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\")) {\n                            switch (__classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").type) {\n                                case 'text':\n                                    this._emit('textDone', __classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").text, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n                                    break;\n                                case 'image_file':\n                                    this._emit('imageFileDone', __classPrivateFieldGet(this, _AssistantStream_currentContent, \"f\").image_file, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n                                    break;\n                            }\n                        }\n                        __classPrivateFieldSet(this, _AssistantStream_currentContentIndex, content.index, \"f\");\n                    }\n                    __classPrivateFieldSet(this, _AssistantStream_currentContent, accumulatedMessage.content[content.index], \"f\");\n                }\n            }\n            break;\n        case 'thread.message.completed':\n        case 'thread.message.incomplete':\n            //We emit the latest content we were working on on completion (including incomplete)\n            if (__classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\") !== undefined) {\n                const currentContent = event.data.content[__classPrivateFieldGet(this, _AssistantStream_currentContentIndex, \"f\")];\n                if (currentContent) {\n                    switch (currentContent.type) {\n                        case 'image_file':\n                            this._emit('imageFileDone', currentContent.image_file, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n                            break;\n                        case 'text':\n                            this._emit('textDone', currentContent.text, __classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\"));\n                            break;\n                    }\n                }\n            }\n            if (__classPrivateFieldGet(this, _AssistantStream_messageSnapshot, \"f\")) {\n                this._emit('messageDone', event.data);\n            }\n            __classPrivateFieldSet(this, _AssistantStream_messageSnapshot, undefined, \"f\");\n    }\n}, _AssistantStream_handleRunStep = function _AssistantStream_handleRunStep(event) {\n    const accumulatedRunStep = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateRunStep).call(this, event);\n    __classPrivateFieldSet(this, _AssistantStream_currentRunStepSnapshot, accumulatedRunStep, \"f\");\n    switch (event.event) {\n        case 'thread.run.step.created':\n            this._emit('runStepCreated', event.data);\n            break;\n        case 'thread.run.step.delta':\n            const delta = event.data.delta;\n            if (delta.step_details &&\n                delta.step_details.type == 'tool_calls' &&\n                delta.step_details.tool_calls &&\n                accumulatedRunStep.step_details.type == 'tool_calls') {\n                for (const toolCall of delta.step_details.tool_calls) {\n                    if (toolCall.index == __classPrivateFieldGet(this, _AssistantStream_currentToolCallIndex, \"f\")) {\n                        this._emit('toolCallDelta', toolCall, accumulatedRunStep.step_details.tool_calls[toolCall.index]);\n                    }\n                    else {\n                        if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n                            this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n                        }\n                        __classPrivateFieldSet(this, _AssistantStream_currentToolCallIndex, toolCall.index, \"f\");\n                        __classPrivateFieldSet(this, _AssistantStream_currentToolCall, accumulatedRunStep.step_details.tool_calls[toolCall.index], \"f\");\n                        if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"))\n                            this._emit('toolCallCreated', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n                    }\n                }\n            }\n            this._emit('runStepDelta', event.data.delta, accumulatedRunStep);\n            break;\n        case 'thread.run.step.completed':\n        case 'thread.run.step.failed':\n        case 'thread.run.step.cancelled':\n        case 'thread.run.step.expired':\n            __classPrivateFieldSet(this, _AssistantStream_currentRunStepSnapshot, undefined, \"f\");\n            const details = event.data.step_details;\n            if (details.type == 'tool_calls') {\n                if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n                    this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n                    __classPrivateFieldSet(this, _AssistantStream_currentToolCall, undefined, \"f\");\n                }\n            }\n            this._emit('runStepDone', event.data, accumulatedRunStep);\n            break;\n        case 'thread.run.step.in_progress':\n            break;\n    }\n}, _AssistantStream_handleEvent = function _AssistantStream_handleEvent(event) {\n    __classPrivateFieldGet(this, _AssistantStream_events, \"f\").push(event);\n    this._emit('event', event);\n}, _AssistantStream_accumulateRunStep = function _AssistantStream_accumulateRunStep(event) {\n    switch (event.event) {\n        case 'thread.run.step.created':\n            __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = event.data;\n            return event.data;\n        case 'thread.run.step.delta':\n            let snapshot = __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n            if (!snapshot) {\n                throw Error('Received a RunStepDelta before creation of a snapshot');\n            }\n            let data = event.data;\n            if (data.delta) {\n                const accumulated = _a.accumulateDelta(snapshot, data.delta);\n                __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = accumulated;\n            }\n            return __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n        case 'thread.run.step.completed':\n        case 'thread.run.step.failed':\n        case 'thread.run.step.cancelled':\n        case 'thread.run.step.expired':\n        case 'thread.run.step.in_progress':\n            __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id] = event.data;\n            break;\n    }\n    if (__classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id])\n        return __classPrivateFieldGet(this, _AssistantStream_runStepSnapshots, \"f\")[event.data.id];\n    throw new Error('No snapshot available');\n}, _AssistantStream_accumulateMessage = function _AssistantStream_accumulateMessage(event, snapshot) {\n    let newContent = [];\n    switch (event.event) {\n        case 'thread.message.created':\n            //On creation the snapshot is just the initial message\n            return [event.data, newContent];\n        case 'thread.message.delta':\n            if (!snapshot) {\n                throw Error('Received a delta with no existing snapshot (there should be one from message creation)');\n            }\n            let data = event.data;\n            //If this delta does not have content, nothing to process\n            if (data.delta.content) {\n                for (const contentElement of data.delta.content) {\n                    if (contentElement.index in snapshot.content) {\n                        let currentContent = snapshot.content[contentElement.index];\n                        snapshot.content[contentElement.index] = __classPrivateFieldGet(this, _AssistantStream_instances, \"m\", _AssistantStream_accumulateContent).call(this, contentElement, currentContent);\n                    }\n                    else {\n                        snapshot.content[contentElement.index] = contentElement;\n                        // This is a new element\n                        newContent.push(contentElement);\n                    }\n                }\n            }\n            return [snapshot, newContent];\n        case 'thread.message.in_progress':\n        case 'thread.message.completed':\n        case 'thread.message.incomplete':\n            //No changes on other thread events\n            if (snapshot) {\n                return [snapshot, newContent];\n            }\n            else {\n                throw Error('Received thread message event with no existing snapshot');\n            }\n    }\n    throw Error('Tried to accumulate a non-message event');\n}, _AssistantStream_accumulateContent = function _AssistantStream_accumulateContent(contentElement, currentContent) {\n    return _a.accumulateDelta(currentContent, contentElement);\n}, _AssistantStream_handleRun = function _AssistantStream_handleRun(event) {\n    __classPrivateFieldSet(this, _AssistantStream_currentRunSnapshot, event.data, \"f\");\n    switch (event.event) {\n        case 'thread.run.created':\n            break;\n        case 'thread.run.queued':\n            break;\n        case 'thread.run.in_progress':\n            break;\n        case 'thread.run.requires_action':\n        case 'thread.run.cancelled':\n        case 'thread.run.failed':\n        case 'thread.run.completed':\n        case 'thread.run.expired':\n        case 'thread.run.incomplete':\n            __classPrivateFieldSet(this, _AssistantStream_finalRun, event.data, \"f\");\n            if (__classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\")) {\n                this._emit('toolCallDone', __classPrivateFieldGet(this, _AssistantStream_currentToolCall, \"f\"));\n                __classPrivateFieldSet(this, _AssistantStream_currentToolCall, undefined, \"f\");\n            }\n            break;\n        case 'thread.run.cancelling':\n            break;\n    }\n};\nfunction assertNever(_x) { }\n//# sourceMappingURL=AssistantStream.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../../core/resource.mjs\";\nimport * as StepsAPI from \"./steps.mjs\";\nimport { Steps, } from \"./steps.mjs\";\nimport { CursorPage } from \"../../../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../../../internal/headers.mjs\";\nimport { AssistantStream } from \"../../../../lib/AssistantStream.mjs\";\nimport { sleep } from \"../../../../internal/utils/sleep.mjs\";\nimport { path } from \"../../../../internal/utils/path.mjs\";\n/**\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Runs extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.steps = new StepsAPI.Steps(this._client);\n    }\n    create(threadID, params, options) {\n        const { include, ...body } = params;\n        return this._client.post(path `/threads/${threadID}/runs`, {\n            query: { include },\n            body,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n            stream: params.stream ?? false,\n        });\n    }\n    /**\n     * Retrieves a run.\n     *\n     * @deprecated The Assistants API is deprecated in favor of the Responses API\n     */\n    retrieve(runID, params, options) {\n        const { thread_id } = params;\n        return this._client.get(path `/threads/${thread_id}/runs/${runID}`, {\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Modifies a run.\n     *\n     * @deprecated The Assistants API is deprecated in favor of the Responses API\n     */\n    update(runID, params, options) {\n        const { thread_id, ...body } = params;\n        return this._client.post(path `/threads/${thread_id}/runs/${runID}`, {\n            body,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Returns a list of runs belonging to a thread.\n     *\n     * @deprecated The Assistants API is deprecated in favor of the Responses API\n     */\n    list(threadID, query = {}, options) {\n        return this._client.getAPIList(path `/threads/${threadID}/runs`, (CursorPage), {\n            query,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Cancels a run that is `in_progress`.\n     *\n     * @deprecated The Assistants API is deprecated in favor of the Responses API\n     */\n    cancel(runID, params, options) {\n        const { thread_id } = params;\n        return this._client.post(path `/threads/${thread_id}/runs/${runID}/cancel`, {\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * A helper to create a run an poll for a terminal state. More information on Run\n     * lifecycles can be found here:\n     * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n     */\n    async createAndPoll(threadId, body, options) {\n        const run = await this.create(threadId, body, options);\n        return await this.poll(run.id, { thread_id: threadId }, options);\n    }\n    /**\n     * Create a Run stream\n     *\n     * @deprecated use `stream` instead\n     */\n    createAndStream(threadId, body, options) {\n        return AssistantStream.createAssistantStream(threadId, this._client.beta.threads.runs, body, options);\n    }\n    /**\n     * A helper to poll a run status until it reaches a terminal state. More\n     * information on Run lifecycles can be found here:\n     * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n     */\n    async poll(runId, params, options) {\n        const headers = buildHeaders([\n            options?.headers,\n            {\n                'X-Stainless-Poll-Helper': 'true',\n                'X-Stainless-Custom-Poll-Interval': options?.pollIntervalMs?.toString() ?? undefined,\n            },\n        ]);\n        while (true) {\n            const { data: run, response } = await this.retrieve(runId, params, {\n                ...options,\n                headers: { ...options?.headers, ...headers },\n            }).withResponse();\n            switch (run.status) {\n                //If we are in any sort of intermediate state we poll\n                case 'queued':\n                case 'in_progress':\n                case 'cancelling':\n                    let sleepInterval = 5000;\n                    if (options?.pollIntervalMs) {\n                        sleepInterval = options.pollIntervalMs;\n                    }\n                    else {\n                        const headerInterval = response.headers.get('openai-poll-after-ms');\n                        if (headerInterval) {\n                            const headerIntervalMs = parseInt(headerInterval);\n                            if (!isNaN(headerIntervalMs)) {\n                                sleepInterval = headerIntervalMs;\n                            }\n                        }\n                    }\n                    await sleep(sleepInterval);\n                    break;\n                //We return the run in any terminal state.\n                case 'requires_action':\n                case 'incomplete':\n                case 'cancelled':\n                case 'completed':\n                case 'failed':\n                case 'expired':\n                    return run;\n            }\n        }\n    }\n    /**\n     * Create a Run stream\n     */\n    stream(threadId, body, options) {\n        return AssistantStream.createAssistantStream(threadId, this._client.beta.threads.runs, body, options);\n    }\n    submitToolOutputs(runID, params, options) {\n        const { thread_id, ...body } = params;\n        return this._client.post(path `/threads/${thread_id}/runs/${runID}/submit_tool_outputs`, {\n            body,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n            stream: params.stream ?? false,\n        });\n    }\n    /**\n     * A helper to submit a tool output to a run and poll for a terminal run state.\n     * More information on Run lifecycles can be found here:\n     * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n     */\n    async submitToolOutputsAndPoll(runId, params, options) {\n        const run = await this.submitToolOutputs(runId, params, options);\n        return await this.poll(run.id, params, options);\n    }\n    /**\n     * Submit the tool outputs from a previous run and stream the run to a terminal\n     * state. More information on Run lifecycles can be found here:\n     * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n     */\n    submitToolOutputsStream(runId, params, options) {\n        return AssistantStream.createToolAssistantStream(runId, this._client.beta.threads.runs, params, options);\n    }\n}\nRuns.Steps = Steps;\n//# sourceMappingURL=runs.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as MessagesAPI from \"./messages.mjs\";\nimport { Messages, } from \"./messages.mjs\";\nimport * as RunsAPI from \"./runs/runs.mjs\";\nimport { Runs, } from \"./runs/runs.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { AssistantStream } from \"../../../lib/AssistantStream.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\n/**\n * @deprecated The Assistants API is deprecated in favor of the Responses API\n */\nexport class Threads extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.runs = new RunsAPI.Runs(this._client);\n        this.messages = new MessagesAPI.Messages(this._client);\n    }\n    /**\n     * Create a thread.\n     *\n     * @deprecated The Assistants API is deprecated in favor of the Responses API\n     */\n    create(body = {}, options) {\n        return this._client.post('/threads', {\n            body,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Retrieves a thread.\n     *\n     * @deprecated The Assistants API is deprecated in favor of the Responses API\n     */\n    retrieve(threadID, options) {\n        return this._client.get(path `/threads/${threadID}`, {\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Modifies a thread.\n     *\n     * @deprecated The Assistants API is deprecated in favor of the Responses API\n     */\n    update(threadID, body, options) {\n        return this._client.post(path `/threads/${threadID}`, {\n            body,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Delete a thread.\n     *\n     * @deprecated The Assistants API is deprecated in favor of the Responses API\n     */\n    delete(threadID, options) {\n        return this._client.delete(path `/threads/${threadID}`, {\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    createAndRun(body, options) {\n        return this._client.post('/threads/runs', {\n            body,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n            stream: body.stream ?? false,\n        });\n    }\n    /**\n     * A helper to create a thread, start a run and then poll for a terminal state.\n     * More information on Run lifecycles can be found here:\n     * https://platform.openai.com/docs/assistants/how-it-works/runs-and-run-steps\n     */\n    async createAndRunPoll(body, options) {\n        const run = await this.createAndRun(body, options);\n        return await this.runs.poll(run.id, { thread_id: run.thread_id }, options);\n    }\n    /**\n     * Create a thread and stream the run back\n     */\n    createAndRunStream(body, options) {\n        return AssistantStream.createThreadAssistantStream(body, this._client.beta.threads, options);\n    }\n}\nThreads.Runs = Runs;\nThreads.Messages = Messages;\n//# sourceMappingURL=threads.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as AssistantsAPI from \"./assistants.mjs\";\nimport { Assistants, } from \"./assistants.mjs\";\nimport * as RealtimeAPI from \"./realtime/realtime.mjs\";\nimport { Realtime, } from \"./realtime/realtime.mjs\";\nimport * as ThreadsAPI from \"./threads/threads.mjs\";\nimport { Threads, } from \"./threads/threads.mjs\";\nexport class Beta extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.realtime = new RealtimeAPI.Realtime(this._client);\n        this.assistants = new AssistantsAPI.Assistants(this._client);\n        this.threads = new ThreadsAPI.Threads(this._client);\n    }\n}\nBeta.Realtime = Realtime;\nBeta.Assistants = Assistants;\nBeta.Threads = Threads;\n//# sourceMappingURL=beta.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nexport class Completions extends APIResource {\n    create(body, options) {\n        return this._client.post('/completions', { body, ...options, stream: body.stream ?? false });\n    }\n}\n//# sourceMappingURL=completions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Content extends APIResource {\n    /**\n     * Retrieve Container File Content\n     */\n    retrieve(fileID, params, options) {\n        const { container_id } = params;\n        return this._client.get(path `/containers/${container_id}/files/${fileID}/content`, {\n            ...options,\n            headers: buildHeaders([{ Accept: 'application/binary' }, options?.headers]),\n            __binaryResponse: true,\n        });\n    }\n}\n//# sourceMappingURL=content.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as ContentAPI from \"./content.mjs\";\nimport { Content } from \"./content.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { multipartFormRequestOptions } from \"../../../internal/uploads.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Files extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.content = new ContentAPI.Content(this._client);\n    }\n    /**\n     * Create a Container File\n     *\n     * You can send either a multipart/form-data request with the raw file content, or\n     * a JSON request with a file ID.\n     */\n    create(containerID, body, options) {\n        return this._client.post(path `/containers/${containerID}/files`, multipartFormRequestOptions({ body, ...options }, this._client));\n    }\n    /**\n     * Retrieve Container File\n     */\n    retrieve(fileID, params, options) {\n        const { container_id } = params;\n        return this._client.get(path `/containers/${container_id}/files/${fileID}`, options);\n    }\n    /**\n     * List Container files\n     */\n    list(containerID, query = {}, options) {\n        return this._client.getAPIList(path `/containers/${containerID}/files`, (CursorPage), {\n            query,\n            ...options,\n        });\n    }\n    /**\n     * Delete Container File\n     */\n    delete(fileID, params, options) {\n        const { container_id } = params;\n        return this._client.delete(path `/containers/${container_id}/files/${fileID}`, {\n            ...options,\n            headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),\n        });\n    }\n}\nFiles.Content = Content;\n//# sourceMappingURL=files.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as FilesAPI from \"./files/files.mjs\";\nimport { Files, } from \"./files/files.mjs\";\nimport { CursorPage } from \"../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Containers extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.files = new FilesAPI.Files(this._client);\n    }\n    /**\n     * Create Container\n     */\n    create(body, options) {\n        return this._client.post('/containers', { body, ...options });\n    }\n    /**\n     * Retrieve Container\n     */\n    retrieve(containerID, options) {\n        return this._client.get(path `/containers/${containerID}`, options);\n    }\n    /**\n     * List Containers\n     */\n    list(query = {}, options) {\n        return this._client.getAPIList('/containers', (CursorPage), { query, ...options });\n    }\n    /**\n     * Delete Container\n     */\n    delete(containerID, options) {\n        return this._client.delete(path `/containers/${containerID}`, {\n            ...options,\n            headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),\n        });\n    }\n}\nContainers.Files = Files;\n//# sourceMappingURL=containers.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { ConversationCursorPage, } from \"../../core/pagination.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Items extends APIResource {\n    /**\n     * Create items in a conversation with the given ID.\n     */\n    create(conversationID, params, options) {\n        const { include, ...body } = params;\n        return this._client.post(path `/conversations/${conversationID}/items`, {\n            query: { include },\n            body,\n            ...options,\n        });\n    }\n    /**\n     * Get a single item from a conversation with the given IDs.\n     */\n    retrieve(itemID, params, options) {\n        const { conversation_id, ...query } = params;\n        return this._client.get(path `/conversations/${conversation_id}/items/${itemID}`, { query, ...options });\n    }\n    /**\n     * List all items for a conversation with the given ID.\n     */\n    list(conversationID, query = {}, options) {\n        return this._client.getAPIList(path `/conversations/${conversationID}/items`, (ConversationCursorPage), { query, ...options });\n    }\n    /**\n     * Delete an item from a conversation with the given IDs.\n     */\n    delete(itemID, params, options) {\n        const { conversation_id } = params;\n        return this._client.delete(path `/conversations/${conversation_id}/items/${itemID}`, options);\n    }\n}\n//# sourceMappingURL=items.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as ItemsAPI from \"./items.mjs\";\nimport { Items, } from \"./items.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Conversations extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.items = new ItemsAPI.Items(this._client);\n    }\n    /**\n     * Create a conversation with the given ID.\n     */\n    create(body, options) {\n        return this._client.post('/conversations', { body, ...options });\n    }\n    /**\n     * Get a conversation with the given ID.\n     */\n    retrieve(conversationID, options) {\n        return this._client.get(path `/conversations/${conversationID}`, options);\n    }\n    /**\n     * Update a conversation's metadata with the given ID.\n     */\n    update(conversationID, body, options) {\n        return this._client.post(path `/conversations/${conversationID}`, { body, ...options });\n    }\n    /**\n     * Delete a conversation with the given ID.\n     */\n    delete(conversationID, options) {\n        return this._client.delete(path `/conversations/${conversationID}`, options);\n    }\n}\nConversations.Items = Items;\n//# sourceMappingURL=conversations.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nimport { loggerFor, toFloat32Array } from \"../internal/utils.mjs\";\nexport class Embeddings extends APIResource {\n    /**\n     * Creates an embedding vector representing the input text.\n     *\n     * @example\n     * ```ts\n     * const createEmbeddingResponse =\n     *   await client.embeddings.create({\n     *     input: 'The quick brown fox jumped over the lazy dog',\n     *     model: 'text-embedding-3-small',\n     *   });\n     * ```\n     */\n    create(body, options) {\n        const hasUserProvidedEncodingFormat = !!body.encoding_format;\n        // No encoding_format specified, defaulting to base64 for performance reasons\n        // See https://github.com/openai/openai-node/pull/1312\n        let encoding_format = hasUserProvidedEncodingFormat ? body.encoding_format : 'base64';\n        if (hasUserProvidedEncodingFormat) {\n            loggerFor(this._client).debug('embeddings/user defined encoding_format:', body.encoding_format);\n        }\n        const response = this._client.post('/embeddings', {\n            body: {\n                ...body,\n                encoding_format: encoding_format,\n            },\n            ...options,\n        });\n        // if the user specified an encoding_format, return the response as-is\n        if (hasUserProvidedEncodingFormat) {\n            return response;\n        }\n        // in this stage, we are sure the user did not specify an encoding_format\n        // and we defaulted to base64 for performance reasons\n        // we are sure then that the response is base64 encoded, let's decode it\n        // the returned result will be a float32 array since this is OpenAI API's default encoding\n        loggerFor(this._client).debug('embeddings/decoding base64 embeddings from base64');\n        return response._thenUnwrap((response) => {\n            if (response && response.data) {\n                response.data.forEach((embeddingBase64Obj) => {\n                    const embeddingBase64Str = embeddingBase64Obj.embedding;\n                    embeddingBase64Obj.embedding = toFloat32Array(embeddingBase64Str);\n                });\n            }\n            return response;\n        });\n    }\n}\n//# sourceMappingURL=embeddings.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class OutputItems extends APIResource {\n    /**\n     * Get an evaluation run output item by ID.\n     */\n    retrieve(outputItemID, params, options) {\n        const { eval_id, run_id } = params;\n        return this._client.get(path `/evals/${eval_id}/runs/${run_id}/output_items/${outputItemID}`, options);\n    }\n    /**\n     * Get a list of output items for an evaluation run.\n     */\n    list(runID, params, options) {\n        const { eval_id, ...query } = params;\n        return this._client.getAPIList(path `/evals/${eval_id}/runs/${runID}/output_items`, (CursorPage), { query, ...options });\n    }\n}\n//# sourceMappingURL=output-items.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as OutputItemsAPI from \"./output-items.mjs\";\nimport { OutputItems, } from \"./output-items.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Runs extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.outputItems = new OutputItemsAPI.OutputItems(this._client);\n    }\n    /**\n     * Kicks off a new run for a given evaluation, specifying the data source, and what\n     * model configuration to use to test. The datasource will be validated against the\n     * schema specified in the config of the evaluation.\n     */\n    create(evalID, body, options) {\n        return this._client.post(path `/evals/${evalID}/runs`, { body, ...options });\n    }\n    /**\n     * Get an evaluation run by ID.\n     */\n    retrieve(runID, params, options) {\n        const { eval_id } = params;\n        return this._client.get(path `/evals/${eval_id}/runs/${runID}`, options);\n    }\n    /**\n     * Get a list of runs for an evaluation.\n     */\n    list(evalID, query = {}, options) {\n        return this._client.getAPIList(path `/evals/${evalID}/runs`, (CursorPage), {\n            query,\n            ...options,\n        });\n    }\n    /**\n     * Delete an eval run.\n     */\n    delete(runID, params, options) {\n        const { eval_id } = params;\n        return this._client.delete(path `/evals/${eval_id}/runs/${runID}`, options);\n    }\n    /**\n     * Cancel an ongoing evaluation run.\n     */\n    cancel(runID, params, options) {\n        const { eval_id } = params;\n        return this._client.post(path `/evals/${eval_id}/runs/${runID}`, options);\n    }\n}\nRuns.OutputItems = OutputItems;\n//# sourceMappingURL=runs.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as RunsAPI from \"./runs/runs.mjs\";\nimport { Runs, } from \"./runs/runs.mjs\";\nimport { CursorPage } from \"../../core/pagination.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Evals extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.runs = new RunsAPI.Runs(this._client);\n    }\n    /**\n     * Create the structure of an evaluation that can be used to test a model's\n     * performance. An evaluation is a set of testing criteria and the config for a\n     * data source, which dictates the schema of the data used in the evaluation. After\n     * creating an evaluation, you can run it on different models and model parameters.\n     * We support several types of graders and datasources. For more information, see\n     * the [Evals guide](https://platform.openai.com/docs/guides/evals).\n     */\n    create(body, options) {\n        return this._client.post('/evals', { body, ...options });\n    }\n    /**\n     * Get an evaluation by ID.\n     */\n    retrieve(evalID, options) {\n        return this._client.get(path `/evals/${evalID}`, options);\n    }\n    /**\n     * Update certain properties of an evaluation.\n     */\n    update(evalID, body, options) {\n        return this._client.post(path `/evals/${evalID}`, { body, ...options });\n    }\n    /**\n     * List evaluations for a project.\n     */\n    list(query = {}, options) {\n        return this._client.getAPIList('/evals', (CursorPage), { query, ...options });\n    }\n    /**\n     * Delete an evaluation.\n     */\n    delete(evalID, options) {\n        return this._client.delete(path `/evals/${evalID}`, options);\n    }\n}\nEvals.Runs = Runs;\n//# sourceMappingURL=evals.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nimport { CursorPage } from \"../core/pagination.mjs\";\nimport { buildHeaders } from \"../internal/headers.mjs\";\nimport { sleep } from \"../internal/utils/sleep.mjs\";\nimport { APIConnectionTimeoutError } from \"../error.mjs\";\nimport { multipartFormRequestOptions } from \"../internal/uploads.mjs\";\nimport { path } from \"../internal/utils/path.mjs\";\nexport class Files extends APIResource {\n    /**\n     * Upload a file that can be used across various endpoints. Individual files can be\n     * up to 512 MB, and the size of all files uploaded by one organization can be up\n     * to 1 TB.\n     *\n     * The Assistants API supports files up to 2 million tokens and of specific file\n     * types. See the\n     * [Assistants Tools guide](https://platform.openai.com/docs/assistants/tools) for\n     * details.\n     *\n     * The Fine-tuning API only supports `.jsonl` files. The input also has certain\n     * required formats for fine-tuning\n     * [chat](https://platform.openai.com/docs/api-reference/fine-tuning/chat-input) or\n     * [completions](https://platform.openai.com/docs/api-reference/fine-tuning/completions-input)\n     * models.\n     *\n     * The Batch API only supports `.jsonl` files up to 200 MB in size. The input also\n     * has a specific required\n     * [format](https://platform.openai.com/docs/api-reference/batch/request-input).\n     *\n     * Please [contact us](https://help.openai.com/) if you need to increase these\n     * storage limits.\n     */\n    create(body, options) {\n        return this._client.post('/files', multipartFormRequestOptions({ body, ...options }, this._client));\n    }\n    /**\n     * Returns information about a specific file.\n     */\n    retrieve(fileID, options) {\n        return this._client.get(path `/files/${fileID}`, options);\n    }\n    /**\n     * Returns a list of files.\n     */\n    list(query = {}, options) {\n        return this._client.getAPIList('/files', (CursorPage), { query, ...options });\n    }\n    /**\n     * Delete a file.\n     */\n    delete(fileID, options) {\n        return this._client.delete(path `/files/${fileID}`, options);\n    }\n    /**\n     * Returns the contents of the specified file.\n     */\n    content(fileID, options) {\n        return this._client.get(path `/files/${fileID}/content`, {\n            ...options,\n            headers: buildHeaders([{ Accept: 'application/binary' }, options?.headers]),\n            __binaryResponse: true,\n        });\n    }\n    /**\n     * Waits for the given file to be processed, default timeout is 30 mins.\n     */\n    async waitForProcessing(id, { pollInterval = 5000, maxWait = 30 * 60 * 1000 } = {}) {\n        const TERMINAL_STATES = new Set(['processed', 'error', 'deleted']);\n        const start = Date.now();\n        let file = await this.retrieve(id);\n        while (!file.status || !TERMINAL_STATES.has(file.status)) {\n            await sleep(pollInterval);\n            file = await this.retrieve(id);\n            if (Date.now() - start > maxWait) {\n                throw new APIConnectionTimeoutError({\n                    message: `Giving up on waiting for file ${id} to finish processing after ${maxWait} milliseconds.`,\n                });\n            }\n        }\n        return file;\n    }\n}\n//# sourceMappingURL=files.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nexport class Methods extends APIResource {\n}\n//# sourceMappingURL=methods.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nexport class Graders extends APIResource {\n    /**\n     * Run a grader.\n     *\n     * @example\n     * ```ts\n     * const response = await client.fineTuning.alpha.graders.run({\n     *   grader: {\n     *     input: 'input',\n     *     name: 'name',\n     *     operation: 'eq',\n     *     reference: 'reference',\n     *     type: 'string_check',\n     *   },\n     *   model_sample: 'model_sample',\n     * });\n     * ```\n     */\n    run(body, options) {\n        return this._client.post('/fine_tuning/alpha/graders/run', { body, ...options });\n    }\n    /**\n     * Validate a grader.\n     *\n     * @example\n     * ```ts\n     * const response =\n     *   await client.fineTuning.alpha.graders.validate({\n     *     grader: {\n     *       input: 'input',\n     *       name: 'name',\n     *       operation: 'eq',\n     *       reference: 'reference',\n     *       type: 'string_check',\n     *     },\n     *   });\n     * ```\n     */\n    validate(body, options) {\n        return this._client.post('/fine_tuning/alpha/graders/validate', { body, ...options });\n    }\n}\n//# sourceMappingURL=graders.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as GradersAPI from \"./graders.mjs\";\nimport { Graders, } from \"./graders.mjs\";\nexport class Alpha extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.graders = new GradersAPI.Graders(this._client);\n    }\n}\nAlpha.Graders = Graders;\n//# sourceMappingURL=alpha.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { Page } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Permissions extends APIResource {\n    /**\n     * **NOTE:** Calling this endpoint requires an [admin API key](../admin-api-keys).\n     *\n     * This enables organization owners to share fine-tuned models with other projects\n     * in their organization.\n     *\n     * @example\n     * ```ts\n     * // Automatically fetches more pages as needed.\n     * for await (const permissionCreateResponse of client.fineTuning.checkpoints.permissions.create(\n     *   'ft:gpt-4o-mini-2024-07-18:org:weather:B7R9VjQd',\n     *   { project_ids: ['string'] },\n     * )) {\n     *   // ...\n     * }\n     * ```\n     */\n    create(fineTunedModelCheckpoint, body, options) {\n        return this._client.getAPIList(path `/fine_tuning/checkpoints/${fineTunedModelCheckpoint}/permissions`, (Page), { body, method: 'post', ...options });\n    }\n    /**\n     * **NOTE:** This endpoint requires an [admin API key](../admin-api-keys).\n     *\n     * Organization owners can use this endpoint to view all permissions for a\n     * fine-tuned model checkpoint.\n     *\n     * @example\n     * ```ts\n     * const permission =\n     *   await client.fineTuning.checkpoints.permissions.retrieve(\n     *     'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n     *   );\n     * ```\n     */\n    retrieve(fineTunedModelCheckpoint, query = {}, options) {\n        return this._client.get(path `/fine_tuning/checkpoints/${fineTunedModelCheckpoint}/permissions`, {\n            query,\n            ...options,\n        });\n    }\n    /**\n     * **NOTE:** This endpoint requires an [admin API key](../admin-api-keys).\n     *\n     * Organization owners can use this endpoint to delete a permission for a\n     * fine-tuned model checkpoint.\n     *\n     * @example\n     * ```ts\n     * const permission =\n     *   await client.fineTuning.checkpoints.permissions.delete(\n     *     'cp_zc4Q7MP6XxulcVzj4MZdwsAB',\n     *     {\n     *       fine_tuned_model_checkpoint:\n     *         'ft:gpt-4o-mini-2024-07-18:org:weather:B7R9VjQd',\n     *     },\n     *   );\n     * ```\n     */\n    delete(permissionID, params, options) {\n        const { fine_tuned_model_checkpoint } = params;\n        return this._client.delete(path `/fine_tuning/checkpoints/${fine_tuned_model_checkpoint}/permissions/${permissionID}`, options);\n    }\n}\n//# sourceMappingURL=permissions.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as PermissionsAPI from \"./permissions.mjs\";\nimport { Permissions, } from \"./permissions.mjs\";\nexport class Checkpoints extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.permissions = new PermissionsAPI.Permissions(this._client);\n    }\n}\nCheckpoints.Permissions = Permissions;\n//# sourceMappingURL=checkpoints.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Checkpoints extends APIResource {\n    /**\n     * List checkpoints for a fine-tuning job.\n     *\n     * @example\n     * ```ts\n     * // Automatically fetches more pages as needed.\n     * for await (const fineTuningJobCheckpoint of client.fineTuning.jobs.checkpoints.list(\n     *   'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n     * )) {\n     *   // ...\n     * }\n     * ```\n     */\n    list(fineTuningJobID, query = {}, options) {\n        return this._client.getAPIList(path `/fine_tuning/jobs/${fineTuningJobID}/checkpoints`, (CursorPage), { query, ...options });\n    }\n}\n//# sourceMappingURL=checkpoints.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as CheckpointsAPI from \"./checkpoints.mjs\";\nimport { Checkpoints, } from \"./checkpoints.mjs\";\nimport { CursorPage } from \"../../../core/pagination.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Jobs extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.checkpoints = new CheckpointsAPI.Checkpoints(this._client);\n    }\n    /**\n     * Creates a fine-tuning job which begins the process of creating a new model from\n     * a given dataset.\n     *\n     * Response includes details of the enqueued job including job status and the name\n     * of the fine-tuned models once complete.\n     *\n     * [Learn more about fine-tuning](https://platform.openai.com/docs/guides/model-optimization)\n     *\n     * @example\n     * ```ts\n     * const fineTuningJob = await client.fineTuning.jobs.create({\n     *   model: 'gpt-4o-mini',\n     *   training_file: 'file-abc123',\n     * });\n     * ```\n     */\n    create(body, options) {\n        return this._client.post('/fine_tuning/jobs', { body, ...options });\n    }\n    /**\n     * Get info about a fine-tuning job.\n     *\n     * [Learn more about fine-tuning](https://platform.openai.com/docs/guides/model-optimization)\n     *\n     * @example\n     * ```ts\n     * const fineTuningJob = await client.fineTuning.jobs.retrieve(\n     *   'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n     * );\n     * ```\n     */\n    retrieve(fineTuningJobID, options) {\n        return this._client.get(path `/fine_tuning/jobs/${fineTuningJobID}`, options);\n    }\n    /**\n     * List your organization's fine-tuning jobs\n     *\n     * @example\n     * ```ts\n     * // Automatically fetches more pages as needed.\n     * for await (const fineTuningJob of client.fineTuning.jobs.list()) {\n     *   // ...\n     * }\n     * ```\n     */\n    list(query = {}, options) {\n        return this._client.getAPIList('/fine_tuning/jobs', (CursorPage), { query, ...options });\n    }\n    /**\n     * Immediately cancel a fine-tune job.\n     *\n     * @example\n     * ```ts\n     * const fineTuningJob = await client.fineTuning.jobs.cancel(\n     *   'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n     * );\n     * ```\n     */\n    cancel(fineTuningJobID, options) {\n        return this._client.post(path `/fine_tuning/jobs/${fineTuningJobID}/cancel`, options);\n    }\n    /**\n     * Get status updates for a fine-tuning job.\n     *\n     * @example\n     * ```ts\n     * // Automatically fetches more pages as needed.\n     * for await (const fineTuningJobEvent of client.fineTuning.jobs.listEvents(\n     *   'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n     * )) {\n     *   // ...\n     * }\n     * ```\n     */\n    listEvents(fineTuningJobID, query = {}, options) {\n        return this._client.getAPIList(path `/fine_tuning/jobs/${fineTuningJobID}/events`, (CursorPage), { query, ...options });\n    }\n    /**\n     * Pause a fine-tune job.\n     *\n     * @example\n     * ```ts\n     * const fineTuningJob = await client.fineTuning.jobs.pause(\n     *   'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n     * );\n     * ```\n     */\n    pause(fineTuningJobID, options) {\n        return this._client.post(path `/fine_tuning/jobs/${fineTuningJobID}/pause`, options);\n    }\n    /**\n     * Resume a fine-tune job.\n     *\n     * @example\n     * ```ts\n     * const fineTuningJob = await client.fineTuning.jobs.resume(\n     *   'ft-AF1WoRqd3aJAHsqc9NY7iL8F',\n     * );\n     * ```\n     */\n    resume(fineTuningJobID, options) {\n        return this._client.post(path `/fine_tuning/jobs/${fineTuningJobID}/resume`, options);\n    }\n}\nJobs.Checkpoints = Checkpoints;\n//# sourceMappingURL=jobs.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as MethodsAPI from \"./methods.mjs\";\nimport { Methods, } from \"./methods.mjs\";\nimport * as AlphaAPI from \"./alpha/alpha.mjs\";\nimport { Alpha } from \"./alpha/alpha.mjs\";\nimport * as CheckpointsAPI from \"./checkpoints/checkpoints.mjs\";\nimport { Checkpoints } from \"./checkpoints/checkpoints.mjs\";\nimport * as JobsAPI from \"./jobs/jobs.mjs\";\nimport { Jobs, } from \"./jobs/jobs.mjs\";\nexport class FineTuning extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.methods = new MethodsAPI.Methods(this._client);\n        this.jobs = new JobsAPI.Jobs(this._client);\n        this.checkpoints = new CheckpointsAPI.Checkpoints(this._client);\n        this.alpha = new AlphaAPI.Alpha(this._client);\n    }\n}\nFineTuning.Methods = Methods;\nFineTuning.Jobs = Jobs;\nFineTuning.Checkpoints = Checkpoints;\nFineTuning.Alpha = Alpha;\n//# sourceMappingURL=fine-tuning.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nexport class GraderModels extends APIResource {\n}\n//# sourceMappingURL=grader-models.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as GraderModelsAPI from \"./grader-models.mjs\";\nimport { GraderModels, } from \"./grader-models.mjs\";\nexport class Graders extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.graderModels = new GraderModelsAPI.GraderModels(this._client);\n    }\n}\nGraders.GraderModels = GraderModels;\n//# sourceMappingURL=graders.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nimport { multipartFormRequestOptions } from \"../internal/uploads.mjs\";\nexport class Images extends APIResource {\n    /**\n     * Creates a variation of a given image. This endpoint only supports `dall-e-2`.\n     *\n     * @example\n     * ```ts\n     * const imagesResponse = await client.images.createVariation({\n     *   image: fs.createReadStream('otter.png'),\n     * });\n     * ```\n     */\n    createVariation(body, options) {\n        return this._client.post('/images/variations', multipartFormRequestOptions({ body, ...options }, this._client));\n    }\n    edit(body, options) {\n        return this._client.post('/images/edits', multipartFormRequestOptions({ body, ...options, stream: body.stream ?? false }, this._client));\n    }\n    generate(body, options) {\n        return this._client.post('/images/generations', { body, ...options, stream: body.stream ?? false });\n    }\n}\n//# sourceMappingURL=images.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nimport { Page } from \"../core/pagination.mjs\";\nimport { path } from \"../internal/utils/path.mjs\";\nexport class Models extends APIResource {\n    /**\n     * Retrieves a model instance, providing basic information about the model such as\n     * the owner and permissioning.\n     */\n    retrieve(model, options) {\n        return this._client.get(path `/models/${model}`, options);\n    }\n    /**\n     * Lists the currently available models, and provides basic information about each\n     * one such as the owner and availability.\n     */\n    list(options) {\n        return this._client.getAPIList('/models', (Page), options);\n    }\n    /**\n     * Delete a fine-tuned model. You must have the Owner role in your organization to\n     * delete a model.\n     */\n    delete(model, options) {\n        return this._client.delete(path `/models/${model}`, options);\n    }\n}\n//# sourceMappingURL=models.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../core/resource.mjs\";\nexport class Moderations extends APIResource {\n    /**\n     * Classifies if text and/or image inputs are potentially harmful. Learn more in\n     * the [moderation guide](https://platform.openai.com/docs/guides/moderation).\n     */\n    create(body, options) {\n        return this._client.post('/moderations', { body, ...options });\n    }\n}\n//# sourceMappingURL=moderations.mjs.map","import { OpenAIError } from \"../error.mjs\";\nimport { isAutoParsableResponseFormat } from \"../lib/parser.mjs\";\nexport function maybeParseResponse(response, params) {\n    if (!params || !hasAutoParseableInput(params)) {\n        return {\n            ...response,\n            output_parsed: null,\n            output: response.output.map((item) => {\n                if (item.type === 'function_call') {\n                    return {\n                        ...item,\n                        parsed_arguments: null,\n                    };\n                }\n                if (item.type === 'message') {\n                    return {\n                        ...item,\n                        content: item.content.map((content) => ({\n                            ...content,\n                            parsed: null,\n                        })),\n                    };\n                }\n                else {\n                    return item;\n                }\n            }),\n        };\n    }\n    return parseResponse(response, params);\n}\nexport function parseResponse(response, params) {\n    const output = response.output.map((item) => {\n        if (item.type === 'function_call') {\n            return {\n                ...item,\n                parsed_arguments: parseToolCall(params, item),\n            };\n        }\n        if (item.type === 'message') {\n            const content = item.content.map((content) => {\n                if (content.type === 'output_text') {\n                    return {\n                        ...content,\n                        parsed: parseTextFormat(params, content.text),\n                    };\n                }\n                return content;\n            });\n            return {\n                ...item,\n                content,\n            };\n        }\n        return item;\n    });\n    const parsed = Object.assign({}, response, { output });\n    if (!Object.getOwnPropertyDescriptor(response, 'output_text')) {\n        addOutputText(parsed);\n    }\n    Object.defineProperty(parsed, 'output_parsed', {\n        enumerable: true,\n        get() {\n            for (const output of parsed.output) {\n                if (output.type !== 'message') {\n                    continue;\n                }\n                for (const content of output.content) {\n                    if (content.type === 'output_text' && content.parsed !== null) {\n                        return content.parsed;\n                    }\n                }\n            }\n            return null;\n        },\n    });\n    return parsed;\n}\nfunction parseTextFormat(params, content) {\n    if (params.text?.format?.type !== 'json_schema') {\n        return null;\n    }\n    if ('$parseRaw' in params.text?.format) {\n        const text_format = params.text?.format;\n        return text_format.$parseRaw(content);\n    }\n    return JSON.parse(content);\n}\nexport function hasAutoParseableInput(params) {\n    if (isAutoParsableResponseFormat(params.text?.format)) {\n        return true;\n    }\n    return false;\n}\nexport function makeParseableResponseTool(tool, { parser, callback, }) {\n    const obj = { ...tool };\n    Object.defineProperties(obj, {\n        $brand: {\n            value: 'auto-parseable-tool',\n            enumerable: false,\n        },\n        $parseRaw: {\n            value: parser,\n            enumerable: false,\n        },\n        $callback: {\n            value: callback,\n            enumerable: false,\n        },\n    });\n    return obj;\n}\nexport function isAutoParsableTool(tool) {\n    return tool?.['$brand'] === 'auto-parseable-tool';\n}\nfunction getInputToolByName(input_tools, name) {\n    return input_tools.find((tool) => tool.type === 'function' && tool.name === name);\n}\nfunction parseToolCall(params, toolCall) {\n    const inputTool = getInputToolByName(params.tools ?? [], toolCall.name);\n    return {\n        ...toolCall,\n        ...toolCall,\n        parsed_arguments: isAutoParsableTool(inputTool) ? inputTool.$parseRaw(toolCall.arguments)\n            : inputTool?.strict ? JSON.parse(toolCall.arguments)\n                : null,\n    };\n}\nexport function shouldParseToolCall(params, toolCall) {\n    if (!params) {\n        return false;\n    }\n    const inputTool = getInputToolByName(params.tools ?? [], toolCall.name);\n    return isAutoParsableTool(inputTool) || inputTool?.strict || false;\n}\nexport function validateInputTools(tools) {\n    for (const tool of tools ?? []) {\n        if (tool.type !== 'function') {\n            throw new OpenAIError(`Currently only \\`function\\` tool types support auto-parsing; Received \\`${tool.type}\\``);\n        }\n        if (tool.function.strict !== true) {\n            throw new OpenAIError(`The \\`${tool.function.name}\\` tool is not marked with \\`strict: true\\`. Only strict function tools can be auto-parsed`);\n        }\n    }\n}\nexport function addOutputText(rsp) {\n    const texts = [];\n    for (const output of rsp.output) {\n        if (output.type !== 'message') {\n            continue;\n        }\n        for (const content of output.content) {\n            if (content.type === 'output_text') {\n                texts.push(content.text);\n            }\n        }\n    }\n    rsp.output_text = texts.join('');\n}\n//# sourceMappingURL=ResponsesParser.mjs.map","var _ResponseStream_instances, _ResponseStream_params, _ResponseStream_currentResponseSnapshot, _ResponseStream_finalResponse, _ResponseStream_beginRequest, _ResponseStream_addEvent, _ResponseStream_endRequest, _ResponseStream_accumulateResponse;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../../internal/tslib.mjs\";\nimport { APIUserAbortError, OpenAIError } from \"../../error.mjs\";\nimport { EventStream } from \"../EventStream.mjs\";\nimport { maybeParseResponse } from \"../ResponsesParser.mjs\";\nexport class ResponseStream extends EventStream {\n    constructor(params) {\n        super();\n        _ResponseStream_instances.add(this);\n        _ResponseStream_params.set(this, void 0);\n        _ResponseStream_currentResponseSnapshot.set(this, void 0);\n        _ResponseStream_finalResponse.set(this, void 0);\n        __classPrivateFieldSet(this, _ResponseStream_params, params, \"f\");\n    }\n    static createResponse(client, params, options) {\n        const runner = new ResponseStream(params);\n        runner._run(() => runner._createOrRetrieveResponse(client, params, {\n            ...options,\n            headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' },\n        }));\n        return runner;\n    }\n    async _createOrRetrieveResponse(client, params, options) {\n        const signal = options?.signal;\n        if (signal) {\n            if (signal.aborted)\n                this.controller.abort();\n            signal.addEventListener('abort', () => this.controller.abort());\n        }\n        __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_beginRequest).call(this);\n        let stream;\n        let starting_after = null;\n        if ('response_id' in params) {\n            stream = await client.responses.retrieve(params.response_id, { stream: true }, { ...options, signal: this.controller.signal, stream: true });\n            starting_after = params.starting_after ?? null;\n        }\n        else {\n            stream = await client.responses.create({ ...params, stream: true }, { ...options, signal: this.controller.signal });\n        }\n        this._connected();\n        for await (const event of stream) {\n            __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_addEvent).call(this, event, starting_after);\n        }\n        if (stream.controller.signal?.aborted) {\n            throw new APIUserAbortError();\n        }\n        return __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_endRequest).call(this);\n    }\n    [(_ResponseStream_params = new WeakMap(), _ResponseStream_currentResponseSnapshot = new WeakMap(), _ResponseStream_finalResponse = new WeakMap(), _ResponseStream_instances = new WeakSet(), _ResponseStream_beginRequest = function _ResponseStream_beginRequest() {\n        if (this.ended)\n            return;\n        __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, undefined, \"f\");\n    }, _ResponseStream_addEvent = function _ResponseStream_addEvent(event, starting_after) {\n        if (this.ended)\n            return;\n        const maybeEmit = (name, event) => {\n            if (starting_after == null || event.sequence_number > starting_after) {\n                this._emit(name, event);\n            }\n        };\n        const response = __classPrivateFieldGet(this, _ResponseStream_instances, \"m\", _ResponseStream_accumulateResponse).call(this, event);\n        maybeEmit('event', event);\n        switch (event.type) {\n            case 'response.output_text.delta': {\n                const output = response.output[event.output_index];\n                if (!output) {\n                    throw new OpenAIError(`missing output at index ${event.output_index}`);\n                }\n                if (output.type === 'message') {\n                    const content = output.content[event.content_index];\n                    if (!content) {\n                        throw new OpenAIError(`missing content at index ${event.content_index}`);\n                    }\n                    if (content.type !== 'output_text') {\n                        throw new OpenAIError(`expected content to be 'output_text', got ${content.type}`);\n                    }\n                    maybeEmit('response.output_text.delta', {\n                        ...event,\n                        snapshot: content.text,\n                    });\n                }\n                break;\n            }\n            case 'response.function_call_arguments.delta': {\n                const output = response.output[event.output_index];\n                if (!output) {\n                    throw new OpenAIError(`missing output at index ${event.output_index}`);\n                }\n                if (output.type === 'function_call') {\n                    maybeEmit('response.function_call_arguments.delta', {\n                        ...event,\n                        snapshot: output.arguments,\n                    });\n                }\n                break;\n            }\n            default:\n                maybeEmit(event.type, event);\n                break;\n        }\n    }, _ResponseStream_endRequest = function _ResponseStream_endRequest() {\n        if (this.ended) {\n            throw new OpenAIError(`stream has ended, this shouldn't happen`);\n        }\n        const snapshot = __classPrivateFieldGet(this, _ResponseStream_currentResponseSnapshot, \"f\");\n        if (!snapshot) {\n            throw new OpenAIError(`request ended without sending any events`);\n        }\n        __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, undefined, \"f\");\n        const parsedResponse = finalizeResponse(snapshot, __classPrivateFieldGet(this, _ResponseStream_params, \"f\"));\n        __classPrivateFieldSet(this, _ResponseStream_finalResponse, parsedResponse, \"f\");\n        return parsedResponse;\n    }, _ResponseStream_accumulateResponse = function _ResponseStream_accumulateResponse(event) {\n        let snapshot = __classPrivateFieldGet(this, _ResponseStream_currentResponseSnapshot, \"f\");\n        if (!snapshot) {\n            if (event.type !== 'response.created') {\n                throw new OpenAIError(`When snapshot hasn't been set yet, expected 'response.created' event, got ${event.type}`);\n            }\n            snapshot = __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, event.response, \"f\");\n            return snapshot;\n        }\n        switch (event.type) {\n            case 'response.output_item.added': {\n                snapshot.output.push(event.item);\n                break;\n            }\n            case 'response.content_part.added': {\n                const output = snapshot.output[event.output_index];\n                if (!output) {\n                    throw new OpenAIError(`missing output at index ${event.output_index}`);\n                }\n                if (output.type === 'message') {\n                    output.content.push(event.part);\n                }\n                break;\n            }\n            case 'response.output_text.delta': {\n                const output = snapshot.output[event.output_index];\n                if (!output) {\n                    throw new OpenAIError(`missing output at index ${event.output_index}`);\n                }\n                if (output.type === 'message') {\n                    const content = output.content[event.content_index];\n                    if (!content) {\n                        throw new OpenAIError(`missing content at index ${event.content_index}`);\n                    }\n                    if (content.type !== 'output_text') {\n                        throw new OpenAIError(`expected content to be 'output_text', got ${content.type}`);\n                    }\n                    content.text += event.delta;\n                }\n                break;\n            }\n            case 'response.function_call_arguments.delta': {\n                const output = snapshot.output[event.output_index];\n                if (!output) {\n                    throw new OpenAIError(`missing output at index ${event.output_index}`);\n                }\n                if (output.type === 'function_call') {\n                    output.arguments += event.delta;\n                }\n                break;\n            }\n            case 'response.completed': {\n                __classPrivateFieldSet(this, _ResponseStream_currentResponseSnapshot, event.response, \"f\");\n                break;\n            }\n        }\n        return snapshot;\n    }, Symbol.asyncIterator)]() {\n        const pushQueue = [];\n        const readQueue = [];\n        let done = false;\n        this.on('event', (event) => {\n            const reader = readQueue.shift();\n            if (reader) {\n                reader.resolve(event);\n            }\n            else {\n                pushQueue.push(event);\n            }\n        });\n        this.on('end', () => {\n            done = true;\n            for (const reader of readQueue) {\n                reader.resolve(undefined);\n            }\n            readQueue.length = 0;\n        });\n        this.on('abort', (err) => {\n            done = true;\n            for (const reader of readQueue) {\n                reader.reject(err);\n            }\n            readQueue.length = 0;\n        });\n        this.on('error', (err) => {\n            done = true;\n            for (const reader of readQueue) {\n                reader.reject(err);\n            }\n            readQueue.length = 0;\n        });\n        return {\n            next: async () => {\n                if (!pushQueue.length) {\n                    if (done) {\n                        return { value: undefined, done: true };\n                    }\n                    return new Promise((resolve, reject) => readQueue.push({ resolve, reject })).then((event) => (event ? { value: event, done: false } : { value: undefined, done: true }));\n                }\n                const event = pushQueue.shift();\n                return { value: event, done: false };\n            },\n            return: async () => {\n                this.abort();\n                return { value: undefined, done: true };\n            },\n        };\n    }\n    /**\n     * @returns a promise that resolves with the final Response, or rejects\n     * if an error occurred or the stream ended prematurely without producing a REsponse.\n     */\n    async finalResponse() {\n        await this.done();\n        const response = __classPrivateFieldGet(this, _ResponseStream_finalResponse, \"f\");\n        if (!response)\n            throw new OpenAIError('stream ended without producing a ChatCompletion');\n        return response;\n    }\n}\nfunction finalizeResponse(snapshot, params) {\n    return maybeParseResponse(snapshot, params);\n}\n//# sourceMappingURL=ResponseStream.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { CursorPage } from \"../../core/pagination.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class InputItems extends APIResource {\n    /**\n     * Returns a list of input items for a given response.\n     *\n     * @example\n     * ```ts\n     * // Automatically fetches more pages as needed.\n     * for await (const responseItem of client.responses.inputItems.list(\n     *   'response_id',\n     * )) {\n     *   // ...\n     * }\n     * ```\n     */\n    list(responseID, query = {}, options) {\n        return this._client.getAPIList(path `/responses/${responseID}/input_items`, (CursorPage), { query, ...options });\n    }\n}\n//# sourceMappingURL=input-items.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { parseResponse, addOutputText, } from \"../../lib/ResponsesParser.mjs\";\nimport { ResponseStream } from \"../../lib/responses/ResponseStream.mjs\";\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as InputItemsAPI from \"./input-items.mjs\";\nimport { InputItems } from \"./input-items.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Responses extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.inputItems = new InputItemsAPI.InputItems(this._client);\n    }\n    create(body, options) {\n        return this._client.post('/responses', { body, ...options, stream: body.stream ?? false })._thenUnwrap((rsp) => {\n            if ('object' in rsp && rsp.object === 'response') {\n                addOutputText(rsp);\n            }\n            return rsp;\n        });\n    }\n    retrieve(responseID, query = {}, options) {\n        return this._client.get(path `/responses/${responseID}`, {\n            query,\n            ...options,\n            stream: query?.stream ?? false,\n        })._thenUnwrap((rsp) => {\n            if ('object' in rsp && rsp.object === 'response') {\n                addOutputText(rsp);\n            }\n            return rsp;\n        });\n    }\n    /**\n     * Deletes a model response with the given ID.\n     *\n     * @example\n     * ```ts\n     * await client.responses.delete(\n     *   'resp_677efb5139a88190b512bc3fef8e535d',\n     * );\n     * ```\n     */\n    delete(responseID, options) {\n        return this._client.delete(path `/responses/${responseID}`, {\n            ...options,\n            headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),\n        });\n    }\n    parse(body, options) {\n        return this._client.responses\n            .create(body, options)\n            ._thenUnwrap((response) => parseResponse(response, body));\n    }\n    /**\n     * Creates a model response stream\n     */\n    stream(body, options) {\n        return ResponseStream.createResponse(this._client, body, options);\n    }\n    /**\n     * Cancels a model response with the given ID. Only responses created with the\n     * `background` parameter set to `true` can be cancelled.\n     * [Learn more](https://platform.openai.com/docs/guides/background).\n     *\n     * @example\n     * ```ts\n     * const response = await client.responses.cancel(\n     *   'resp_677efb5139a88190b512bc3fef8e535d',\n     * );\n     * ```\n     */\n    cancel(responseID, options) {\n        return this._client.post(path `/responses/${responseID}/cancel`, options);\n    }\n}\nResponses.InputItems = InputItems;\n//# sourceMappingURL=responses.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { multipartFormRequestOptions } from \"../../internal/uploads.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Parts extends APIResource {\n    /**\n     * Adds a\n     * [Part](https://platform.openai.com/docs/api-reference/uploads/part-object) to an\n     * [Upload](https://platform.openai.com/docs/api-reference/uploads/object) object.\n     * A Part represents a chunk of bytes from the file you are trying to upload.\n     *\n     * Each Part can be at most 64 MB, and you can add Parts until you hit the Upload\n     * maximum of 8 GB.\n     *\n     * It is possible to add multiple Parts in parallel. You can decide the intended\n     * order of the Parts when you\n     * [complete the Upload](https://platform.openai.com/docs/api-reference/uploads/complete).\n     */\n    create(uploadID, body, options) {\n        return this._client.post(path `/uploads/${uploadID}/parts`, multipartFormRequestOptions({ body, ...options }, this._client));\n    }\n}\n//# sourceMappingURL=parts.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as PartsAPI from \"./parts.mjs\";\nimport { Parts } from \"./parts.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Uploads extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.parts = new PartsAPI.Parts(this._client);\n    }\n    /**\n     * Creates an intermediate\n     * [Upload](https://platform.openai.com/docs/api-reference/uploads/object) object\n     * that you can add\n     * [Parts](https://platform.openai.com/docs/api-reference/uploads/part-object) to.\n     * Currently, an Upload can accept at most 8 GB in total and expires after an hour\n     * after you create it.\n     *\n     * Once you complete the Upload, we will create a\n     * [File](https://platform.openai.com/docs/api-reference/files/object) object that\n     * contains all the parts you uploaded. This File is usable in the rest of our\n     * platform as a regular File object.\n     *\n     * For certain `purpose` values, the correct `mime_type` must be specified. Please\n     * refer to documentation for the\n     * [supported MIME types for your use case](https://platform.openai.com/docs/assistants/tools/file-search#supported-files).\n     *\n     * For guidance on the proper filename extensions for each purpose, please follow\n     * the documentation on\n     * [creating a File](https://platform.openai.com/docs/api-reference/files/create).\n     */\n    create(body, options) {\n        return this._client.post('/uploads', { body, ...options });\n    }\n    /**\n     * Cancels the Upload. No Parts may be added after an Upload is cancelled.\n     */\n    cancel(uploadID, options) {\n        return this._client.post(path `/uploads/${uploadID}/cancel`, options);\n    }\n    /**\n     * Completes the\n     * [Upload](https://platform.openai.com/docs/api-reference/uploads/object).\n     *\n     * Within the returned Upload object, there is a nested\n     * [File](https://platform.openai.com/docs/api-reference/files/object) object that\n     * is ready to use in the rest of the platform.\n     *\n     * You can specify the order of the Parts by passing in an ordered list of the Part\n     * IDs.\n     *\n     * The number of bytes uploaded upon completion must match the number of bytes\n     * initially specified when creating the Upload object. No Parts may be added after\n     * an Upload is completed.\n     */\n    complete(uploadID, body, options) {\n        return this._client.post(path `/uploads/${uploadID}/complete`, { body, ...options });\n    }\n}\nUploads.Parts = Parts;\n//# sourceMappingURL=uploads.mjs.map","/**\n * Like `Promise.allSettled()` but throws an error if any promises are rejected.\n */\nexport const allSettledWithThrow = async (promises) => {\n    const results = await Promise.allSettled(promises);\n    const rejected = results.filter((result) => result.status === 'rejected');\n    if (rejected.length) {\n        for (const result of rejected) {\n            console.error(result.reason);\n        }\n        throw new Error(`${rejected.length} promise(s) failed - see the above errors`);\n    }\n    // Note: TS was complaining about using `.filter().map()` here for some reason\n    const values = [];\n    for (const result of results) {\n        if (result.status === 'fulfilled') {\n            values.push(result.value);\n        }\n    }\n    return values;\n};\n//# sourceMappingURL=Util.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { CursorPage } from \"../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { sleep } from \"../../internal/utils/sleep.mjs\";\nimport { allSettledWithThrow } from \"../../lib/Util.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class FileBatches extends APIResource {\n    /**\n     * Create a vector store file batch.\n     */\n    create(vectorStoreID, body, options) {\n        return this._client.post(path `/vector_stores/${vectorStoreID}/file_batches`, {\n            body,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Retrieves a vector store file batch.\n     */\n    retrieve(batchID, params, options) {\n        const { vector_store_id } = params;\n        return this._client.get(path `/vector_stores/${vector_store_id}/file_batches/${batchID}`, {\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Cancel a vector store file batch. This attempts to cancel the processing of\n     * files in this batch as soon as possible.\n     */\n    cancel(batchID, params, options) {\n        const { vector_store_id } = params;\n        return this._client.post(path `/vector_stores/${vector_store_id}/file_batches/${batchID}/cancel`, {\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Create a vector store batch and poll until all files have been processed.\n     */\n    async createAndPoll(vectorStoreId, body, options) {\n        const batch = await this.create(vectorStoreId, body);\n        return await this.poll(vectorStoreId, batch.id, options);\n    }\n    /**\n     * Returns a list of vector store files in a batch.\n     */\n    listFiles(batchID, params, options) {\n        const { vector_store_id, ...query } = params;\n        return this._client.getAPIList(path `/vector_stores/${vector_store_id}/file_batches/${batchID}/files`, (CursorPage), { query, ...options, headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]) });\n    }\n    /**\n     * Wait for the given file batch to be processed.\n     *\n     * Note: this will return even if one of the files failed to process, you need to\n     * check batch.file_counts.failed_count to handle this case.\n     */\n    async poll(vectorStoreID, batchID, options) {\n        const headers = buildHeaders([\n            options?.headers,\n            {\n                'X-Stainless-Poll-Helper': 'true',\n                'X-Stainless-Custom-Poll-Interval': options?.pollIntervalMs?.toString() ?? undefined,\n            },\n        ]);\n        while (true) {\n            const { data: batch, response } = await this.retrieve(batchID, { vector_store_id: vectorStoreID }, {\n                ...options,\n                headers,\n            }).withResponse();\n            switch (batch.status) {\n                case 'in_progress':\n                    let sleepInterval = 5000;\n                    if (options?.pollIntervalMs) {\n                        sleepInterval = options.pollIntervalMs;\n                    }\n                    else {\n                        const headerInterval = response.headers.get('openai-poll-after-ms');\n                        if (headerInterval) {\n                            const headerIntervalMs = parseInt(headerInterval);\n                            if (!isNaN(headerIntervalMs)) {\n                                sleepInterval = headerIntervalMs;\n                            }\n                        }\n                    }\n                    await sleep(sleepInterval);\n                    break;\n                case 'failed':\n                case 'cancelled':\n                case 'completed':\n                    return batch;\n            }\n        }\n    }\n    /**\n     * Uploads the given files concurrently and then creates a vector store file batch.\n     *\n     * The concurrency limit is configurable using the `maxConcurrency` parameter.\n     */\n    async uploadAndPoll(vectorStoreId, { files, fileIds = [] }, options) {\n        if (files == null || files.length == 0) {\n            throw new Error(`No \\`files\\` provided to process. If you've already uploaded files you should use \\`.createAndPoll()\\` instead`);\n        }\n        const configuredConcurrency = options?.maxConcurrency ?? 5;\n        // We cap the number of workers at the number of files (so we don't start any unnecessary workers)\n        const concurrencyLimit = Math.min(configuredConcurrency, files.length);\n        const client = this._client;\n        const fileIterator = files.values();\n        const allFileIds = [...fileIds];\n        // This code is based on this design. The libraries don't accommodate our environment limits.\n        // https://stackoverflow.com/questions/40639432/what-is-the-best-way-to-limit-concurrency-when-using-es6s-promise-all\n        async function processFiles(iterator) {\n            for (let item of iterator) {\n                const fileObj = await client.files.create({ file: item, purpose: 'assistants' }, options);\n                allFileIds.push(fileObj.id);\n            }\n        }\n        // Start workers to process results\n        const workers = Array(concurrencyLimit).fill(fileIterator).map(processFiles);\n        // Wait for all processing to complete.\n        await allSettledWithThrow(workers);\n        return await this.createAndPoll(vectorStoreId, {\n            file_ids: allFileIds,\n        });\n    }\n}\n//# sourceMappingURL=file-batches.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport { CursorPage, Page } from \"../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { sleep } from \"../../internal/utils.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Files extends APIResource {\n    /**\n     * Create a vector store file by attaching a\n     * [File](https://platform.openai.com/docs/api-reference/files) to a\n     * [vector store](https://platform.openai.com/docs/api-reference/vector-stores/object).\n     */\n    create(vectorStoreID, body, options) {\n        return this._client.post(path `/vector_stores/${vectorStoreID}/files`, {\n            body,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Retrieves a vector store file.\n     */\n    retrieve(fileID, params, options) {\n        const { vector_store_id } = params;\n        return this._client.get(path `/vector_stores/${vector_store_id}/files/${fileID}`, {\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Update attributes on a vector store file.\n     */\n    update(fileID, params, options) {\n        const { vector_store_id, ...body } = params;\n        return this._client.post(path `/vector_stores/${vector_store_id}/files/${fileID}`, {\n            body,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Returns a list of vector store files.\n     */\n    list(vectorStoreID, query = {}, options) {\n        return this._client.getAPIList(path `/vector_stores/${vectorStoreID}/files`, (CursorPage), {\n            query,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Delete a vector store file. This will remove the file from the vector store but\n     * the file itself will not be deleted. To delete the file, use the\n     * [delete file](https://platform.openai.com/docs/api-reference/files/delete)\n     * endpoint.\n     */\n    delete(fileID, params, options) {\n        const { vector_store_id } = params;\n        return this._client.delete(path `/vector_stores/${vector_store_id}/files/${fileID}`, {\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Attach a file to the given vector store and wait for it to be processed.\n     */\n    async createAndPoll(vectorStoreId, body, options) {\n        const file = await this.create(vectorStoreId, body, options);\n        return await this.poll(vectorStoreId, file.id, options);\n    }\n    /**\n     * Wait for the vector store file to finish processing.\n     *\n     * Note: this will return even if the file failed to process, you need to check\n     * file.last_error and file.status to handle these cases\n     */\n    async poll(vectorStoreID, fileID, options) {\n        const headers = buildHeaders([\n            options?.headers,\n            {\n                'X-Stainless-Poll-Helper': 'true',\n                'X-Stainless-Custom-Poll-Interval': options?.pollIntervalMs?.toString() ?? undefined,\n            },\n        ]);\n        while (true) {\n            const fileResponse = await this.retrieve(fileID, {\n                vector_store_id: vectorStoreID,\n            }, { ...options, headers }).withResponse();\n            const file = fileResponse.data;\n            switch (file.status) {\n                case 'in_progress':\n                    let sleepInterval = 5000;\n                    if (options?.pollIntervalMs) {\n                        sleepInterval = options.pollIntervalMs;\n                    }\n                    else {\n                        const headerInterval = fileResponse.response.headers.get('openai-poll-after-ms');\n                        if (headerInterval) {\n                            const headerIntervalMs = parseInt(headerInterval);\n                            if (!isNaN(headerIntervalMs)) {\n                                sleepInterval = headerIntervalMs;\n                            }\n                        }\n                    }\n                    await sleep(sleepInterval);\n                    break;\n                case 'failed':\n                case 'completed':\n                    return file;\n            }\n        }\n    }\n    /**\n     * Upload a file to the `files` API and then attach it to the given vector store.\n     *\n     * Note the file will be asynchronously processed (you can use the alternative\n     * polling helper method to wait for processing to complete).\n     */\n    async upload(vectorStoreId, file, options) {\n        const fileInfo = await this._client.files.create({ file: file, purpose: 'assistants' }, options);\n        return this.create(vectorStoreId, { file_id: fileInfo.id }, options);\n    }\n    /**\n     * Add a file to a vector store and poll until processing is complete.\n     */\n    async uploadAndPoll(vectorStoreId, file, options) {\n        const fileInfo = await this.upload(vectorStoreId, file, options);\n        return await this.poll(vectorStoreId, fileInfo.id, options);\n    }\n    /**\n     * Retrieve the parsed contents of a vector store file.\n     */\n    content(fileID, params, options) {\n        const { vector_store_id } = params;\n        return this._client.getAPIList(path `/vector_stores/${vector_store_id}/files/${fileID}/content`, (Page), { ...options, headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]) });\n    }\n}\n//# sourceMappingURL=files.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../core/resource.mjs\";\nimport * as FileBatchesAPI from \"./file-batches.mjs\";\nimport { FileBatches, } from \"./file-batches.mjs\";\nimport * as FilesAPI from \"./files.mjs\";\nimport { Files, } from \"./files.mjs\";\nimport { CursorPage, Page } from \"../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class VectorStores extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.files = new FilesAPI.Files(this._client);\n        this.fileBatches = new FileBatchesAPI.FileBatches(this._client);\n    }\n    /**\n     * Create a vector store.\n     */\n    create(body, options) {\n        return this._client.post('/vector_stores', {\n            body,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Retrieves a vector store.\n     */\n    retrieve(vectorStoreID, options) {\n        return this._client.get(path `/vector_stores/${vectorStoreID}`, {\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Modifies a vector store.\n     */\n    update(vectorStoreID, body, options) {\n        return this._client.post(path `/vector_stores/${vectorStoreID}`, {\n            body,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Returns a list of vector stores.\n     */\n    list(query = {}, options) {\n        return this._client.getAPIList('/vector_stores', (CursorPage), {\n            query,\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Delete a vector store.\n     */\n    delete(vectorStoreID, options) {\n        return this._client.delete(path `/vector_stores/${vectorStoreID}`, {\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n    /**\n     * Search a vector store for relevant chunks based on a query and file attributes\n     * filter.\n     */\n    search(vectorStoreID, body, options) {\n        return this._client.getAPIList(path `/vector_stores/${vectorStoreID}/search`, (Page), {\n            body,\n            method: 'post',\n            ...options,\n            headers: buildHeaders([{ 'OpenAI-Beta': 'assistants=v2' }, options?.headers]),\n        });\n    }\n}\nVectorStores.Files = Files;\nVectorStores.FileBatches = FileBatches;\n//# sourceMappingURL=vector-stores.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar _Webhooks_instances, _Webhooks_validateSecret, _Webhooks_getRequiredHeader;\nimport { __classPrivateFieldGet } from \"../internal/tslib.mjs\";\nimport { InvalidWebhookSignatureError } from \"../error.mjs\";\nimport { APIResource } from \"../core/resource.mjs\";\nimport { buildHeaders } from \"../internal/headers.mjs\";\nexport class Webhooks extends APIResource {\n    constructor() {\n        super(...arguments);\n        _Webhooks_instances.add(this);\n    }\n    /**\n     * Validates that the given payload was sent by OpenAI and parses the payload.\n     */\n    async unwrap(payload, headers, secret = this._client.webhookSecret, tolerance = 300) {\n        await this.verifySignature(payload, headers, secret, tolerance);\n        return JSON.parse(payload);\n    }\n    /**\n     * Validates whether or not the webhook payload was sent by OpenAI.\n     *\n     * An error will be raised if the webhook payload was not sent by OpenAI.\n     *\n     * @param payload - The webhook payload\n     * @param headers - The webhook headers\n     * @param secret - The webhook secret (optional, will use client secret if not provided)\n     * @param tolerance - Maximum age of the webhook in seconds (default: 300 = 5 minutes)\n     */\n    async verifySignature(payload, headers, secret = this._client.webhookSecret, tolerance = 300) {\n        if (typeof crypto === 'undefined' ||\n            typeof crypto.subtle.importKey !== 'function' ||\n            typeof crypto.subtle.verify !== 'function') {\n            throw new Error('Webhook signature verification is only supported when the `crypto` global is defined');\n        }\n        __classPrivateFieldGet(this, _Webhooks_instances, \"m\", _Webhooks_validateSecret).call(this, secret);\n        const headersObj = buildHeaders([headers]).values;\n        const signatureHeader = __classPrivateFieldGet(this, _Webhooks_instances, \"m\", _Webhooks_getRequiredHeader).call(this, headersObj, 'webhook-signature');\n        const timestamp = __classPrivateFieldGet(this, _Webhooks_instances, \"m\", _Webhooks_getRequiredHeader).call(this, headersObj, 'webhook-timestamp');\n        const webhookId = __classPrivateFieldGet(this, _Webhooks_instances, \"m\", _Webhooks_getRequiredHeader).call(this, headersObj, 'webhook-id');\n        // Validate timestamp to prevent replay attacks\n        const timestampSeconds = parseInt(timestamp, 10);\n        if (isNaN(timestampSeconds)) {\n            throw new InvalidWebhookSignatureError('Invalid webhook timestamp format');\n        }\n        const nowSeconds = Math.floor(Date.now() / 1000);\n        if (nowSeconds - timestampSeconds > tolerance) {\n            throw new InvalidWebhookSignatureError('Webhook timestamp is too old');\n        }\n        if (timestampSeconds > nowSeconds + tolerance) {\n            throw new InvalidWebhookSignatureError('Webhook timestamp is too new');\n        }\n        // Extract signatures from v1,<base64> format\n        // The signature header can have multiple values, separated by spaces.\n        // Each value is in the format v1,<base64>. We should accept if any match.\n        const signatures = signatureHeader\n            .split(' ')\n            .map((part) => (part.startsWith('v1,') ? part.substring(3) : part));\n        // Decode the secret if it starts with whsec_\n        const decodedSecret = secret.startsWith('whsec_') ?\n            Buffer.from(secret.replace('whsec_', ''), 'base64')\n            : Buffer.from(secret, 'utf-8');\n        // Create the signed payload: {webhook_id}.{timestamp}.{payload}\n        const signedPayload = webhookId ? `${webhookId}.${timestamp}.${payload}` : `${timestamp}.${payload}`;\n        // Import the secret as a cryptographic key for HMAC\n        const key = await crypto.subtle.importKey('raw', decodedSecret, { name: 'HMAC', hash: 'SHA-256' }, false, ['verify']);\n        // Check if any signature matches using timing-safe WebCrypto verify\n        for (const signature of signatures) {\n            try {\n                const signatureBytes = Buffer.from(signature, 'base64');\n                const isValid = await crypto.subtle.verify('HMAC', key, signatureBytes, new TextEncoder().encode(signedPayload));\n                if (isValid) {\n                    return; // Valid signature found\n                }\n            }\n            catch {\n                // Invalid base64 or signature format, continue to next signature\n                continue;\n            }\n        }\n        throw new InvalidWebhookSignatureError('The given webhook signature does not match the expected signature');\n    }\n}\n_Webhooks_instances = new WeakSet(), _Webhooks_validateSecret = function _Webhooks_validateSecret(secret) {\n    if (typeof secret !== 'string' || secret.length === 0) {\n        throw new Error(`The webhook secret must either be set using the env var, OPENAI_WEBHOOK_SECRET, on the client class, OpenAI({ webhookSecret: '123' }), or passed to this function`);\n    }\n}, _Webhooks_getRequiredHeader = function _Webhooks_getRequiredHeader(headers, name) {\n    if (!headers) {\n        throw new Error(`Headers are required`);\n    }\n    const value = headers.get(name);\n    if (value === null || value === undefined) {\n        throw new Error(`Missing required header: ${name}`);\n    }\n    return value;\n};\n//# sourceMappingURL=webhooks.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar _OpenAI_instances, _a, _OpenAI_encoder, _OpenAI_baseURLOverridden;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"./internal/tslib.mjs\";\nimport { uuid4 } from \"./internal/utils/uuid.mjs\";\nimport { validatePositiveInteger, isAbsoluteURL, safeJSON } from \"./internal/utils/values.mjs\";\nimport { sleep } from \"./internal/utils/sleep.mjs\";\nimport { castToError, isAbortError } from \"./internal/errors.mjs\";\nimport { getPlatformHeaders } from \"./internal/detect-platform.mjs\";\nimport * as Shims from \"./internal/shims.mjs\";\nimport * as Opts from \"./internal/request-options.mjs\";\nimport * as qs from \"./internal/qs/index.mjs\";\nimport { VERSION } from \"./version.mjs\";\nimport * as Errors from \"./core/error.mjs\";\nimport * as Pagination from \"./core/pagination.mjs\";\nimport * as Uploads from \"./core/uploads.mjs\";\nimport * as API from \"./resources/index.mjs\";\nimport { APIPromise } from \"./core/api-promise.mjs\";\nimport { Batches, } from \"./resources/batches.mjs\";\nimport { Completions, } from \"./resources/completions.mjs\";\nimport { Embeddings, } from \"./resources/embeddings.mjs\";\nimport { Files, } from \"./resources/files.mjs\";\nimport { Images, } from \"./resources/images.mjs\";\nimport { Models } from \"./resources/models.mjs\";\nimport { Moderations, } from \"./resources/moderations.mjs\";\nimport { Webhooks } from \"./resources/webhooks.mjs\";\nimport { Audio } from \"./resources/audio/audio.mjs\";\nimport { Beta } from \"./resources/beta/beta.mjs\";\nimport { Chat } from \"./resources/chat/chat.mjs\";\nimport { Containers, } from \"./resources/containers/containers.mjs\";\nimport { Conversations } from \"./resources/conversations/conversations.mjs\";\nimport { Evals, } from \"./resources/evals/evals.mjs\";\nimport { FineTuning } from \"./resources/fine-tuning/fine-tuning.mjs\";\nimport { Graders } from \"./resources/graders/graders.mjs\";\nimport { Responses } from \"./resources/responses/responses.mjs\";\nimport { Uploads as UploadsAPIUploads, } from \"./resources/uploads/uploads.mjs\";\nimport { VectorStores, } from \"./resources/vector-stores/vector-stores.mjs\";\nimport { isRunningInBrowser } from \"./internal/detect-platform.mjs\";\nimport { buildHeaders } from \"./internal/headers.mjs\";\nimport { readEnv } from \"./internal/utils/env.mjs\";\nimport { formatRequestDetails, loggerFor, parseLogLevel, } from \"./internal/utils/log.mjs\";\nimport { isEmptyObj } from \"./internal/utils/values.mjs\";\n/**\n * API Client for interfacing with the OpenAI API.\n */\nexport class OpenAI {\n    /**\n     * API Client for interfacing with the OpenAI API.\n     *\n     * @param {string | undefined} [opts.apiKey=process.env['OPENAI_API_KEY'] ?? undefined]\n     * @param {string | null | undefined} [opts.organization=process.env['OPENAI_ORG_ID'] ?? null]\n     * @param {string | null | undefined} [opts.project=process.env['OPENAI_PROJECT_ID'] ?? null]\n     * @param {string | null | undefined} [opts.webhookSecret=process.env['OPENAI_WEBHOOK_SECRET'] ?? null]\n     * @param {string} [opts.baseURL=process.env['OPENAI_BASE_URL'] ?? https://api.openai.com/v1] - Override the default base URL for the API.\n     * @param {number} [opts.timeout=10 minutes] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.\n     * @param {MergedRequestInit} [opts.fetchOptions] - Additional `RequestInit` options to be passed to `fetch` calls.\n     * @param {Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.\n     * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request.\n     * @param {HeadersLike} opts.defaultHeaders - Default headers to include with every request to the API.\n     * @param {Record<string, string | undefined>} opts.defaultQuery - Default query parameters to include with every request to the API.\n     * @param {boolean} [opts.dangerouslyAllowBrowser=false] - By default, client-side use of this library is not allowed, as it risks exposing your secret API credentials to attackers.\n     */\n    constructor({ baseURL = readEnv('OPENAI_BASE_URL'), apiKey = readEnv('OPENAI_API_KEY'), organization = readEnv('OPENAI_ORG_ID') ?? null, project = readEnv('OPENAI_PROJECT_ID') ?? null, webhookSecret = readEnv('OPENAI_WEBHOOK_SECRET') ?? null, ...opts } = {}) {\n        _OpenAI_instances.add(this);\n        _OpenAI_encoder.set(this, void 0);\n        this.completions = new API.Completions(this);\n        this.chat = new API.Chat(this);\n        this.embeddings = new API.Embeddings(this);\n        this.files = new API.Files(this);\n        this.images = new API.Images(this);\n        this.audio = new API.Audio(this);\n        this.moderations = new API.Moderations(this);\n        this.models = new API.Models(this);\n        this.fineTuning = new API.FineTuning(this);\n        this.graders = new API.Graders(this);\n        this.vectorStores = new API.VectorStores(this);\n        this.webhooks = new API.Webhooks(this);\n        this.beta = new API.Beta(this);\n        this.batches = new API.Batches(this);\n        this.uploads = new API.Uploads(this);\n        this.responses = new API.Responses(this);\n        this.conversations = new API.Conversations(this);\n        this.evals = new API.Evals(this);\n        this.containers = new API.Containers(this);\n        if (apiKey === undefined) {\n            throw new Errors.OpenAIError(\"The OPENAI_API_KEY environment variable is missing or empty; either provide it, or instantiate the OpenAI client with an apiKey option, like new OpenAI({ apiKey: 'My API Key' }).\");\n        }\n        const options = {\n            apiKey,\n            organization,\n            project,\n            webhookSecret,\n            ...opts,\n            baseURL: baseURL || `https://api.openai.com/v1`,\n        };\n        if (!options.dangerouslyAllowBrowser && isRunningInBrowser()) {\n            throw new Errors.OpenAIError(\"It looks like you're running in a browser-like environment.\\n\\nThis is disabled by default, as it risks exposing your secret API credentials to attackers.\\nIf you understand the risks and have appropriate mitigations in place,\\nyou can set the `dangerouslyAllowBrowser` option to `true`, e.g.,\\n\\nnew OpenAI({ apiKey, dangerouslyAllowBrowser: true });\\n\\nhttps://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety\\n\");\n        }\n        this.baseURL = options.baseURL;\n        this.timeout = options.timeout ?? _a.DEFAULT_TIMEOUT /* 10 minutes */;\n        this.logger = options.logger ?? console;\n        const defaultLogLevel = 'warn';\n        // Set default logLevel early so that we can log a warning in parseLogLevel.\n        this.logLevel = defaultLogLevel;\n        this.logLevel =\n            parseLogLevel(options.logLevel, 'ClientOptions.logLevel', this) ??\n                parseLogLevel(readEnv('OPENAI_LOG'), \"process.env['OPENAI_LOG']\", this) ??\n                defaultLogLevel;\n        this.fetchOptions = options.fetchOptions;\n        this.maxRetries = options.maxRetries ?? 2;\n        this.fetch = options.fetch ?? Shims.getDefaultFetch();\n        __classPrivateFieldSet(this, _OpenAI_encoder, Opts.FallbackEncoder, \"f\");\n        this._options = options;\n        this.apiKey = apiKey;\n        this.organization = organization;\n        this.project = project;\n        this.webhookSecret = webhookSecret;\n    }\n    /**\n     * Create a new client instance re-using the same options given to the current client with optional overriding.\n     */\n    withOptions(options) {\n        const client = new this.constructor({\n            ...this._options,\n            baseURL: this.baseURL,\n            maxRetries: this.maxRetries,\n            timeout: this.timeout,\n            logger: this.logger,\n            logLevel: this.logLevel,\n            fetch: this.fetch,\n            fetchOptions: this.fetchOptions,\n            apiKey: this.apiKey,\n            organization: this.organization,\n            project: this.project,\n            webhookSecret: this.webhookSecret,\n            ...options,\n        });\n        return client;\n    }\n    defaultQuery() {\n        return this._options.defaultQuery;\n    }\n    validateHeaders({ values, nulls }) {\n        return;\n    }\n    async authHeaders(opts) {\n        return buildHeaders([{ Authorization: `Bearer ${this.apiKey}` }]);\n    }\n    stringifyQuery(query) {\n        return qs.stringify(query, { arrayFormat: 'brackets' });\n    }\n    getUserAgent() {\n        return `${this.constructor.name}/JS ${VERSION}`;\n    }\n    defaultIdempotencyKey() {\n        return `stainless-node-retry-${uuid4()}`;\n    }\n    makeStatusError(status, error, message, headers) {\n        return Errors.APIError.generate(status, error, message, headers);\n    }\n    buildURL(path, query, defaultBaseURL) {\n        const baseURL = (!__classPrivateFieldGet(this, _OpenAI_instances, \"m\", _OpenAI_baseURLOverridden).call(this) && defaultBaseURL) || this.baseURL;\n        const url = isAbsoluteURL(path) ?\n            new URL(path)\n            : new URL(baseURL + (baseURL.endsWith('/') && path.startsWith('/') ? path.slice(1) : path));\n        const defaultQuery = this.defaultQuery();\n        if (!isEmptyObj(defaultQuery)) {\n            query = { ...defaultQuery, ...query };\n        }\n        if (typeof query === 'object' && query && !Array.isArray(query)) {\n            url.search = this.stringifyQuery(query);\n        }\n        return url.toString();\n    }\n    /**\n     * Used as a callback for mutating the given `FinalRequestOptions` object.\n     */\n    async prepareOptions(options) { }\n    /**\n     * Used as a callback for mutating the given `RequestInit` object.\n     *\n     * This is useful for cases where you want to add certain headers based off of\n     * the request properties, e.g. `method` or `url`.\n     */\n    async prepareRequest(request, { url, options }) { }\n    get(path, opts) {\n        return this.methodRequest('get', path, opts);\n    }\n    post(path, opts) {\n        return this.methodRequest('post', path, opts);\n    }\n    patch(path, opts) {\n        return this.methodRequest('patch', path, opts);\n    }\n    put(path, opts) {\n        return this.methodRequest('put', path, opts);\n    }\n    delete(path, opts) {\n        return this.methodRequest('delete', path, opts);\n    }\n    methodRequest(method, path, opts) {\n        return this.request(Promise.resolve(opts).then((opts) => {\n            return { method, path, ...opts };\n        }));\n    }\n    request(options, remainingRetries = null) {\n        return new APIPromise(this, this.makeRequest(options, remainingRetries, undefined));\n    }\n    async makeRequest(optionsInput, retriesRemaining, retryOfRequestLogID) {\n        const options = await optionsInput;\n        const maxRetries = options.maxRetries ?? this.maxRetries;\n        if (retriesRemaining == null) {\n            retriesRemaining = maxRetries;\n        }\n        await this.prepareOptions(options);\n        const { req, url, timeout } = await this.buildRequest(options, {\n            retryCount: maxRetries - retriesRemaining,\n        });\n        await this.prepareRequest(req, { url, options });\n        /** Not an API request ID, just for correlating local log entries. */\n        const requestLogID = 'log_' + ((Math.random() * (1 << 24)) | 0).toString(16).padStart(6, '0');\n        const retryLogStr = retryOfRequestLogID === undefined ? '' : `, retryOf: ${retryOfRequestLogID}`;\n        const startTime = Date.now();\n        loggerFor(this).debug(`[${requestLogID}] sending request`, formatRequestDetails({\n            retryOfRequestLogID,\n            method: options.method,\n            url,\n            options,\n            headers: req.headers,\n        }));\n        if (options.signal?.aborted) {\n            throw new Errors.APIUserAbortError();\n        }\n        const controller = new AbortController();\n        const response = await this.fetchWithTimeout(url, req, timeout, controller).catch(castToError);\n        const headersTime = Date.now();\n        if (response instanceof Error) {\n            const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;\n            if (options.signal?.aborted) {\n                throw new Errors.APIUserAbortError();\n            }\n            // detect native connection timeout errors\n            // deno throws \"TypeError: error sending request for url (https://example/): client error (Connect): tcp connect error: Operation timed out (os error 60): Operation timed out (os error 60)\"\n            // undici throws \"TypeError: fetch failed\" with cause \"ConnectTimeoutError: Connect Timeout Error (attempted address: example:443, timeout: 1ms)\"\n            // others do not provide enough information to distinguish timeouts from other connection errors\n            const isTimeout = isAbortError(response) ||\n                /timed? ?out/i.test(String(response) + ('cause' in response ? String(response.cause) : ''));\n            if (retriesRemaining) {\n                loggerFor(this).info(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} - ${retryMessage}`);\n                loggerFor(this).debug(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} (${retryMessage})`, formatRequestDetails({\n                    retryOfRequestLogID,\n                    url,\n                    durationMs: headersTime - startTime,\n                    message: response.message,\n                }));\n                return this.retryRequest(options, retriesRemaining, retryOfRequestLogID ?? requestLogID);\n            }\n            loggerFor(this).info(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} - error; no more retries left`);\n            loggerFor(this).debug(`[${requestLogID}] connection ${isTimeout ? 'timed out' : 'failed'} (error; no more retries left)`, formatRequestDetails({\n                retryOfRequestLogID,\n                url,\n                durationMs: headersTime - startTime,\n                message: response.message,\n            }));\n            if (isTimeout) {\n                throw new Errors.APIConnectionTimeoutError();\n            }\n            throw new Errors.APIConnectionError({ cause: response });\n        }\n        const specialHeaders = [...response.headers.entries()]\n            .filter(([name]) => name === 'x-request-id')\n            .map(([name, value]) => ', ' + name + ': ' + JSON.stringify(value))\n            .join('');\n        const responseInfo = `[${requestLogID}${retryLogStr}${specialHeaders}] ${req.method} ${url} ${response.ok ? 'succeeded' : 'failed'} with status ${response.status} in ${headersTime - startTime}ms`;\n        if (!response.ok) {\n            const shouldRetry = await this.shouldRetry(response);\n            if (retriesRemaining && shouldRetry) {\n                const retryMessage = `retrying, ${retriesRemaining} attempts remaining`;\n                // We don't need the body of this response.\n                await Shims.CancelReadableStream(response.body);\n                loggerFor(this).info(`${responseInfo} - ${retryMessage}`);\n                loggerFor(this).debug(`[${requestLogID}] response error (${retryMessage})`, formatRequestDetails({\n                    retryOfRequestLogID,\n                    url: response.url,\n                    status: response.status,\n                    headers: response.headers,\n                    durationMs: headersTime - startTime,\n                }));\n                return this.retryRequest(options, retriesRemaining, retryOfRequestLogID ?? requestLogID, response.headers);\n            }\n            const retryMessage = shouldRetry ? `error; no more retries left` : `error; not retryable`;\n            loggerFor(this).info(`${responseInfo} - ${retryMessage}`);\n            const errText = await response.text().catch((err) => castToError(err).message);\n            const errJSON = safeJSON(errText);\n            const errMessage = errJSON ? undefined : errText;\n            loggerFor(this).debug(`[${requestLogID}] response error (${retryMessage})`, formatRequestDetails({\n                retryOfRequestLogID,\n                url: response.url,\n                status: response.status,\n                headers: response.headers,\n                message: errMessage,\n                durationMs: Date.now() - startTime,\n            }));\n            const err = this.makeStatusError(response.status, errJSON, errMessage, response.headers);\n            throw err;\n        }\n        loggerFor(this).info(responseInfo);\n        loggerFor(this).debug(`[${requestLogID}] response start`, formatRequestDetails({\n            retryOfRequestLogID,\n            url: response.url,\n            status: response.status,\n            headers: response.headers,\n            durationMs: headersTime - startTime,\n        }));\n        return { response, options, controller, requestLogID, retryOfRequestLogID, startTime };\n    }\n    getAPIList(path, Page, opts) {\n        return this.requestAPIList(Page, { method: 'get', path, ...opts });\n    }\n    requestAPIList(Page, options) {\n        const request = this.makeRequest(options, null, undefined);\n        return new Pagination.PagePromise(this, request, Page);\n    }\n    async fetchWithTimeout(url, init, ms, controller) {\n        const { signal, method, ...options } = init || {};\n        if (signal)\n            signal.addEventListener('abort', () => controller.abort());\n        const timeout = setTimeout(() => controller.abort(), ms);\n        const isReadableBody = (globalThis.ReadableStream && options.body instanceof globalThis.ReadableStream) ||\n            (typeof options.body === 'object' && options.body !== null && Symbol.asyncIterator in options.body);\n        const fetchOptions = {\n            signal: controller.signal,\n            ...(isReadableBody ? { duplex: 'half' } : {}),\n            method: 'GET',\n            ...options,\n        };\n        if (method) {\n            // Custom methods like 'patch' need to be uppercased\n            // See https://github.com/nodejs/undici/issues/2294\n            fetchOptions.method = method.toUpperCase();\n        }\n        try {\n            // use undefined this binding; fetch errors if bound to something else in browser/cloudflare\n            return await this.fetch.call(undefined, url, fetchOptions);\n        }\n        finally {\n            clearTimeout(timeout);\n        }\n    }\n    async shouldRetry(response) {\n        // Note this is not a standard header.\n        const shouldRetryHeader = response.headers.get('x-should-retry');\n        // If the server explicitly says whether or not to retry, obey.\n        if (shouldRetryHeader === 'true')\n            return true;\n        if (shouldRetryHeader === 'false')\n            return false;\n        // Retry on request timeouts.\n        if (response.status === 408)\n            return true;\n        // Retry on lock timeouts.\n        if (response.status === 409)\n            return true;\n        // Retry on rate limits.\n        if (response.status === 429)\n            return true;\n        // Retry internal errors.\n        if (response.status >= 500)\n            return true;\n        return false;\n    }\n    async retryRequest(options, retriesRemaining, requestLogID, responseHeaders) {\n        let timeoutMillis;\n        // Note the `retry-after-ms` header may not be standard, but is a good idea and we'd like proactive support for it.\n        const retryAfterMillisHeader = responseHeaders?.get('retry-after-ms');\n        if (retryAfterMillisHeader) {\n            const timeoutMs = parseFloat(retryAfterMillisHeader);\n            if (!Number.isNaN(timeoutMs)) {\n                timeoutMillis = timeoutMs;\n            }\n        }\n        // About the Retry-After header: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After\n        const retryAfterHeader = responseHeaders?.get('retry-after');\n        if (retryAfterHeader && !timeoutMillis) {\n            const timeoutSeconds = parseFloat(retryAfterHeader);\n            if (!Number.isNaN(timeoutSeconds)) {\n                timeoutMillis = timeoutSeconds * 1000;\n            }\n            else {\n                timeoutMillis = Date.parse(retryAfterHeader) - Date.now();\n            }\n        }\n        // If the API asks us to wait a certain amount of time (and it's a reasonable amount),\n        // just do what it says, but otherwise calculate a default\n        if (!(timeoutMillis && 0 <= timeoutMillis && timeoutMillis < 60 * 1000)) {\n            const maxRetries = options.maxRetries ?? this.maxRetries;\n            timeoutMillis = this.calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries);\n        }\n        await sleep(timeoutMillis);\n        return this.makeRequest(options, retriesRemaining - 1, requestLogID);\n    }\n    calculateDefaultRetryTimeoutMillis(retriesRemaining, maxRetries) {\n        const initialRetryDelay = 0.5;\n        const maxRetryDelay = 8.0;\n        const numRetries = maxRetries - retriesRemaining;\n        // Apply exponential backoff, but not more than the max.\n        const sleepSeconds = Math.min(initialRetryDelay * Math.pow(2, numRetries), maxRetryDelay);\n        // Apply some jitter, take up to at most 25 percent of the retry time.\n        const jitter = 1 - Math.random() * 0.25;\n        return sleepSeconds * jitter * 1000;\n    }\n    async buildRequest(inputOptions, { retryCount = 0 } = {}) {\n        const options = { ...inputOptions };\n        const { method, path, query, defaultBaseURL } = options;\n        const url = this.buildURL(path, query, defaultBaseURL);\n        if ('timeout' in options)\n            validatePositiveInteger('timeout', options.timeout);\n        options.timeout = options.timeout ?? this.timeout;\n        const { bodyHeaders, body } = this.buildBody({ options });\n        const reqHeaders = await this.buildHeaders({ options: inputOptions, method, bodyHeaders, retryCount });\n        const req = {\n            method,\n            headers: reqHeaders,\n            ...(options.signal && { signal: options.signal }),\n            ...(globalThis.ReadableStream &&\n                body instanceof globalThis.ReadableStream && { duplex: 'half' }),\n            ...(body && { body }),\n            ...(this.fetchOptions ?? {}),\n            ...(options.fetchOptions ?? {}),\n        };\n        return { req, url, timeout: options.timeout };\n    }\n    async buildHeaders({ options, method, bodyHeaders, retryCount, }) {\n        let idempotencyHeaders = {};\n        if (this.idempotencyHeader && method !== 'get') {\n            if (!options.idempotencyKey)\n                options.idempotencyKey = this.defaultIdempotencyKey();\n            idempotencyHeaders[this.idempotencyHeader] = options.idempotencyKey;\n        }\n        const headers = buildHeaders([\n            idempotencyHeaders,\n            {\n                Accept: 'application/json',\n                'User-Agent': this.getUserAgent(),\n                'X-Stainless-Retry-Count': String(retryCount),\n                ...(options.timeout ? { 'X-Stainless-Timeout': String(Math.trunc(options.timeout / 1000)) } : {}),\n                ...getPlatformHeaders(),\n                'OpenAI-Organization': this.organization,\n                'OpenAI-Project': this.project,\n            },\n            await this.authHeaders(options),\n            this._options.defaultHeaders,\n            bodyHeaders,\n            options.headers,\n        ]);\n        this.validateHeaders(headers);\n        return headers.values;\n    }\n    buildBody({ options: { body, headers: rawHeaders } }) {\n        if (!body) {\n            return { bodyHeaders: undefined, body: undefined };\n        }\n        const headers = buildHeaders([rawHeaders]);\n        if (\n        // Pass raw type verbatim\n        ArrayBuffer.isView(body) ||\n            body instanceof ArrayBuffer ||\n            body instanceof DataView ||\n            (typeof body === 'string' &&\n                // Preserve legacy string encoding behavior for now\n                headers.values.has('content-type')) ||\n            // `Blob` is superset of `File`\n            body instanceof Blob ||\n            // `FormData` -> `multipart/form-data`\n            body instanceof FormData ||\n            // `URLSearchParams` -> `application/x-www-form-urlencoded`\n            body instanceof URLSearchParams ||\n            // Send chunked stream (each chunk has own `length`)\n            (globalThis.ReadableStream && body instanceof globalThis.ReadableStream)) {\n            return { bodyHeaders: undefined, body: body };\n        }\n        else if (typeof body === 'object' &&\n            (Symbol.asyncIterator in body ||\n                (Symbol.iterator in body && 'next' in body && typeof body.next === 'function'))) {\n            return { bodyHeaders: undefined, body: Shims.ReadableStreamFrom(body) };\n        }\n        else {\n            return __classPrivateFieldGet(this, _OpenAI_encoder, \"f\").call(this, { body, headers });\n        }\n    }\n}\n_a = OpenAI, _OpenAI_encoder = new WeakMap(), _OpenAI_instances = new WeakSet(), _OpenAI_baseURLOverridden = function _OpenAI_baseURLOverridden() {\n    return this.baseURL !== 'https://api.openai.com/v1';\n};\nOpenAI.OpenAI = _a;\nOpenAI.DEFAULT_TIMEOUT = 600000; // 10 minutes\nOpenAI.OpenAIError = Errors.OpenAIError;\nOpenAI.APIError = Errors.APIError;\nOpenAI.APIConnectionError = Errors.APIConnectionError;\nOpenAI.APIConnectionTimeoutError = Errors.APIConnectionTimeoutError;\nOpenAI.APIUserAbortError = Errors.APIUserAbortError;\nOpenAI.NotFoundError = Errors.NotFoundError;\nOpenAI.ConflictError = Errors.ConflictError;\nOpenAI.RateLimitError = Errors.RateLimitError;\nOpenAI.BadRequestError = Errors.BadRequestError;\nOpenAI.AuthenticationError = Errors.AuthenticationError;\nOpenAI.InternalServerError = Errors.InternalServerError;\nOpenAI.PermissionDeniedError = Errors.PermissionDeniedError;\nOpenAI.UnprocessableEntityError = Errors.UnprocessableEntityError;\nOpenAI.InvalidWebhookSignatureError = Errors.InvalidWebhookSignatureError;\nOpenAI.toFile = Uploads.toFile;\nOpenAI.Completions = Completions;\nOpenAI.Chat = Chat;\nOpenAI.Embeddings = Embeddings;\nOpenAI.Files = Files;\nOpenAI.Images = Images;\nOpenAI.Audio = Audio;\nOpenAI.Moderations = Moderations;\nOpenAI.Models = Models;\nOpenAI.FineTuning = FineTuning;\nOpenAI.Graders = Graders;\nOpenAI.VectorStores = VectorStores;\nOpenAI.Webhooks = Webhooks;\nOpenAI.Beta = Beta;\nOpenAI.Batches = Batches;\nOpenAI.Uploads = UploadsAPIUploads;\nOpenAI.Responses = Responses;\nOpenAI.Conversations = Conversations;\nOpenAI.Evals = Evals;\nOpenAI.Containers = Containers;\n//# sourceMappingURL=client.mjs.map","let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n"],"x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90],"mappings":"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"}