{"version":3,"file":"index-BdpnqFm8.cjs","sources":["../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/tslib.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/utils/uuid.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/errors.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/core/error.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/utils/values.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/utils/sleep.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/version.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/detect-platform.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/shims.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/request-options.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/utils/bytes.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/decoders/line.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/utils/log.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/core/streaming.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/parse.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/core/api-promise.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/core/pagination.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/uploads.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/to-file.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/core/resource.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/headers.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/utils/path.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/resources/beta/files.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/resources/beta/models.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/decoders/jsonl.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/resources/beta/messages/batches.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/_vendor/partial-json-parser/parser.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/constants.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/resources/beta/beta.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/resources/completions.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/lib/MessageStream.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/resources/messages/batches.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/resources/messages/messages.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/resources/models.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/internal/utils/env.mjs","../../../node_modules/.pnpm/@anthropic-ai+sdk@0.56.0/node_modules/@anthropic-ai/sdk/client.mjs"],"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 AnthropicError extends Error {\n}\nexport class APIError extends AnthropicError {\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('request-id');\n        this.error = error;\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;\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}\n//# sourceMappingURL=error.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { AnthropicError } 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 AnthropicError(`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 AnthropicError(`${name} must be an integer`);\n    }\n    if (n < 0) {\n        throw new AnthropicError(`${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 AnthropicError(`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 AnthropicError(`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 = '0.56.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 Anthropic({ 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 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() === 'x-api-key' ||\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 { AnthropicError } 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 { safeJSON } from \"../internal/utils/values.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 AnthropicError('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 (sse.event === 'completion') {\n                        try {\n                            yield 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                    }\n                    if (sse.event === 'message_start' ||\n                        sse.event === 'message_delta' ||\n                        sse.event === 'message_stop' ||\n                        sse.event === 'content_block_start' ||\n                        sse.event === 'content_block_delta' ||\n                        sse.event === 'content_block_stop') {\n                        try {\n                            yield 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                    }\n                    if (sse.event === 'ping') {\n                        continue;\n                    }\n                    if (sse.event === 'error') {\n                        throw new APIError(undefined, safeJSON(sse.data) ?? sse.data, undefined, response.headers);\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 AnthropicError('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 AnthropicError(`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 AnthropicError(`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('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 `request-id` header which is useful for debugging requests and resporting\n     * issues to Anthropic.\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('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 { AnthropicError } 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 AnthropicError('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}\nexport class Page 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.first_id = body.first_id || null;\n        this.last_id = body.last_id || null;\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        if (this.options.query?.['before_id']) {\n            // in reverse\n            const first_id = this.first_id;\n            if (!first_id) {\n                return null;\n            }\n            return {\n                ...this.options,\n                query: {\n                    ...maybeObj(this.options.query),\n                    before_id: first_id,\n                },\n            };\n        }\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_id: 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        let options = {};\n        const contentType = value.headers.get('Content-Type');\n        if (contentType) {\n            options = { type: contentType };\n        }\n        form.append(key, makeFile([await value.blob()], getName(value), options));\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, makeFile([value], getName(value), { type: value.type }));\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    name || (name = getName(value));\n    // If we've been given a `File` we don't need to do anything if the name / options\n    // have not been customised.\n    if (isFileLike(value)) {\n        if (value instanceof File && name == null && options == null) {\n            return value;\n        }\n        return makeFile([await value.arrayBuffer()], name ?? value.name, {\n            type: value.type,\n            lastModified: value.lastModified,\n            ...options,\n        });\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    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","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { isReadonlyArray } from \"./utils/values.mjs\";\nconst brand_privateNullableHeaders = Symbol.for('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","import { AnthropicError } 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 AnthropicError(`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 { Page } 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    /**\n     * List Files\n     *\n     * @example\n     * ```ts\n     * // Automatically fetches more pages as needed.\n     * for await (const fileMetadata of client.beta.files.list()) {\n     *   // ...\n     * }\n     * ```\n     */\n    list(params = {}, options) {\n        const { betas, ...query } = params ?? {};\n        return this._client.getAPIList('/v1/files', (Page), {\n            query,\n            ...options,\n            headers: buildHeaders([\n                { 'anthropic-beta': [...(betas ?? []), 'files-api-2025-04-14'].toString() },\n                options?.headers,\n            ]),\n        });\n    }\n    /**\n     * Delete File\n     *\n     * @example\n     * ```ts\n     * const deletedFile = await client.beta.files.delete(\n     *   'file_id',\n     * );\n     * ```\n     */\n    delete(fileID, params = {}, options) {\n        const { betas } = params ?? {};\n        return this._client.delete(path `/v1/files/${fileID}`, {\n            ...options,\n            headers: buildHeaders([\n                { 'anthropic-beta': [...(betas ?? []), 'files-api-2025-04-14'].toString() },\n                options?.headers,\n            ]),\n        });\n    }\n    /**\n     * Download File\n     *\n     * @example\n     * ```ts\n     * const response = await client.beta.files.download(\n     *   'file_id',\n     * );\n     *\n     * const content = await response.blob();\n     * console.log(content);\n     * ```\n     */\n    download(fileID, params = {}, options) {\n        const { betas } = params ?? {};\n        return this._client.get(path `/v1/files/${fileID}/content`, {\n            ...options,\n            headers: buildHeaders([\n                {\n                    'anthropic-beta': [...(betas ?? []), 'files-api-2025-04-14'].toString(),\n                    Accept: 'application/binary',\n                },\n                options?.headers,\n            ]),\n            __binaryResponse: true,\n        });\n    }\n    /**\n     * Get File Metadata\n     *\n     * @example\n     * ```ts\n     * const fileMetadata =\n     *   await client.beta.files.retrieveMetadata('file_id');\n     * ```\n     */\n    retrieveMetadata(fileID, params = {}, options) {\n        const { betas } = params ?? {};\n        return this._client.get(path `/v1/files/${fileID}`, {\n            ...options,\n            headers: buildHeaders([\n                { 'anthropic-beta': [...(betas ?? []), 'files-api-2025-04-14'].toString() },\n                options?.headers,\n            ]),\n        });\n    }\n    /**\n     * Upload File\n     *\n     * @example\n     * ```ts\n     * const fileMetadata = await client.beta.files.upload({\n     *   file: fs.createReadStream('path/to/file'),\n     * });\n     * ```\n     */\n    upload(params, options) {\n        const { betas, ...body } = params;\n        return this._client.post('/v1/files', multipartFormRequestOptions({\n            body,\n            ...options,\n            headers: buildHeaders([\n                { 'anthropic-beta': [...(betas ?? []), 'files-api-2025-04-14'].toString() },\n                options?.headers,\n            ]),\n        }, this._client));\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 { Page } from \"../../core/pagination.mjs\";\nimport { buildHeaders } from \"../../internal/headers.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Models extends APIResource {\n    /**\n     * Get a specific model.\n     *\n     * The Models API response can be used to determine information about a specific\n     * model or resolve a model alias to a model ID.\n     *\n     * @example\n     * ```ts\n     * const betaModelInfo = await client.beta.models.retrieve(\n     *   'model_id',\n     * );\n     * ```\n     */\n    retrieve(modelID, params = {}, options) {\n        const { betas } = params ?? {};\n        return this._client.get(path `/v1/models/${modelID}?beta=true`, {\n            ...options,\n            headers: buildHeaders([\n                { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n                options?.headers,\n            ]),\n        });\n    }\n    /**\n     * List available models.\n     *\n     * The Models API response can be used to determine which models are available for\n     * use in the API. More recently released models are listed first.\n     *\n     * @example\n     * ```ts\n     * // Automatically fetches more pages as needed.\n     * for await (const betaModelInfo of client.beta.models.list()) {\n     *   // ...\n     * }\n     * ```\n     */\n    list(params = {}, options) {\n        const { betas, ...query } = params ?? {};\n        return this._client.getAPIList('/v1/models?beta=true', (Page), {\n            query,\n            ...options,\n            headers: buildHeaders([\n                { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n                options?.headers,\n            ]),\n        });\n    }\n}\n//# sourceMappingURL=models.mjs.map","import { AnthropicError } from \"../../core/error.mjs\";\nimport { ReadableStreamToAsyncIterable } from \"../shims.mjs\";\nimport { LineDecoder } from \"./line.mjs\";\nexport class JSONLDecoder {\n    constructor(iterator, controller) {\n        this.iterator = iterator;\n        this.controller = controller;\n    }\n    async *decoder() {\n        const lineDecoder = new LineDecoder();\n        for await (const chunk of this.iterator) {\n            for (const line of lineDecoder.decode(chunk)) {\n                yield JSON.parse(line);\n            }\n        }\n        for (const line of lineDecoder.flush()) {\n            yield JSON.parse(line);\n        }\n    }\n    [Symbol.asyncIterator]() {\n        return this.decoder();\n    }\n    static fromResponse(response, controller) {\n        if (!response.body) {\n            controller.abort();\n            if (typeof globalThis.navigator !== 'undefined' &&\n                globalThis.navigator.product === 'ReactNative') {\n                throw new AnthropicError(`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 AnthropicError(`Attempted to iterate over a response with no body`);\n        }\n        return new JSONLDecoder(ReadableStreamToAsyncIterable(response.body), controller);\n    }\n}\n//# sourceMappingURL=jsonl.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 { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { JSONLDecoder } from \"../../../internal/decoders/jsonl.mjs\";\nimport { AnthropicError } from \"../../../error.mjs\";\nimport { path } from \"../../../internal/utils/path.mjs\";\nexport class Batches extends APIResource {\n    /**\n     * Send a batch of Message creation requests.\n     *\n     * The Message Batches API can be used to process multiple Messages API requests at\n     * once. Once a Message Batch is created, it begins processing immediately. Batches\n     * can take up to 24 hours to complete.\n     *\n     * Learn more about the Message Batches API in our\n     * [user guide](/en/docs/build-with-claude/batch-processing)\n     *\n     * @example\n     * ```ts\n     * const betaMessageBatch =\n     *   await client.beta.messages.batches.create({\n     *     requests: [\n     *       {\n     *         custom_id: 'my-custom-id-1',\n     *         params: {\n     *           max_tokens: 1024,\n     *           messages: [\n     *             { content: 'Hello, world', role: 'user' },\n     *           ],\n     *           model: 'claude-sonnet-4-20250514',\n     *         },\n     *       },\n     *     ],\n     *   });\n     * ```\n     */\n    create(params, options) {\n        const { betas, ...body } = params;\n        return this._client.post('/v1/messages/batches?beta=true', {\n            body,\n            ...options,\n            headers: buildHeaders([\n                { 'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString() },\n                options?.headers,\n            ]),\n        });\n    }\n    /**\n     * This endpoint is idempotent and can be used to poll for Message Batch\n     * completion. To access the results of a Message Batch, make a request to the\n     * `results_url` field in the response.\n     *\n     * Learn more about the Message Batches API in our\n     * [user guide](/en/docs/build-with-claude/batch-processing)\n     *\n     * @example\n     * ```ts\n     * const betaMessageBatch =\n     *   await client.beta.messages.batches.retrieve(\n     *     'message_batch_id',\n     *   );\n     * ```\n     */\n    retrieve(messageBatchID, params = {}, options) {\n        const { betas } = params ?? {};\n        return this._client.get(path `/v1/messages/batches/${messageBatchID}?beta=true`, {\n            ...options,\n            headers: buildHeaders([\n                { 'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString() },\n                options?.headers,\n            ]),\n        });\n    }\n    /**\n     * List all Message Batches within a Workspace. Most recently created batches are\n     * returned first.\n     *\n     * Learn more about the Message Batches API in our\n     * [user guide](/en/docs/build-with-claude/batch-processing)\n     *\n     * @example\n     * ```ts\n     * // Automatically fetches more pages as needed.\n     * for await (const betaMessageBatch of client.beta.messages.batches.list()) {\n     *   // ...\n     * }\n     * ```\n     */\n    list(params = {}, options) {\n        const { betas, ...query } = params ?? {};\n        return this._client.getAPIList('/v1/messages/batches?beta=true', (Page), {\n            query,\n            ...options,\n            headers: buildHeaders([\n                { 'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString() },\n                options?.headers,\n            ]),\n        });\n    }\n    /**\n     * Delete a Message Batch.\n     *\n     * Message Batches can only be deleted once they've finished processing. If you'd\n     * like to delete an in-progress batch, you must first cancel it.\n     *\n     * Learn more about the Message Batches API in our\n     * [user guide](/en/docs/build-with-claude/batch-processing)\n     *\n     * @example\n     * ```ts\n     * const betaDeletedMessageBatch =\n     *   await client.beta.messages.batches.delete(\n     *     'message_batch_id',\n     *   );\n     * ```\n     */\n    delete(messageBatchID, params = {}, options) {\n        const { betas } = params ?? {};\n        return this._client.delete(path `/v1/messages/batches/${messageBatchID}?beta=true`, {\n            ...options,\n            headers: buildHeaders([\n                { 'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString() },\n                options?.headers,\n            ]),\n        });\n    }\n    /**\n     * Batches may be canceled any time before processing ends. Once cancellation is\n     * initiated, the batch enters a `canceling` state, at which time the system may\n     * complete any in-progress, non-interruptible requests before finalizing\n     * cancellation.\n     *\n     * The number of canceled requests is specified in `request_counts`. To determine\n     * which requests were canceled, check the individual results within the batch.\n     * Note that cancellation may not result in any canceled requests if they were\n     * non-interruptible.\n     *\n     * Learn more about the Message Batches API in our\n     * [user guide](/en/docs/build-with-claude/batch-processing)\n     *\n     * @example\n     * ```ts\n     * const betaMessageBatch =\n     *   await client.beta.messages.batches.cancel(\n     *     'message_batch_id',\n     *   );\n     * ```\n     */\n    cancel(messageBatchID, params = {}, options) {\n        const { betas } = params ?? {};\n        return this._client.post(path `/v1/messages/batches/${messageBatchID}/cancel?beta=true`, {\n            ...options,\n            headers: buildHeaders([\n                { 'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString() },\n                options?.headers,\n            ]),\n        });\n    }\n    /**\n     * Streams the results of a Message Batch as a `.jsonl` file.\n     *\n     * Each line in the file is a JSON object containing the result of a single request\n     * in the Message Batch. Results are not guaranteed to be in the same order as\n     * requests. Use the `custom_id` field to match results to requests.\n     *\n     * Learn more about the Message Batches API in our\n     * [user guide](/en/docs/build-with-claude/batch-processing)\n     *\n     * @example\n     * ```ts\n     * const betaMessageBatchIndividualResponse =\n     *   await client.beta.messages.batches.results(\n     *     'message_batch_id',\n     *   );\n     * ```\n     */\n    async results(messageBatchID, params = {}, options) {\n        const batch = await this.retrieve(messageBatchID);\n        if (!batch.results_url) {\n            throw new AnthropicError(`No batch \\`results_url\\`; Has it finished processing? ${batch.processing_status} - ${batch.id}`);\n        }\n        const { betas } = params ?? {};\n        return this._client\n            .get(batch.results_url, {\n            ...options,\n            headers: buildHeaders([\n                {\n                    'anthropic-beta': [...(betas ?? []), 'message-batches-2024-09-24'].toString(),\n                    Accept: 'application/binary',\n                },\n                options?.headers,\n            ]),\n            stream: true,\n            __binaryResponse: true,\n        })\n            ._thenUnwrap((_, props) => JSONLDecoder.fromResponse(props.response, props.controller));\n    }\n}\n//# sourceMappingURL=batches.mjs.map","const tokenize = (input) => {\n    let current = 0;\n    let tokens = [];\n    while (current < input.length) {\n        let char = input[current];\n        if (char === '\\\\') {\n            current++;\n            continue;\n        }\n        if (char === '{') {\n            tokens.push({\n                type: 'brace',\n                value: '{',\n            });\n            current++;\n            continue;\n        }\n        if (char === '}') {\n            tokens.push({\n                type: 'brace',\n                value: '}',\n            });\n            current++;\n            continue;\n        }\n        if (char === '[') {\n            tokens.push({\n                type: 'paren',\n                value: '[',\n            });\n            current++;\n            continue;\n        }\n        if (char === ']') {\n            tokens.push({\n                type: 'paren',\n                value: ']',\n            });\n            current++;\n            continue;\n        }\n        if (char === ':') {\n            tokens.push({\n                type: 'separator',\n                value: ':',\n            });\n            current++;\n            continue;\n        }\n        if (char === ',') {\n            tokens.push({\n                type: 'delimiter',\n                value: ',',\n            });\n            current++;\n            continue;\n        }\n        if (char === '\"') {\n            let value = '';\n            let danglingQuote = false;\n            char = input[++current];\n            while (char !== '\"') {\n                if (current === input.length) {\n                    danglingQuote = true;\n                    break;\n                }\n                if (char === '\\\\') {\n                    current++;\n                    if (current === input.length) {\n                        danglingQuote = true;\n                        break;\n                    }\n                    value += char + input[current];\n                    char = input[++current];\n                }\n                else {\n                    value += char;\n                    char = input[++current];\n                }\n            }\n            char = input[++current];\n            if (!danglingQuote) {\n                tokens.push({\n                    type: 'string',\n                    value,\n                });\n            }\n            continue;\n        }\n        let WHITESPACE = /\\s/;\n        if (char && WHITESPACE.test(char)) {\n            current++;\n            continue;\n        }\n        let NUMBERS = /[0-9]/;\n        if ((char && NUMBERS.test(char)) || char === '-' || char === '.') {\n            let value = '';\n            if (char === '-') {\n                value += char;\n                char = input[++current];\n            }\n            while ((char && NUMBERS.test(char)) || char === '.') {\n                value += char;\n                char = input[++current];\n            }\n            tokens.push({\n                type: 'number',\n                value,\n            });\n            continue;\n        }\n        let LETTERS = /[a-z]/i;\n        if (char && LETTERS.test(char)) {\n            let value = '';\n            while (char && LETTERS.test(char)) {\n                if (current === input.length) {\n                    break;\n                }\n                value += char;\n                char = input[++current];\n            }\n            if (value == 'true' || value == 'false' || value === 'null') {\n                tokens.push({\n                    type: 'name',\n                    value,\n                });\n            }\n            else {\n                // unknown token, e.g. `nul` which isn't quite `null`\n                current++;\n                continue;\n            }\n            continue;\n        }\n        current++;\n    }\n    return tokens;\n}, strip = (tokens) => {\n    if (tokens.length === 0) {\n        return tokens;\n    }\n    let lastToken = tokens[tokens.length - 1];\n    switch (lastToken.type) {\n        case 'separator':\n            tokens = tokens.slice(0, tokens.length - 1);\n            return strip(tokens);\n            break;\n        case 'number':\n            let lastCharacterOfLastToken = lastToken.value[lastToken.value.length - 1];\n            if (lastCharacterOfLastToken === '.' || lastCharacterOfLastToken === '-') {\n                tokens = tokens.slice(0, tokens.length - 1);\n                return strip(tokens);\n            }\n        case 'string':\n            let tokenBeforeTheLastToken = tokens[tokens.length - 2];\n            if (tokenBeforeTheLastToken?.type === 'delimiter') {\n                tokens = tokens.slice(0, tokens.length - 1);\n                return strip(tokens);\n            }\n            else if (tokenBeforeTheLastToken?.type === 'brace' && tokenBeforeTheLastToken.value === '{') {\n                tokens = tokens.slice(0, tokens.length - 1);\n                return strip(tokens);\n            }\n            break;\n        case 'delimiter':\n            tokens = tokens.slice(0, tokens.length - 1);\n            return strip(tokens);\n            break;\n    }\n    return tokens;\n}, unstrip = (tokens) => {\n    let tail = [];\n    tokens.map((token) => {\n        if (token.type === 'brace') {\n            if (token.value === '{') {\n                tail.push('}');\n            }\n            else {\n                tail.splice(tail.lastIndexOf('}'), 1);\n            }\n        }\n        if (token.type === 'paren') {\n            if (token.value === '[') {\n                tail.push(']');\n            }\n            else {\n                tail.splice(tail.lastIndexOf(']'), 1);\n            }\n        }\n    });\n    if (tail.length > 0) {\n        tail.reverse().map((item) => {\n            if (item === '}') {\n                tokens.push({\n                    type: 'brace',\n                    value: '}',\n                });\n            }\n            else if (item === ']') {\n                tokens.push({\n                    type: 'paren',\n                    value: ']',\n                });\n            }\n        });\n    }\n    return tokens;\n}, generate = (tokens) => {\n    let output = '';\n    tokens.map((token) => {\n        switch (token.type) {\n            case 'string':\n                output += '\"' + token.value + '\"';\n                break;\n            default:\n                output += token.value;\n                break;\n        }\n    });\n    return output;\n}, partialParse = (input) => JSON.parse(generate(unstrip(strip(tokenize(input)))));\nexport { partialParse };\n//# sourceMappingURL=parser.mjs.map","var _BetaMessageStream_instances, _BetaMessageStream_currentMessageSnapshot, _BetaMessageStream_connectedPromise, _BetaMessageStream_resolveConnectedPromise, _BetaMessageStream_rejectConnectedPromise, _BetaMessageStream_endPromise, _BetaMessageStream_resolveEndPromise, _BetaMessageStream_rejectEndPromise, _BetaMessageStream_listeners, _BetaMessageStream_ended, _BetaMessageStream_errored, _BetaMessageStream_aborted, _BetaMessageStream_catchingPromiseCreated, _BetaMessageStream_response, _BetaMessageStream_request_id, _BetaMessageStream_getFinalMessage, _BetaMessageStream_getFinalText, _BetaMessageStream_handleError, _BetaMessageStream_beginRequest, _BetaMessageStream_addStreamEvent, _BetaMessageStream_endRequest, _BetaMessageStream_accumulateMessage;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { isAbortError } from \"../internal/errors.mjs\";\nimport { AnthropicError, APIUserAbortError } from \"../error.mjs\";\nimport { Stream } from \"../streaming.mjs\";\nimport { partialParse } from \"../_vendor/partial-json-parser/parser.mjs\";\nconst JSON_BUF_PROPERTY = '__json_buf';\nfunction tracksToolInput(content) {\n    return content.type === 'tool_use' || content.type === 'server_tool_use' || content.type === 'mcp_tool_use';\n}\nexport class BetaMessageStream {\n    constructor() {\n        _BetaMessageStream_instances.add(this);\n        this.messages = [];\n        this.receivedMessages = [];\n        _BetaMessageStream_currentMessageSnapshot.set(this, void 0);\n        this.controller = new AbortController();\n        _BetaMessageStream_connectedPromise.set(this, void 0);\n        _BetaMessageStream_resolveConnectedPromise.set(this, () => { });\n        _BetaMessageStream_rejectConnectedPromise.set(this, () => { });\n        _BetaMessageStream_endPromise.set(this, void 0);\n        _BetaMessageStream_resolveEndPromise.set(this, () => { });\n        _BetaMessageStream_rejectEndPromise.set(this, () => { });\n        _BetaMessageStream_listeners.set(this, {});\n        _BetaMessageStream_ended.set(this, false);\n        _BetaMessageStream_errored.set(this, false);\n        _BetaMessageStream_aborted.set(this, false);\n        _BetaMessageStream_catchingPromiseCreated.set(this, false);\n        _BetaMessageStream_response.set(this, void 0);\n        _BetaMessageStream_request_id.set(this, void 0);\n        _BetaMessageStream_handleError.set(this, (error) => {\n            __classPrivateFieldSet(this, _BetaMessageStream_errored, true, \"f\");\n            if (isAbortError(error)) {\n                error = new APIUserAbortError();\n            }\n            if (error instanceof APIUserAbortError) {\n                __classPrivateFieldSet(this, _BetaMessageStream_aborted, true, \"f\");\n                return this._emit('abort', error);\n            }\n            if (error instanceof AnthropicError) {\n                return this._emit('error', error);\n            }\n            if (error instanceof Error) {\n                const anthropicError = new AnthropicError(error.message);\n                // @ts-ignore\n                anthropicError.cause = error;\n                return this._emit('error', anthropicError);\n            }\n            return this._emit('error', new AnthropicError(String(error)));\n        });\n        __classPrivateFieldSet(this, _BetaMessageStream_connectedPromise, new Promise((resolve, reject) => {\n            __classPrivateFieldSet(this, _BetaMessageStream_resolveConnectedPromise, resolve, \"f\");\n            __classPrivateFieldSet(this, _BetaMessageStream_rejectConnectedPromise, reject, \"f\");\n        }), \"f\");\n        __classPrivateFieldSet(this, _BetaMessageStream_endPromise, new Promise((resolve, reject) => {\n            __classPrivateFieldSet(this, _BetaMessageStream_resolveEndPromise, resolve, \"f\");\n            __classPrivateFieldSet(this, _BetaMessageStream_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, _BetaMessageStream_connectedPromise, \"f\").catch(() => { });\n        __classPrivateFieldGet(this, _BetaMessageStream_endPromise, \"f\").catch(() => { });\n    }\n    get response() {\n        return __classPrivateFieldGet(this, _BetaMessageStream_response, \"f\");\n    }\n    get request_id() {\n        return __classPrivateFieldGet(this, _BetaMessageStream_request_id, \"f\");\n    }\n    /**\n     * Returns the `MessageStream` data, the raw `Response` instance and the ID of the request,\n     * returned vie the `request-id` header which is useful for debugging requests and resporting\n     * issues to Anthropic.\n     *\n     * This is the same as the `APIPromise.withResponse()` method.\n     *\n     * This method will raise an error if you created the stream using `MessageStream.fromReadableStream`\n     * as no `Response` is available.\n     */\n    async withResponse() {\n        const response = await __classPrivateFieldGet(this, _BetaMessageStream_connectedPromise, \"f\");\n        if (!response) {\n            throw new Error('Could not resolve a `Response` object');\n        }\n        return {\n            data: this,\n            response,\n            request_id: response.headers.get('request-id'),\n        };\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 BetaMessageStream();\n        runner._run(() => runner._fromReadableStream(stream));\n        return runner;\n    }\n    static createMessage(messages, params, options) {\n        const runner = new BetaMessageStream();\n        for (const message of params.messages) {\n            runner._addMessageParam(message);\n        }\n        runner._run(() => runner._createMessage(messages, { ...params, stream: true }, { ...options, headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' } }));\n        return runner;\n    }\n    _run(executor) {\n        executor().then(() => {\n            this._emitFinal();\n            this._emit('end');\n        }, __classPrivateFieldGet(this, _BetaMessageStream_handleError, \"f\"));\n    }\n    _addMessageParam(message) {\n        this.messages.push(message);\n    }\n    _addMessage(message, emit = true) {\n        this.receivedMessages.push(message);\n        if (emit) {\n            this._emit('message', message);\n        }\n    }\n    async _createMessage(messages, params, options) {\n        const signal = options?.signal;\n        let abortHandler;\n        if (signal) {\n            if (signal.aborted)\n                this.controller.abort();\n            abortHandler = this.controller.abort.bind(this.controller);\n            signal.addEventListener('abort', abortHandler);\n        }\n        try {\n            __classPrivateFieldGet(this, _BetaMessageStream_instances, \"m\", _BetaMessageStream_beginRequest).call(this);\n            const { response, data: stream } = await messages\n                .create({ ...params, stream: true }, { ...options, signal: this.controller.signal })\n                .withResponse();\n            this._connected(response);\n            for await (const event of stream) {\n                __classPrivateFieldGet(this, _BetaMessageStream_instances, \"m\", _BetaMessageStream_addStreamEvent).call(this, event);\n            }\n            if (stream.controller.signal?.aborted) {\n                throw new APIUserAbortError();\n            }\n            __classPrivateFieldGet(this, _BetaMessageStream_instances, \"m\", _BetaMessageStream_endRequest).call(this);\n        }\n        finally {\n            if (signal && abortHandler) {\n                signal.removeEventListener('abort', abortHandler);\n            }\n        }\n    }\n    _connected(response) {\n        if (this.ended)\n            return;\n        __classPrivateFieldSet(this, _BetaMessageStream_response, response, \"f\");\n        __classPrivateFieldSet(this, _BetaMessageStream_request_id, response?.headers.get('request-id'), \"f\");\n        __classPrivateFieldGet(this, _BetaMessageStream_resolveConnectedPromise, \"f\").call(this, response);\n        this._emit('connect');\n    }\n    get ended() {\n        return __classPrivateFieldGet(this, _BetaMessageStream_ended, \"f\");\n    }\n    get errored() {\n        return __classPrivateFieldGet(this, _BetaMessageStream_errored, \"f\");\n    }\n    get aborted() {\n        return __classPrivateFieldGet(this, _BetaMessageStream_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 MessageStream, so that calls can be chained\n     */\n    on(event, listener) {\n        const listeners = __classPrivateFieldGet(this, _BetaMessageStream_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _BetaMessageStream_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 MessageStream, so that calls can be chained\n     */\n    off(event, listener) {\n        const listeners = __classPrivateFieldGet(this, _BetaMessageStream_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 MessageStream, so that calls can be chained\n     */\n    once(event, listener) {\n        const listeners = __classPrivateFieldGet(this, _BetaMessageStream_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _BetaMessageStream_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, _BetaMessageStream_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, _BetaMessageStream_catchingPromiseCreated, true, \"f\");\n        await __classPrivateFieldGet(this, _BetaMessageStream_endPromise, \"f\");\n    }\n    get currentMessage() {\n        return __classPrivateFieldGet(this, _BetaMessageStream_currentMessageSnapshot, \"f\");\n    }\n    /**\n     * @returns a promise that resolves with the the final assistant Message response,\n     * or rejects if an error occurred or the stream ended prematurely without producing a Message.\n     */\n    async finalMessage() {\n        await this.done();\n        return __classPrivateFieldGet(this, _BetaMessageStream_instances, \"m\", _BetaMessageStream_getFinalMessage).call(this);\n    }\n    /**\n     * @returns a promise that resolves with the the final assistant Message's text response, concatenated\n     * together if there are more than one text blocks.\n     * Rejects if an error occurred or the stream ended prematurely without producing a Message.\n     */\n    async finalText() {\n        await this.done();\n        return __classPrivateFieldGet(this, _BetaMessageStream_instances, \"m\", _BetaMessageStream_getFinalText).call(this);\n    }\n    _emit(event, ...args) {\n        // make sure we don't emit any MessageStreamEvents after end\n        if (__classPrivateFieldGet(this, _BetaMessageStream_ended, \"f\"))\n            return;\n        if (event === 'end') {\n            __classPrivateFieldSet(this, _BetaMessageStream_ended, true, \"f\");\n            __classPrivateFieldGet(this, _BetaMessageStream_resolveEndPromise, \"f\").call(this);\n        }\n        const listeners = __classPrivateFieldGet(this, _BetaMessageStream_listeners, \"f\")[event];\n        if (listeners) {\n            __classPrivateFieldGet(this, _BetaMessageStream_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, _BetaMessageStream_catchingPromiseCreated, \"f\") && !listeners?.length) {\n                Promise.reject(error);\n            }\n            __classPrivateFieldGet(this, _BetaMessageStream_rejectConnectedPromise, \"f\").call(this, error);\n            __classPrivateFieldGet(this, _BetaMessageStream_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, _BetaMessageStream_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.final...()\n                // - etc.\n                Promise.reject(error);\n            }\n            __classPrivateFieldGet(this, _BetaMessageStream_rejectConnectedPromise, \"f\").call(this, error);\n            __classPrivateFieldGet(this, _BetaMessageStream_rejectEndPromise, \"f\").call(this, error);\n            this._emit('end');\n        }\n    }\n    _emitFinal() {\n        const finalMessage = this.receivedMessages.at(-1);\n        if (finalMessage) {\n            this._emit('finalMessage', __classPrivateFieldGet(this, _BetaMessageStream_instances, \"m\", _BetaMessageStream_getFinalMessage).call(this));\n        }\n    }\n    async _fromReadableStream(readableStream, options) {\n        const signal = options?.signal;\n        let abortHandler;\n        if (signal) {\n            if (signal.aborted)\n                this.controller.abort();\n            abortHandler = this.controller.abort.bind(this.controller);\n            signal.addEventListener('abort', abortHandler);\n        }\n        try {\n            __classPrivateFieldGet(this, _BetaMessageStream_instances, \"m\", _BetaMessageStream_beginRequest).call(this);\n            this._connected(null);\n            const stream = Stream.fromReadableStream(readableStream, this.controller);\n            for await (const event of stream) {\n                __classPrivateFieldGet(this, _BetaMessageStream_instances, \"m\", _BetaMessageStream_addStreamEvent).call(this, event);\n            }\n            if (stream.controller.signal?.aborted) {\n                throw new APIUserAbortError();\n            }\n            __classPrivateFieldGet(this, _BetaMessageStream_instances, \"m\", _BetaMessageStream_endRequest).call(this);\n        }\n        finally {\n            if (signal && abortHandler) {\n                signal.removeEventListener('abort', abortHandler);\n            }\n        }\n    }\n    [(_BetaMessageStream_currentMessageSnapshot = new WeakMap(), _BetaMessageStream_connectedPromise = new WeakMap(), _BetaMessageStream_resolveConnectedPromise = new WeakMap(), _BetaMessageStream_rejectConnectedPromise = new WeakMap(), _BetaMessageStream_endPromise = new WeakMap(), _BetaMessageStream_resolveEndPromise = new WeakMap(), _BetaMessageStream_rejectEndPromise = new WeakMap(), _BetaMessageStream_listeners = new WeakMap(), _BetaMessageStream_ended = new WeakMap(), _BetaMessageStream_errored = new WeakMap(), _BetaMessageStream_aborted = new WeakMap(), _BetaMessageStream_catchingPromiseCreated = new WeakMap(), _BetaMessageStream_response = new WeakMap(), _BetaMessageStream_request_id = new WeakMap(), _BetaMessageStream_handleError = new WeakMap(), _BetaMessageStream_instances = new WeakSet(), _BetaMessageStream_getFinalMessage = function _BetaMessageStream_getFinalMessage() {\n        if (this.receivedMessages.length === 0) {\n            throw new AnthropicError('stream ended without producing a Message with role=assistant');\n        }\n        return this.receivedMessages.at(-1);\n    }, _BetaMessageStream_getFinalText = function _BetaMessageStream_getFinalText() {\n        if (this.receivedMessages.length === 0) {\n            throw new AnthropicError('stream ended without producing a Message with role=assistant');\n        }\n        const textBlocks = this.receivedMessages\n            .at(-1)\n            .content.filter((block) => block.type === 'text')\n            .map((block) => block.text);\n        if (textBlocks.length === 0) {\n            throw new AnthropicError('stream ended without producing a content block with type=text');\n        }\n        return textBlocks.join(' ');\n    }, _BetaMessageStream_beginRequest = function _BetaMessageStream_beginRequest() {\n        if (this.ended)\n            return;\n        __classPrivateFieldSet(this, _BetaMessageStream_currentMessageSnapshot, undefined, \"f\");\n    }, _BetaMessageStream_addStreamEvent = function _BetaMessageStream_addStreamEvent(event) {\n        if (this.ended)\n            return;\n        const messageSnapshot = __classPrivateFieldGet(this, _BetaMessageStream_instances, \"m\", _BetaMessageStream_accumulateMessage).call(this, event);\n        this._emit('streamEvent', event, messageSnapshot);\n        switch (event.type) {\n            case 'content_block_delta': {\n                const content = messageSnapshot.content.at(-1);\n                switch (event.delta.type) {\n                    case 'text_delta': {\n                        if (content.type === 'text') {\n                            this._emit('text', event.delta.text, content.text || '');\n                        }\n                        break;\n                    }\n                    case 'citations_delta': {\n                        if (content.type === 'text') {\n                            this._emit('citation', event.delta.citation, content.citations ?? []);\n                        }\n                        break;\n                    }\n                    case 'input_json_delta': {\n                        if (tracksToolInput(content) && content.input) {\n                            this._emit('inputJson', event.delta.partial_json, content.input);\n                        }\n                        break;\n                    }\n                    case 'thinking_delta': {\n                        if (content.type === 'thinking') {\n                            this._emit('thinking', event.delta.thinking, content.thinking);\n                        }\n                        break;\n                    }\n                    case 'signature_delta': {\n                        if (content.type === 'thinking') {\n                            this._emit('signature', content.signature);\n                        }\n                        break;\n                    }\n                    default:\n                        checkNever(event.delta);\n                }\n                break;\n            }\n            case 'message_stop': {\n                this._addMessageParam(messageSnapshot);\n                this._addMessage(messageSnapshot, true);\n                break;\n            }\n            case 'content_block_stop': {\n                this._emit('contentBlock', messageSnapshot.content.at(-1));\n                break;\n            }\n            case 'message_start': {\n                __classPrivateFieldSet(this, _BetaMessageStream_currentMessageSnapshot, messageSnapshot, \"f\");\n                break;\n            }\n            case 'content_block_start':\n            case 'message_delta':\n                break;\n        }\n    }, _BetaMessageStream_endRequest = function _BetaMessageStream_endRequest() {\n        if (this.ended) {\n            throw new AnthropicError(`stream has ended, this shouldn't happen`);\n        }\n        const snapshot = __classPrivateFieldGet(this, _BetaMessageStream_currentMessageSnapshot, \"f\");\n        if (!snapshot) {\n            throw new AnthropicError(`request ended without sending any chunks`);\n        }\n        __classPrivateFieldSet(this, _BetaMessageStream_currentMessageSnapshot, undefined, \"f\");\n        return snapshot;\n    }, _BetaMessageStream_accumulateMessage = function _BetaMessageStream_accumulateMessage(event) {\n        let snapshot = __classPrivateFieldGet(this, _BetaMessageStream_currentMessageSnapshot, \"f\");\n        if (event.type === 'message_start') {\n            if (snapshot) {\n                throw new AnthropicError(`Unexpected event order, got ${event.type} before receiving \"message_stop\"`);\n            }\n            return event.message;\n        }\n        if (!snapshot) {\n            throw new AnthropicError(`Unexpected event order, got ${event.type} before \"message_start\"`);\n        }\n        switch (event.type) {\n            case 'message_stop':\n                return snapshot;\n            case 'message_delta':\n                snapshot.container = event.delta.container;\n                snapshot.stop_reason = event.delta.stop_reason;\n                snapshot.stop_sequence = event.delta.stop_sequence;\n                snapshot.usage.output_tokens = event.usage.output_tokens;\n                if (event.usage.input_tokens != null) {\n                    snapshot.usage.input_tokens = event.usage.input_tokens;\n                }\n                if (event.usage.cache_creation_input_tokens != null) {\n                    snapshot.usage.cache_creation_input_tokens = event.usage.cache_creation_input_tokens;\n                }\n                if (event.usage.cache_read_input_tokens != null) {\n                    snapshot.usage.cache_read_input_tokens = event.usage.cache_read_input_tokens;\n                }\n                if (event.usage.server_tool_use != null) {\n                    snapshot.usage.server_tool_use = event.usage.server_tool_use;\n                }\n                return snapshot;\n            case 'content_block_start':\n                snapshot.content.push(event.content_block);\n                return snapshot;\n            case 'content_block_delta': {\n                const snapshotContent = snapshot.content.at(event.index);\n                switch (event.delta.type) {\n                    case 'text_delta': {\n                        if (snapshotContent?.type === 'text') {\n                            snapshot.content[event.index] = {\n                                ...snapshotContent,\n                                text: (snapshotContent.text || '') + event.delta.text,\n                            };\n                        }\n                        break;\n                    }\n                    case 'citations_delta': {\n                        if (snapshotContent?.type === 'text') {\n                            snapshot.content[event.index] = {\n                                ...snapshotContent,\n                                citations: [...(snapshotContent.citations ?? []), event.delta.citation],\n                            };\n                        }\n                        break;\n                    }\n                    case 'input_json_delta': {\n                        if (snapshotContent && tracksToolInput(snapshotContent)) {\n                            // we need to keep track of the raw JSON string as well so that we can\n                            // re-parse it for each delta, for now we just store it as an untyped\n                            // non-enumerable property on the snapshot\n                            let jsonBuf = snapshotContent[JSON_BUF_PROPERTY] || '';\n                            jsonBuf += event.delta.partial_json;\n                            const newContent = { ...snapshotContent };\n                            Object.defineProperty(newContent, JSON_BUF_PROPERTY, {\n                                value: jsonBuf,\n                                enumerable: false,\n                                writable: true,\n                            });\n                            if (jsonBuf) {\n                                try {\n                                    newContent.input = partialParse(jsonBuf);\n                                }\n                                catch (err) {\n                                    const error = new AnthropicError(`Unable to parse tool parameter JSON from model. Please retry your request or adjust your prompt. Error: ${err}. JSON: ${jsonBuf}`);\n                                    __classPrivateFieldGet(this, _BetaMessageStream_handleError, \"f\").call(this, error);\n                                }\n                            }\n                            snapshot.content[event.index] = newContent;\n                        }\n                        break;\n                    }\n                    case 'thinking_delta': {\n                        if (snapshotContent?.type === 'thinking') {\n                            snapshot.content[event.index] = {\n                                ...snapshotContent,\n                                thinking: snapshotContent.thinking + event.delta.thinking,\n                            };\n                        }\n                        break;\n                    }\n                    case 'signature_delta': {\n                        if (snapshotContent?.type === 'thinking') {\n                            snapshot.content[event.index] = {\n                                ...snapshotContent,\n                                signature: event.delta.signature,\n                            };\n                        }\n                        break;\n                    }\n                    default:\n                        checkNever(event.delta);\n                }\n                return snapshot;\n            }\n            case 'content_block_stop':\n                return snapshot;\n        }\n    }, Symbol.asyncIterator)]() {\n        const pushQueue = [];\n        const readQueue = [];\n        let done = false;\n        this.on('streamEvent', (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    toReadableStream() {\n        const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n        return stream.toReadableStream();\n    }\n}\n// used to ensure exhaustive case matching without throwing a runtime error\nfunction checkNever(x) { }\n//# sourceMappingURL=BetaMessageStream.mjs.map","// File containing shared constants\n/**\n * Model-specific timeout constraints for non-streaming requests\n */\nexport const MODEL_NONSTREAMING_TOKENS = {\n    'claude-opus-4-20250514': 8192,\n    'claude-opus-4-0': 8192,\n    'claude-4-opus-20250514': 8192,\n    'anthropic.claude-opus-4-20250514-v1:0': 8192,\n    'claude-opus-4@20250514': 8192,\n};\n//# sourceMappingURL=constants.mjs.map","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nimport { APIResource } from \"../../../core/resource.mjs\";\nimport * as BatchesAPI from \"./batches.mjs\";\nimport { Batches, } from \"./batches.mjs\";\nimport { buildHeaders } from \"../../../internal/headers.mjs\";\nimport { BetaMessageStream } from \"../../../lib/BetaMessageStream.mjs\";\nconst DEPRECATED_MODELS = {\n    'claude-1.3': 'November 6th, 2024',\n    'claude-1.3-100k': 'November 6th, 2024',\n    'claude-instant-1.1': 'November 6th, 2024',\n    'claude-instant-1.1-100k': 'November 6th, 2024',\n    'claude-instant-1.2': 'November 6th, 2024',\n    'claude-3-sonnet-20240229': 'July 21st, 2025',\n    'claude-3-opus-20240229': 'January 5th, 2026',\n    'claude-2.1': 'July 21st, 2025',\n    'claude-2.0': 'July 21st, 2025',\n};\nimport { MODEL_NONSTREAMING_TOKENS } from \"../../../internal/constants.mjs\";\nexport class Messages extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.batches = new BatchesAPI.Batches(this._client);\n    }\n    create(params, options) {\n        const { betas, ...body } = params;\n        if (body.model in DEPRECATED_MODELS) {\n            console.warn(`The model '${body.model}' is deprecated and will reach end-of-life on ${DEPRECATED_MODELS[body.model]}\\nPlease migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`);\n        }\n        let timeout = this._client._options.timeout;\n        if (!body.stream && timeout == null) {\n            const maxNonstreamingTokens = MODEL_NONSTREAMING_TOKENS[body.model] ?? undefined;\n            timeout = this._client.calculateNonstreamingTimeout(body.max_tokens, maxNonstreamingTokens);\n        }\n        return this._client.post('/v1/messages?beta=true', {\n            body,\n            timeout: timeout ?? 600000,\n            ...options,\n            headers: buildHeaders([\n                { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n                options?.headers,\n            ]),\n            stream: params.stream ?? false,\n        });\n    }\n    /**\n     * Create a Message stream\n     */\n    stream(body, options) {\n        return BetaMessageStream.createMessage(this, body, options);\n    }\n    /**\n     * Count the number of tokens in a Message.\n     *\n     * The Token Count API can be used to count the number of tokens in a Message,\n     * including tools, images, and documents, without creating it.\n     *\n     * Learn more about token counting in our\n     * [user guide](/en/docs/build-with-claude/token-counting)\n     *\n     * @example\n     * ```ts\n     * const betaMessageTokensCount =\n     *   await client.beta.messages.countTokens({\n     *     messages: [{ content: 'string', role: 'user' }],\n     *     model: 'claude-3-7-sonnet-latest',\n     *   });\n     * ```\n     */\n    countTokens(params, options) {\n        const { betas, ...body } = params;\n        return this._client.post('/v1/messages/count_tokens?beta=true', {\n            body,\n            ...options,\n            headers: buildHeaders([\n                { 'anthropic-beta': [...(betas ?? []), 'token-counting-2024-11-01'].toString() },\n                options?.headers,\n            ]),\n        });\n    }\n}\nMessages.Batches = Batches;\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 * as FilesAPI from \"./files.mjs\";\nimport { Files, } from \"./files.mjs\";\nimport * as ModelsAPI from \"./models.mjs\";\nimport { Models } from \"./models.mjs\";\nimport * as MessagesAPI from \"./messages/messages.mjs\";\nimport { Messages, } from \"./messages/messages.mjs\";\nexport class Beta extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.models = new ModelsAPI.Models(this._client);\n        this.messages = new MessagesAPI.Messages(this._client);\n        this.files = new FilesAPI.Files(this._client);\n    }\n}\nBeta.Models = Models;\nBeta.Messages = Messages;\nBeta.Files = Files;\n//# sourceMappingURL=beta.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 Completions extends APIResource {\n    create(params, options) {\n        const { betas, ...body } = params;\n        return this._client.post('/v1/complete', {\n            body,\n            timeout: this._client._options.timeout ?? 600000,\n            ...options,\n            headers: buildHeaders([\n                { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n                options?.headers,\n            ]),\n            stream: params.stream ?? false,\n        });\n    }\n}\n//# sourceMappingURL=completions.mjs.map","var _MessageStream_instances, _MessageStream_currentMessageSnapshot, _MessageStream_connectedPromise, _MessageStream_resolveConnectedPromise, _MessageStream_rejectConnectedPromise, _MessageStream_endPromise, _MessageStream_resolveEndPromise, _MessageStream_rejectEndPromise, _MessageStream_listeners, _MessageStream_ended, _MessageStream_errored, _MessageStream_aborted, _MessageStream_catchingPromiseCreated, _MessageStream_response, _MessageStream_request_id, _MessageStream_getFinalMessage, _MessageStream_getFinalText, _MessageStream_handleError, _MessageStream_beginRequest, _MessageStream_addStreamEvent, _MessageStream_endRequest, _MessageStream_accumulateMessage;\nimport { __classPrivateFieldGet, __classPrivateFieldSet } from \"../internal/tslib.mjs\";\nimport { isAbortError } from \"../internal/errors.mjs\";\nimport { AnthropicError, APIUserAbortError } from \"../error.mjs\";\nimport { Stream } from \"../streaming.mjs\";\nimport { partialParse } from \"../_vendor/partial-json-parser/parser.mjs\";\nconst JSON_BUF_PROPERTY = '__json_buf';\nfunction tracksToolInput(content) {\n    return content.type === 'tool_use' || content.type === 'server_tool_use';\n}\nexport class MessageStream {\n    constructor() {\n        _MessageStream_instances.add(this);\n        this.messages = [];\n        this.receivedMessages = [];\n        _MessageStream_currentMessageSnapshot.set(this, void 0);\n        this.controller = new AbortController();\n        _MessageStream_connectedPromise.set(this, void 0);\n        _MessageStream_resolveConnectedPromise.set(this, () => { });\n        _MessageStream_rejectConnectedPromise.set(this, () => { });\n        _MessageStream_endPromise.set(this, void 0);\n        _MessageStream_resolveEndPromise.set(this, () => { });\n        _MessageStream_rejectEndPromise.set(this, () => { });\n        _MessageStream_listeners.set(this, {});\n        _MessageStream_ended.set(this, false);\n        _MessageStream_errored.set(this, false);\n        _MessageStream_aborted.set(this, false);\n        _MessageStream_catchingPromiseCreated.set(this, false);\n        _MessageStream_response.set(this, void 0);\n        _MessageStream_request_id.set(this, void 0);\n        _MessageStream_handleError.set(this, (error) => {\n            __classPrivateFieldSet(this, _MessageStream_errored, true, \"f\");\n            if (isAbortError(error)) {\n                error = new APIUserAbortError();\n            }\n            if (error instanceof APIUserAbortError) {\n                __classPrivateFieldSet(this, _MessageStream_aborted, true, \"f\");\n                return this._emit('abort', error);\n            }\n            if (error instanceof AnthropicError) {\n                return this._emit('error', error);\n            }\n            if (error instanceof Error) {\n                const anthropicError = new AnthropicError(error.message);\n                // @ts-ignore\n                anthropicError.cause = error;\n                return this._emit('error', anthropicError);\n            }\n            return this._emit('error', new AnthropicError(String(error)));\n        });\n        __classPrivateFieldSet(this, _MessageStream_connectedPromise, new Promise((resolve, reject) => {\n            __classPrivateFieldSet(this, _MessageStream_resolveConnectedPromise, resolve, \"f\");\n            __classPrivateFieldSet(this, _MessageStream_rejectConnectedPromise, reject, \"f\");\n        }), \"f\");\n        __classPrivateFieldSet(this, _MessageStream_endPromise, new Promise((resolve, reject) => {\n            __classPrivateFieldSet(this, _MessageStream_resolveEndPromise, resolve, \"f\");\n            __classPrivateFieldSet(this, _MessageStream_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, _MessageStream_connectedPromise, \"f\").catch(() => { });\n        __classPrivateFieldGet(this, _MessageStream_endPromise, \"f\").catch(() => { });\n    }\n    get response() {\n        return __classPrivateFieldGet(this, _MessageStream_response, \"f\");\n    }\n    get request_id() {\n        return __classPrivateFieldGet(this, _MessageStream_request_id, \"f\");\n    }\n    /**\n     * Returns the `MessageStream` data, the raw `Response` instance and the ID of the request,\n     * returned vie the `request-id` header which is useful for debugging requests and resporting\n     * issues to Anthropic.\n     *\n     * This is the same as the `APIPromise.withResponse()` method.\n     *\n     * This method will raise an error if you created the stream using `MessageStream.fromReadableStream`\n     * as no `Response` is available.\n     */\n    async withResponse() {\n        const response = await __classPrivateFieldGet(this, _MessageStream_connectedPromise, \"f\");\n        if (!response) {\n            throw new Error('Could not resolve a `Response` object');\n        }\n        return {\n            data: this,\n            response,\n            request_id: response.headers.get('request-id'),\n        };\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 MessageStream();\n        runner._run(() => runner._fromReadableStream(stream));\n        return runner;\n    }\n    static createMessage(messages, params, options) {\n        const runner = new MessageStream();\n        for (const message of params.messages) {\n            runner._addMessageParam(message);\n        }\n        runner._run(() => runner._createMessage(messages, { ...params, stream: true }, { ...options, headers: { ...options?.headers, 'X-Stainless-Helper-Method': 'stream' } }));\n        return runner;\n    }\n    _run(executor) {\n        executor().then(() => {\n            this._emitFinal();\n            this._emit('end');\n        }, __classPrivateFieldGet(this, _MessageStream_handleError, \"f\"));\n    }\n    _addMessageParam(message) {\n        this.messages.push(message);\n    }\n    _addMessage(message, emit = true) {\n        this.receivedMessages.push(message);\n        if (emit) {\n            this._emit('message', message);\n        }\n    }\n    async _createMessage(messages, params, options) {\n        const signal = options?.signal;\n        let abortHandler;\n        if (signal) {\n            if (signal.aborted)\n                this.controller.abort();\n            abortHandler = this.controller.abort.bind(this.controller);\n            signal.addEventListener('abort', abortHandler);\n        }\n        try {\n            __classPrivateFieldGet(this, _MessageStream_instances, \"m\", _MessageStream_beginRequest).call(this);\n            const { response, data: stream } = await messages\n                .create({ ...params, stream: true }, { ...options, signal: this.controller.signal })\n                .withResponse();\n            this._connected(response);\n            for await (const event of stream) {\n                __classPrivateFieldGet(this, _MessageStream_instances, \"m\", _MessageStream_addStreamEvent).call(this, event);\n            }\n            if (stream.controller.signal?.aborted) {\n                throw new APIUserAbortError();\n            }\n            __classPrivateFieldGet(this, _MessageStream_instances, \"m\", _MessageStream_endRequest).call(this);\n        }\n        finally {\n            if (signal && abortHandler) {\n                signal.removeEventListener('abort', abortHandler);\n            }\n        }\n    }\n    _connected(response) {\n        if (this.ended)\n            return;\n        __classPrivateFieldSet(this, _MessageStream_response, response, \"f\");\n        __classPrivateFieldSet(this, _MessageStream_request_id, response?.headers.get('request-id'), \"f\");\n        __classPrivateFieldGet(this, _MessageStream_resolveConnectedPromise, \"f\").call(this, response);\n        this._emit('connect');\n    }\n    get ended() {\n        return __classPrivateFieldGet(this, _MessageStream_ended, \"f\");\n    }\n    get errored() {\n        return __classPrivateFieldGet(this, _MessageStream_errored, \"f\");\n    }\n    get aborted() {\n        return __classPrivateFieldGet(this, _MessageStream_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 MessageStream, so that calls can be chained\n     */\n    on(event, listener) {\n        const listeners = __classPrivateFieldGet(this, _MessageStream_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _MessageStream_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 MessageStream, so that calls can be chained\n     */\n    off(event, listener) {\n        const listeners = __classPrivateFieldGet(this, _MessageStream_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 MessageStream, so that calls can be chained\n     */\n    once(event, listener) {\n        const listeners = __classPrivateFieldGet(this, _MessageStream_listeners, \"f\")[event] || (__classPrivateFieldGet(this, _MessageStream_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, _MessageStream_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, _MessageStream_catchingPromiseCreated, true, \"f\");\n        await __classPrivateFieldGet(this, _MessageStream_endPromise, \"f\");\n    }\n    get currentMessage() {\n        return __classPrivateFieldGet(this, _MessageStream_currentMessageSnapshot, \"f\");\n    }\n    /**\n     * @returns a promise that resolves with the the final assistant Message response,\n     * or rejects if an error occurred or the stream ended prematurely without producing a Message.\n     */\n    async finalMessage() {\n        await this.done();\n        return __classPrivateFieldGet(this, _MessageStream_instances, \"m\", _MessageStream_getFinalMessage).call(this);\n    }\n    /**\n     * @returns a promise that resolves with the the final assistant Message's text response, concatenated\n     * together if there are more than one text blocks.\n     * Rejects if an error occurred or the stream ended prematurely without producing a Message.\n     */\n    async finalText() {\n        await this.done();\n        return __classPrivateFieldGet(this, _MessageStream_instances, \"m\", _MessageStream_getFinalText).call(this);\n    }\n    _emit(event, ...args) {\n        // make sure we don't emit any MessageStreamEvents after end\n        if (__classPrivateFieldGet(this, _MessageStream_ended, \"f\"))\n            return;\n        if (event === 'end') {\n            __classPrivateFieldSet(this, _MessageStream_ended, true, \"f\");\n            __classPrivateFieldGet(this, _MessageStream_resolveEndPromise, \"f\").call(this);\n        }\n        const listeners = __classPrivateFieldGet(this, _MessageStream_listeners, \"f\")[event];\n        if (listeners) {\n            __classPrivateFieldGet(this, _MessageStream_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, _MessageStream_catchingPromiseCreated, \"f\") && !listeners?.length) {\n                Promise.reject(error);\n            }\n            __classPrivateFieldGet(this, _MessageStream_rejectConnectedPromise, \"f\").call(this, error);\n            __classPrivateFieldGet(this, _MessageStream_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, _MessageStream_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.final...()\n                // - etc.\n                Promise.reject(error);\n            }\n            __classPrivateFieldGet(this, _MessageStream_rejectConnectedPromise, \"f\").call(this, error);\n            __classPrivateFieldGet(this, _MessageStream_rejectEndPromise, \"f\").call(this, error);\n            this._emit('end');\n        }\n    }\n    _emitFinal() {\n        const finalMessage = this.receivedMessages.at(-1);\n        if (finalMessage) {\n            this._emit('finalMessage', __classPrivateFieldGet(this, _MessageStream_instances, \"m\", _MessageStream_getFinalMessage).call(this));\n        }\n    }\n    async _fromReadableStream(readableStream, options) {\n        const signal = options?.signal;\n        let abortHandler;\n        if (signal) {\n            if (signal.aborted)\n                this.controller.abort();\n            abortHandler = this.controller.abort.bind(this.controller);\n            signal.addEventListener('abort', abortHandler);\n        }\n        try {\n            __classPrivateFieldGet(this, _MessageStream_instances, \"m\", _MessageStream_beginRequest).call(this);\n            this._connected(null);\n            const stream = Stream.fromReadableStream(readableStream, this.controller);\n            for await (const event of stream) {\n                __classPrivateFieldGet(this, _MessageStream_instances, \"m\", _MessageStream_addStreamEvent).call(this, event);\n            }\n            if (stream.controller.signal?.aborted) {\n                throw new APIUserAbortError();\n            }\n            __classPrivateFieldGet(this, _MessageStream_instances, \"m\", _MessageStream_endRequest).call(this);\n        }\n        finally {\n            if (signal && abortHandler) {\n                signal.removeEventListener('abort', abortHandler);\n            }\n        }\n    }\n    [(_MessageStream_currentMessageSnapshot = new WeakMap(), _MessageStream_connectedPromise = new WeakMap(), _MessageStream_resolveConnectedPromise = new WeakMap(), _MessageStream_rejectConnectedPromise = new WeakMap(), _MessageStream_endPromise = new WeakMap(), _MessageStream_resolveEndPromise = new WeakMap(), _MessageStream_rejectEndPromise = new WeakMap(), _MessageStream_listeners = new WeakMap(), _MessageStream_ended = new WeakMap(), _MessageStream_errored = new WeakMap(), _MessageStream_aborted = new WeakMap(), _MessageStream_catchingPromiseCreated = new WeakMap(), _MessageStream_response = new WeakMap(), _MessageStream_request_id = new WeakMap(), _MessageStream_handleError = new WeakMap(), _MessageStream_instances = new WeakSet(), _MessageStream_getFinalMessage = function _MessageStream_getFinalMessage() {\n        if (this.receivedMessages.length === 0) {\n            throw new AnthropicError('stream ended without producing a Message with role=assistant');\n        }\n        return this.receivedMessages.at(-1);\n    }, _MessageStream_getFinalText = function _MessageStream_getFinalText() {\n        if (this.receivedMessages.length === 0) {\n            throw new AnthropicError('stream ended without producing a Message with role=assistant');\n        }\n        const textBlocks = this.receivedMessages\n            .at(-1)\n            .content.filter((block) => block.type === 'text')\n            .map((block) => block.text);\n        if (textBlocks.length === 0) {\n            throw new AnthropicError('stream ended without producing a content block with type=text');\n        }\n        return textBlocks.join(' ');\n    }, _MessageStream_beginRequest = function _MessageStream_beginRequest() {\n        if (this.ended)\n            return;\n        __classPrivateFieldSet(this, _MessageStream_currentMessageSnapshot, undefined, \"f\");\n    }, _MessageStream_addStreamEvent = function _MessageStream_addStreamEvent(event) {\n        if (this.ended)\n            return;\n        const messageSnapshot = __classPrivateFieldGet(this, _MessageStream_instances, \"m\", _MessageStream_accumulateMessage).call(this, event);\n        this._emit('streamEvent', event, messageSnapshot);\n        switch (event.type) {\n            case 'content_block_delta': {\n                const content = messageSnapshot.content.at(-1);\n                switch (event.delta.type) {\n                    case 'text_delta': {\n                        if (content.type === 'text') {\n                            this._emit('text', event.delta.text, content.text || '');\n                        }\n                        break;\n                    }\n                    case 'citations_delta': {\n                        if (content.type === 'text') {\n                            this._emit('citation', event.delta.citation, content.citations ?? []);\n                        }\n                        break;\n                    }\n                    case 'input_json_delta': {\n                        if (tracksToolInput(content) && content.input) {\n                            this._emit('inputJson', event.delta.partial_json, content.input);\n                        }\n                        break;\n                    }\n                    case 'thinking_delta': {\n                        if (content.type === 'thinking') {\n                            this._emit('thinking', event.delta.thinking, content.thinking);\n                        }\n                        break;\n                    }\n                    case 'signature_delta': {\n                        if (content.type === 'thinking') {\n                            this._emit('signature', content.signature);\n                        }\n                        break;\n                    }\n                    default:\n                        checkNever(event.delta);\n                }\n                break;\n            }\n            case 'message_stop': {\n                this._addMessageParam(messageSnapshot);\n                this._addMessage(messageSnapshot, true);\n                break;\n            }\n            case 'content_block_stop': {\n                this._emit('contentBlock', messageSnapshot.content.at(-1));\n                break;\n            }\n            case 'message_start': {\n                __classPrivateFieldSet(this, _MessageStream_currentMessageSnapshot, messageSnapshot, \"f\");\n                break;\n            }\n            case 'content_block_start':\n            case 'message_delta':\n                break;\n        }\n    }, _MessageStream_endRequest = function _MessageStream_endRequest() {\n        if (this.ended) {\n            throw new AnthropicError(`stream has ended, this shouldn't happen`);\n        }\n        const snapshot = __classPrivateFieldGet(this, _MessageStream_currentMessageSnapshot, \"f\");\n        if (!snapshot) {\n            throw new AnthropicError(`request ended without sending any chunks`);\n        }\n        __classPrivateFieldSet(this, _MessageStream_currentMessageSnapshot, undefined, \"f\");\n        return snapshot;\n    }, _MessageStream_accumulateMessage = function _MessageStream_accumulateMessage(event) {\n        let snapshot = __classPrivateFieldGet(this, _MessageStream_currentMessageSnapshot, \"f\");\n        if (event.type === 'message_start') {\n            if (snapshot) {\n                throw new AnthropicError(`Unexpected event order, got ${event.type} before receiving \"message_stop\"`);\n            }\n            return event.message;\n        }\n        if (!snapshot) {\n            throw new AnthropicError(`Unexpected event order, got ${event.type} before \"message_start\"`);\n        }\n        switch (event.type) {\n            case 'message_stop':\n                return snapshot;\n            case 'message_delta':\n                snapshot.stop_reason = event.delta.stop_reason;\n                snapshot.stop_sequence = event.delta.stop_sequence;\n                snapshot.usage.output_tokens = event.usage.output_tokens;\n                // Update other usage fields if they exist in the event\n                if (event.usage.input_tokens != null) {\n                    snapshot.usage.input_tokens = event.usage.input_tokens;\n                }\n                if (event.usage.cache_creation_input_tokens != null) {\n                    snapshot.usage.cache_creation_input_tokens = event.usage.cache_creation_input_tokens;\n                }\n                if (event.usage.cache_read_input_tokens != null) {\n                    snapshot.usage.cache_read_input_tokens = event.usage.cache_read_input_tokens;\n                }\n                if (event.usage.server_tool_use != null) {\n                    snapshot.usage.server_tool_use = event.usage.server_tool_use;\n                }\n                return snapshot;\n            case 'content_block_start':\n                snapshot.content.push({ ...event.content_block });\n                return snapshot;\n            case 'content_block_delta': {\n                const snapshotContent = snapshot.content.at(event.index);\n                switch (event.delta.type) {\n                    case 'text_delta': {\n                        if (snapshotContent?.type === 'text') {\n                            snapshot.content[event.index] = {\n                                ...snapshotContent,\n                                text: (snapshotContent.text || '') + event.delta.text,\n                            };\n                        }\n                        break;\n                    }\n                    case 'citations_delta': {\n                        if (snapshotContent?.type === 'text') {\n                            snapshot.content[event.index] = {\n                                ...snapshotContent,\n                                citations: [...(snapshotContent.citations ?? []), event.delta.citation],\n                            };\n                        }\n                        break;\n                    }\n                    case 'input_json_delta': {\n                        if (snapshotContent && tracksToolInput(snapshotContent)) {\n                            // we need to keep track of the raw JSON string as well so that we can\n                            // re-parse it for each delta, for now we just store it as an untyped\n                            // non-enumerable property on the snapshot\n                            let jsonBuf = snapshotContent[JSON_BUF_PROPERTY] || '';\n                            jsonBuf += event.delta.partial_json;\n                            const newContent = { ...snapshotContent };\n                            Object.defineProperty(newContent, JSON_BUF_PROPERTY, {\n                                value: jsonBuf,\n                                enumerable: false,\n                                writable: true,\n                            });\n                            if (jsonBuf) {\n                                newContent.input = partialParse(jsonBuf);\n                            }\n                            snapshot.content[event.index] = newContent;\n                        }\n                        break;\n                    }\n                    case 'thinking_delta': {\n                        if (snapshotContent?.type === 'thinking') {\n                            snapshot.content[event.index] = {\n                                ...snapshotContent,\n                                thinking: snapshotContent.thinking + event.delta.thinking,\n                            };\n                        }\n                        break;\n                    }\n                    case 'signature_delta': {\n                        if (snapshotContent?.type === 'thinking') {\n                            snapshot.content[event.index] = {\n                                ...snapshotContent,\n                                signature: event.delta.signature,\n                            };\n                        }\n                        break;\n                    }\n                    default:\n                        checkNever(event.delta);\n                }\n                return snapshot;\n            }\n            case 'content_block_stop':\n                return snapshot;\n        }\n    }, Symbol.asyncIterator)]() {\n        const pushQueue = [];\n        const readQueue = [];\n        let done = false;\n        this.on('streamEvent', (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    toReadableStream() {\n        const stream = new Stream(this[Symbol.asyncIterator].bind(this), this.controller);\n        return stream.toReadableStream();\n    }\n}\n// used to ensure exhaustive case matching without throwing a runtime error\nfunction checkNever(x) { }\n//# sourceMappingURL=MessageStream.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 { buildHeaders } from \"../../internal/headers.mjs\";\nimport { JSONLDecoder } from \"../../internal/decoders/jsonl.mjs\";\nimport { AnthropicError } from \"../../error.mjs\";\nimport { path } from \"../../internal/utils/path.mjs\";\nexport class Batches extends APIResource {\n    /**\n     * Send a batch of Message creation requests.\n     *\n     * The Message Batches API can be used to process multiple Messages API requests at\n     * once. Once a Message Batch is created, it begins processing immediately. Batches\n     * can take up to 24 hours to complete.\n     *\n     * Learn more about the Message Batches API in our\n     * [user guide](/en/docs/build-with-claude/batch-processing)\n     *\n     * @example\n     * ```ts\n     * const messageBatch = await client.messages.batches.create({\n     *   requests: [\n     *     {\n     *       custom_id: 'my-custom-id-1',\n     *       params: {\n     *         max_tokens: 1024,\n     *         messages: [\n     *           { content: 'Hello, world', role: 'user' },\n     *         ],\n     *         model: 'claude-sonnet-4-20250514',\n     *       },\n     *     },\n     *   ],\n     * });\n     * ```\n     */\n    create(body, options) {\n        return this._client.post('/v1/messages/batches', { body, ...options });\n    }\n    /**\n     * This endpoint is idempotent and can be used to poll for Message Batch\n     * completion. To access the results of a Message Batch, make a request to the\n     * `results_url` field in the response.\n     *\n     * Learn more about the Message Batches API in our\n     * [user guide](/en/docs/build-with-claude/batch-processing)\n     *\n     * @example\n     * ```ts\n     * const messageBatch = await client.messages.batches.retrieve(\n     *   'message_batch_id',\n     * );\n     * ```\n     */\n    retrieve(messageBatchID, options) {\n        return this._client.get(path `/v1/messages/batches/${messageBatchID}`, options);\n    }\n    /**\n     * List all Message Batches within a Workspace. Most recently created batches are\n     * returned first.\n     *\n     * Learn more about the Message Batches API in our\n     * [user guide](/en/docs/build-with-claude/batch-processing)\n     *\n     * @example\n     * ```ts\n     * // Automatically fetches more pages as needed.\n     * for await (const messageBatch of client.messages.batches.list()) {\n     *   // ...\n     * }\n     * ```\n     */\n    list(query = {}, options) {\n        return this._client.getAPIList('/v1/messages/batches', (Page), { query, ...options });\n    }\n    /**\n     * Delete a Message Batch.\n     *\n     * Message Batches can only be deleted once they've finished processing. If you'd\n     * like to delete an in-progress batch, you must first cancel it.\n     *\n     * Learn more about the Message Batches API in our\n     * [user guide](/en/docs/build-with-claude/batch-processing)\n     *\n     * @example\n     * ```ts\n     * const deletedMessageBatch =\n     *   await client.messages.batches.delete('message_batch_id');\n     * ```\n     */\n    delete(messageBatchID, options) {\n        return this._client.delete(path `/v1/messages/batches/${messageBatchID}`, options);\n    }\n    /**\n     * Batches may be canceled any time before processing ends. Once cancellation is\n     * initiated, the batch enters a `canceling` state, at which time the system may\n     * complete any in-progress, non-interruptible requests before finalizing\n     * cancellation.\n     *\n     * The number of canceled requests is specified in `request_counts`. To determine\n     * which requests were canceled, check the individual results within the batch.\n     * Note that cancellation may not result in any canceled requests if they were\n     * non-interruptible.\n     *\n     * Learn more about the Message Batches API in our\n     * [user guide](/en/docs/build-with-claude/batch-processing)\n     *\n     * @example\n     * ```ts\n     * const messageBatch = await client.messages.batches.cancel(\n     *   'message_batch_id',\n     * );\n     * ```\n     */\n    cancel(messageBatchID, options) {\n        return this._client.post(path `/v1/messages/batches/${messageBatchID}/cancel`, options);\n    }\n    /**\n     * Streams the results of a Message Batch as a `.jsonl` file.\n     *\n     * Each line in the file is a JSON object containing the result of a single request\n     * in the Message Batch. Results are not guaranteed to be in the same order as\n     * requests. Use the `custom_id` field to match results to requests.\n     *\n     * Learn more about the Message Batches API in our\n     * [user guide](/en/docs/build-with-claude/batch-processing)\n     *\n     * @example\n     * ```ts\n     * const messageBatchIndividualResponse =\n     *   await client.messages.batches.results('message_batch_id');\n     * ```\n     */\n    async results(messageBatchID, options) {\n        const batch = await this.retrieve(messageBatchID);\n        if (!batch.results_url) {\n            throw new AnthropicError(`No batch \\`results_url\\`; Has it finished processing? ${batch.processing_status} - ${batch.id}`);\n        }\n        return this._client\n            .get(batch.results_url, {\n            ...options,\n            headers: buildHeaders([{ Accept: 'application/binary' }, options?.headers]),\n            stream: true,\n            __binaryResponse: true,\n        })\n            ._thenUnwrap((_, props) => JSONLDecoder.fromResponse(props.response, props.controller));\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 { MessageStream } from \"../../lib/MessageStream.mjs\";\nimport * as BatchesAPI from \"./batches.mjs\";\nimport { Batches, } from \"./batches.mjs\";\nimport { MODEL_NONSTREAMING_TOKENS } from \"../../internal/constants.mjs\";\nexport class Messages extends APIResource {\n    constructor() {\n        super(...arguments);\n        this.batches = new BatchesAPI.Batches(this._client);\n    }\n    create(body, options) {\n        if (body.model in DEPRECATED_MODELS) {\n            console.warn(`The model '${body.model}' is deprecated and will reach end-of-life on ${DEPRECATED_MODELS[body.model]}\\nPlease migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`);\n        }\n        let timeout = this._client._options.timeout;\n        if (!body.stream && timeout == null) {\n            const maxNonstreamingTokens = MODEL_NONSTREAMING_TOKENS[body.model] ?? undefined;\n            timeout = this._client.calculateNonstreamingTimeout(body.max_tokens, maxNonstreamingTokens);\n        }\n        return this._client.post('/v1/messages', {\n            body,\n            timeout: timeout ?? 600000,\n            ...options,\n            stream: body.stream ?? false,\n        });\n    }\n    /**\n     * Create a Message stream\n     */\n    stream(body, options) {\n        return MessageStream.createMessage(this, body, options);\n    }\n    /**\n     * Count the number of tokens in a Message.\n     *\n     * The Token Count API can be used to count the number of tokens in a Message,\n     * including tools, images, and documents, without creating it.\n     *\n     * Learn more about token counting in our\n     * [user guide](/en/docs/build-with-claude/token-counting)\n     *\n     * @example\n     * ```ts\n     * const messageTokensCount =\n     *   await client.messages.countTokens({\n     *     messages: [{ content: 'string', role: 'user' }],\n     *     model: 'claude-3-7-sonnet-latest',\n     *   });\n     * ```\n     */\n    countTokens(body, options) {\n        return this._client.post('/v1/messages/count_tokens', { body, ...options });\n    }\n}\nconst DEPRECATED_MODELS = {\n    'claude-1.3': 'November 6th, 2024',\n    'claude-1.3-100k': 'November 6th, 2024',\n    'claude-instant-1.1': 'November 6th, 2024',\n    'claude-instant-1.1-100k': 'November 6th, 2024',\n    'claude-instant-1.2': 'November 6th, 2024',\n    'claude-3-sonnet-20240229': 'July 21st, 2025',\n    'claude-3-opus-20240229': 'January 5th, 2026',\n    'claude-2.1': 'July 21st, 2025',\n    'claude-2.0': 'July 21st, 2025',\n};\nMessages.Batches = Batches;\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 { Page } from \"../core/pagination.mjs\";\nimport { buildHeaders } from \"../internal/headers.mjs\";\nimport { path } from \"../internal/utils/path.mjs\";\nexport class Models extends APIResource {\n    /**\n     * Get a specific model.\n     *\n     * The Models API response can be used to determine information about a specific\n     * model or resolve a model alias to a model ID.\n     */\n    retrieve(modelID, params = {}, options) {\n        const { betas } = params ?? {};\n        return this._client.get(path `/v1/models/${modelID}`, {\n            ...options,\n            headers: buildHeaders([\n                { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n                options?.headers,\n            ]),\n        });\n    }\n    /**\n     * List available models.\n     *\n     * The Models API response can be used to determine which models are available for\n     * use in the API. More recently released models are listed first.\n     */\n    list(params = {}, options) {\n        const { betas, ...query } = params ?? {};\n        return this._client.getAPIList('/v1/models', (Page), {\n            query,\n            ...options,\n            headers: buildHeaders([\n                { ...(betas?.toString() != null ? { 'anthropic-beta': betas?.toString() } : undefined) },\n                options?.headers,\n            ]),\n        });\n    }\n}\n//# sourceMappingURL=models.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","// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.\nvar _BaseAnthropic_instances, _a, _BaseAnthropic_encoder, _BaseAnthropic_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 { 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 { Completions, } from \"./resources/completions.mjs\";\nimport { Models } from \"./resources/models.mjs\";\nimport { Beta, } from \"./resources/beta/beta.mjs\";\nimport { Messages, } from \"./resources/messages/messages.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 * Base class for Anthropic API clients.\n */\nexport class BaseAnthropic {\n    /**\n     * API Client for interfacing with the Anthropic API.\n     *\n     * @param {string | null | undefined} [opts.apiKey=process.env['ANTHROPIC_API_KEY'] ?? null]\n     * @param {string | null | undefined} [opts.authToken=process.env['ANTHROPIC_AUTH_TOKEN'] ?? null]\n     * @param {string} [opts.baseURL=process.env['ANTHROPIC_BASE_URL'] ?? https://api.anthropic.com] - 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('ANTHROPIC_BASE_URL'), apiKey = readEnv('ANTHROPIC_API_KEY') ?? null, authToken = readEnv('ANTHROPIC_AUTH_TOKEN') ?? null, ...opts } = {}) {\n        _BaseAnthropic_instances.add(this);\n        _BaseAnthropic_encoder.set(this, void 0);\n        const options = {\n            apiKey,\n            authToken,\n            ...opts,\n            baseURL: baseURL || `https://api.anthropic.com`,\n        };\n        if (!options.dangerouslyAllowBrowser && isRunningInBrowser()) {\n            throw new Errors.AnthropicError(\"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 Anthropic({ apiKey, dangerouslyAllowBrowser: true });\\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('ANTHROPIC_LOG'), \"process.env['ANTHROPIC_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, _BaseAnthropic_encoder, Opts.FallbackEncoder, \"f\");\n        this._options = options;\n        this.apiKey = apiKey;\n        this.authToken = authToken;\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        return 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            authToken: this.authToken,\n            ...options,\n        });\n    }\n    defaultQuery() {\n        return this._options.defaultQuery;\n    }\n    validateHeaders({ values, nulls }) {\n        if (this.apiKey && values.get('x-api-key')) {\n            return;\n        }\n        if (nulls.has('x-api-key')) {\n            return;\n        }\n        if (this.authToken && values.get('authorization')) {\n            return;\n        }\n        if (nulls.has('authorization')) {\n            return;\n        }\n        throw new Error('Could not resolve authentication method. Expected either apiKey or authToken to be set. Or for one of the \"X-Api-Key\" or \"Authorization\" headers to be explicitly omitted');\n    }\n    authHeaders(opts) {\n        return buildHeaders([this.apiKeyAuth(opts), this.bearerAuth(opts)]);\n    }\n    apiKeyAuth(opts) {\n        if (this.apiKey == null) {\n            return undefined;\n        }\n        return buildHeaders([{ 'X-Api-Key': this.apiKey }]);\n    }\n    bearerAuth(opts) {\n        if (this.authToken == null) {\n            return undefined;\n        }\n        return buildHeaders([{ Authorization: `Bearer ${this.authToken}` }]);\n    }\n    /**\n     * Basic re-implementation of `qs.stringify` for primitive types.\n     */\n    stringifyQuery(query) {\n        return Object.entries(query)\n            .filter(([_, value]) => typeof value !== 'undefined')\n            .map(([key, value]) => {\n            if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n                return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;\n            }\n            if (value === null) {\n                return `${encodeURIComponent(key)}=`;\n            }\n            throw new Errors.AnthropicError(`Cannot stringify type ${typeof value}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`);\n        })\n            .join('&');\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, _BaseAnthropic_instances, \"m\", _BaseAnthropic_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    _calculateNonstreamingTimeout(maxTokens) {\n        const defaultTimeout = 10 * 60;\n        const expectedTimeout = (60 * 60 * maxTokens) / 128000;\n        if (expectedTimeout > defaultTimeout) {\n            throw new Errors.AnthropicError('Streaming is strongly recommended for operations that may take longer than 10 minutes. ' +\n                'See https://github.com/anthropics/anthropic-sdk-typescript#streaming-responses for more details');\n        }\n        return defaultTimeout * 1000;\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 } = this.buildRequest(options, { retryCount: maxRetries - retriesRemaining });\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 === '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 = 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    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    calculateNonstreamingTimeout(maxTokens, maxNonstreamingTokens) {\n        const maxTime = 60 * 60 * 1000; // 10 minutes\n        const defaultTime = 60 * 10 * 1000; // 10 minutes\n        const expectedTime = (maxTime * maxTokens) / 128000;\n        if (expectedTime > defaultTime || (maxNonstreamingTokens != null && maxTokens > maxNonstreamingTokens)) {\n            throw new Errors.AnthropicError('Streaming is strongly recommended for operations that may token longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#long-requests for more details');\n        }\n        return defaultTime;\n    }\n    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 = 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    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                ...(this._options.dangerouslyAllowBrowser ?\n                    { 'anthropic-dangerous-direct-browser-access': 'true' }\n                    : undefined),\n                'anthropic-version': '2023-06-01',\n            },\n            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, _BaseAnthropic_encoder, \"f\").call(this, { body, headers });\n        }\n    }\n}\n_a = BaseAnthropic, _BaseAnthropic_encoder = new WeakMap(), _BaseAnthropic_instances = new WeakSet(), _BaseAnthropic_baseURLOverridden = function _BaseAnthropic_baseURLOverridden() {\n    return this.baseURL !== 'https://api.anthropic.com';\n};\nBaseAnthropic.Anthropic = _a;\nBaseAnthropic.HUMAN_PROMPT = '\\n\\nHuman:';\nBaseAnthropic.AI_PROMPT = '\\n\\nAssistant:';\nBaseAnthropic.DEFAULT_TIMEOUT = 600000; // 10 minutes\nBaseAnthropic.AnthropicError = Errors.AnthropicError;\nBaseAnthropic.APIError = Errors.APIError;\nBaseAnthropic.APIConnectionError = Errors.APIConnectionError;\nBaseAnthropic.APIConnectionTimeoutError = Errors.APIConnectionTimeoutError;\nBaseAnthropic.APIUserAbortError = Errors.APIUserAbortError;\nBaseAnthropic.NotFoundError = Errors.NotFoundError;\nBaseAnthropic.ConflictError = Errors.ConflictError;\nBaseAnthropic.RateLimitError = Errors.RateLimitError;\nBaseAnthropic.BadRequestError = Errors.BadRequestError;\nBaseAnthropic.AuthenticationError = Errors.AuthenticationError;\nBaseAnthropic.InternalServerError = Errors.InternalServerError;\nBaseAnthropic.PermissionDeniedError = Errors.PermissionDeniedError;\nBaseAnthropic.UnprocessableEntityError = Errors.UnprocessableEntityError;\nBaseAnthropic.toFile = Uploads.toFile;\n/**\n * API Client for interfacing with the Anthropic API.\n */\nexport class Anthropic extends BaseAnthropic {\n    constructor() {\n        super(...arguments);\n        this.completions = new API.Completions(this);\n        this.messages = new API.Messages(this);\n        this.models = new API.Models(this);\n        this.beta = new API.Beta(this);\n    }\n}\nAnthropic.Completions = Completions;\nAnthropic.Messages = Messages;\nAnthropic.Models = Models;\nAnthropic.Beta = Beta;\nexport const { HUMAN_PROMPT, AI_PROMPT } = Anthropic;\n//# sourceMappingURL=client.mjs.map"],"names":["__classPrivateFieldSet","receiver","state","value","kind","f","__classPrivateFieldGet","uuid4","crypto","u8","randomByte","c","isAbortError","err","castToError","error","AnthropicError","APIError","status","message","headers","msg","errorResponse","APIConnectionError","BadRequestError","AuthenticationError","PermissionDeniedError","NotFoundError","ConflictError","UnprocessableEntityError","RateLimitError","InternalServerError","APIUserAbortError","cause","APIConnectionTimeoutError","startsWithSchemeRegexp","isAbsoluteURL","url","isArray","val","isReadonlyArray","maybeObj","x","isEmptyObj","obj","_k","hasOwn","key","validatePositiveInteger","name","n","safeJSON","text","sleep","ms","resolve","VERSION","isRunningInBrowser","getDetectedPlatform","getPlatformProperties","detectedPlatform","normalizePlatform","normalizeArch","browserInfo","getBrowserInfo","browserPatterns","pattern","match","major","minor","patch","arch","platform","_platformHeaders","getPlatformHeaders","getDefaultFetch","makeReadableStream","args","ReadableStream","ReadableStreamFrom","iterable","iter","controller","done","ReadableStreamToAsyncIterable","stream","reader","result","e","cancelPromise","CancelReadableStream","FallbackEncoder","body","concatBytes","buffers","length","buffer","output","index","encodeUTF8_","encodeUTF8","str","encoder","decodeUTF8_","decodeUTF8","bytes","decoder","_LineDecoder_buffer","_LineDecoder_carriageReturnIndex","LineDecoder","chunk","binaryChunk","lines","patternIndex","findNewlineIndex","endIndex","line","startIndex","i","findDoubleNewlineIndex","levelNumbers","parseLogLevel","maybeLevel","sourceName","client","loggerFor","noop","makeLogFn","fnLevel","logger","logLevel","noopLogger","cachedLoggers","cachedLogger","levelLogger","formatRequestDetails","details","_Stream_client","Stream","iterator","response","consumed","sse","_iterSSEMessages","readableStream","iterLines","lineDecoder","left","right","teeIterator","queue","self","ctrl","sseDecoder","SSEDecoder","sseChunk","iterSSEChunks","data","newData","fieldname","_","partition","delimiter","defaultParseResponse","props","requestLogID","retryOfRequestLogID","startTime","mediaType","json","addRequestID","_APIPromise_client","APIPromise","responsePromise","parseResponse","transform","p","onfulfilled","onrejected","onfinally","_AbstractPage_client","AbstractPage","options","nextOptions","page","item","PagePromise","request","Page","first_id","cursor","checkFileSupport","process","isOldNode","makeFile","fileBits","fileName","getName","isAsyncIterable","multipartFormRequestOptions","opts","fetch","createForm","supportsFormDataMap","supportsFormData","fetchObject","cached","promise","FetchResponse","form","addFormValue","isNamedBlob","contentType","entry","prop","isBlobLike","isFileLike","isResponseLike","toFile","blob","getBytes","parts","type","part","constructor","propsForError","APIResource","brand_privateNullableHeaders","iterateHeaders","values","nulls","shouldClear","row","didClear","buildHeaders","newHeaders","targetHeaders","nullHeaders","seenHeaders","lowerName","encodeURIPath","EMPTY","createPathTagFunction","pathEncoder","statics","params","postPath","invalidSegments","path","previousValue","currentValue","encoded","pathOnly","invalidSegmentPattern","a","b","lastEnd","underline","acc","segment","spaces","arrows","Files","betas","query","fileID","modelID","JSONLDecoder","messageBatchID","batch","tokenize","input","current","tokens","char","danglingQuote","NUMBERS","LETTERS","strip","lastToken","lastCharacterOfLastToken","tokenBeforeTheLastToken","unstrip","tail","token","generate","partialParse","_BetaMessageStream_instances","_BetaMessageStream_currentMessageSnapshot","_BetaMessageStream_connectedPromise","_BetaMessageStream_resolveConnectedPromise","_BetaMessageStream_rejectConnectedPromise","_BetaMessageStream_endPromise","_BetaMessageStream_resolveEndPromise","_BetaMessageStream_rejectEndPromise","_BetaMessageStream_listeners","_BetaMessageStream_ended","_BetaMessageStream_errored","_BetaMessageStream_aborted","_BetaMessageStream_catchingPromiseCreated","_BetaMessageStream_response","_BetaMessageStream_request_id","_BetaMessageStream_getFinalMessage","_BetaMessageStream_getFinalText","_BetaMessageStream_handleError","_BetaMessageStream_beginRequest","_BetaMessageStream_addStreamEvent","_BetaMessageStream_endRequest","_BetaMessageStream_accumulateMessage","JSON_BUF_PROPERTY","tracksToolInput","content","BetaMessageStream","anthropicError","reject","runner","messages","executor","emit","signal","abortHandler","event","listener","listeners","l","textBlocks","block","messageSnapshot","snapshot","snapshotContent","jsonBuf","newContent","pushQueue","readQueue","MODEL_NONSTREAMING_TOKENS","DEPRECATED_MODELS","BatchesAPI.Batches","timeout","maxNonstreamingTokens","Messages","Batches","Beta","ModelsAPI.Models","MessagesAPI.Messages","FilesAPI.Files","Models","Completions","_MessageStream_instances","_MessageStream_currentMessageSnapshot","_MessageStream_connectedPromise","_MessageStream_resolveConnectedPromise","_MessageStream_rejectConnectedPromise","_MessageStream_endPromise","_MessageStream_resolveEndPromise","_MessageStream_rejectEndPromise","_MessageStream_listeners","_MessageStream_ended","_MessageStream_errored","_MessageStream_aborted","_MessageStream_catchingPromiseCreated","_MessageStream_response","_MessageStream_request_id","_MessageStream_getFinalMessage","_MessageStream_getFinalText","_MessageStream_handleError","_MessageStream_beginRequest","_MessageStream_addStreamEvent","_MessageStream_endRequest","_MessageStream_accumulateMessage","MessageStream","readEnv","env","_BaseAnthropic_instances","_a","_BaseAnthropic_encoder","_BaseAnthropic_baseURLOverridden","BaseAnthropic","baseURL","apiKey","authToken","Errors.AnthropicError","defaultLogLevel","Shims.getDefaultFetch","Opts.FallbackEncoder","Errors.APIError","defaultBaseURL","defaultQuery","maxTokens","method","remainingRetries","optionsInput","retriesRemaining","maxRetries","req","retryLogStr","Errors.APIUserAbortError","headersTime","retryMessage","isTimeout","Errors.APIConnectionTimeoutError","Errors.APIConnectionError","specialHeaders","responseInfo","shouldRetry","Shims.CancelReadableStream","errText","errJSON","errMessage","Pagination.PagePromise","init","isReadableBody","fetchOptions","shouldRetryHeader","responseHeaders","timeoutMillis","retryAfterMillisHeader","timeoutMs","retryAfterHeader","timeoutSeconds","numRetries","sleepSeconds","jitter","inputOptions","retryCount","bodyHeaders","reqHeaders","idempotencyHeaders","rawHeaders","Shims.ReadableStreamFrom","Errors.NotFoundError","Errors.ConflictError","Errors.RateLimitError","Errors.BadRequestError","Errors.AuthenticationError","Errors.InternalServerError","Errors.PermissionDeniedError","Errors.UnprocessableEntityError","Uploads.toFile","Anthropic","API.Completions","API.Messages","API.Models","API.Beta","HUMAN_PROMPT","AI_PROMPT"],"mappings":"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","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]}