ai 3.0.13 → 3.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/index.d.mts +998 -2
  2. package/dist/index.d.ts +998 -2
  3. package/dist/index.js +1743 -15
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +1720 -15
  6. package/dist/index.mjs.map +1 -1
  7. package/mistral/dist/index.d.mts +371 -0
  8. package/mistral/dist/index.d.ts +371 -0
  9. package/mistral/dist/index.js +936 -0
  10. package/mistral/dist/index.js.map +1 -0
  11. package/mistral/dist/index.mjs +900 -0
  12. package/mistral/dist/index.mjs.map +1 -0
  13. package/openai/dist/index.d.mts +434 -0
  14. package/openai/dist/index.d.ts +434 -0
  15. package/openai/dist/index.js +1355 -0
  16. package/openai/dist/index.js.map +1 -0
  17. package/openai/dist/index.mjs +1319 -0
  18. package/openai/dist/index.mjs.map +1 -0
  19. package/package.json +32 -6
  20. package/prompts/dist/index.d.mts +13 -1
  21. package/prompts/dist/index.d.ts +13 -1
  22. package/prompts/dist/index.js +13 -0
  23. package/prompts/dist/index.js.map +1 -1
  24. package/prompts/dist/index.mjs +12 -0
  25. package/prompts/dist/index.mjs.map +1 -1
  26. package/react/dist/index.js +35 -34
  27. package/react/dist/index.js.map +1 -1
  28. package/react/dist/index.mjs +35 -34
  29. package/react/dist/index.mjs.map +1 -1
  30. package/rsc/dist/index.d.ts +45 -8
  31. package/rsc/dist/rsc-server.d.mts +45 -8
  32. package/rsc/dist/rsc-server.mjs +67 -13
  33. package/rsc/dist/rsc-server.mjs.map +1 -1
  34. package/rsc/dist/rsc-shared.d.mts +5 -8
  35. package/rsc/dist/rsc-shared.mjs +23 -2
  36. package/rsc/dist/rsc-shared.mjs.map +1 -1
  37. package/solid/dist/index.js +29 -27
  38. package/solid/dist/index.js.map +1 -1
  39. package/solid/dist/index.mjs +29 -27
  40. package/solid/dist/index.mjs.map +1 -1
  41. package/spec/dist/index.d.mts +708 -0
  42. package/spec/dist/index.d.ts +708 -0
  43. package/spec/dist/index.js +806 -0
  44. package/spec/dist/index.js.map +1 -0
  45. package/spec/dist/index.mjs +742 -0
  46. package/spec/dist/index.mjs.map +1 -0
  47. package/svelte/dist/index.js +31 -29
  48. package/svelte/dist/index.js.map +1 -1
  49. package/svelte/dist/index.mjs +31 -29
  50. package/svelte/dist/index.mjs.map +1 -1
  51. package/vue/dist/index.js +29 -27
  52. package/vue/dist/index.js.map +1 -1
  53. package/vue/dist/index.mjs +29 -27
  54. package/vue/dist/index.mjs.map +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../errors/api-call-error.ts","../errors/invalid-argument-error.ts","../errors/invalid-data-content-error.ts","../errors/invalid-prompt-error.ts","../errors/invalid-response-data-error.ts","../util/generate-id.ts","../util/get-error-message.ts","../errors/load-api-key-error.ts","../util/load-api-key.ts","../util/parse-json.ts","../errors/json-parse-error.ts","../errors/type-validation-error.ts","../util/validate-types.ts","../util/post-to-api.ts","../util/response-handler.ts","../errors/no-response-body-error.ts","../util/scale.ts","../util/uint8-utils.ts","../errors/invalid-tool-arguments-error.ts","../errors/no-object-generated-error.ts","../errors/no-such-tool-error.ts","../errors/retry-error.ts","../errors/unsupported-functionality-error.ts"],"sourcesContent":["export class APICallError extends Error {\n readonly url: string;\n readonly requestBodyValues: unknown;\n readonly statusCode?: number;\n readonly responseBody?: string;\n readonly cause?: unknown;\n readonly isRetryable: boolean;\n readonly data?: unknown;\n\n constructor({\n message,\n url,\n requestBodyValues,\n statusCode,\n responseBody,\n cause,\n isRetryable = statusCode != null &&\n (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500), // server error\n data,\n }: {\n message: string;\n url: string;\n requestBodyValues: unknown;\n statusCode?: number;\n responseBody?: string;\n cause?: unknown;\n isRetryable?: boolean;\n data?: unknown;\n }) {\n super(message);\n\n this.name = 'AI_APICallError';\n\n this.url = url;\n this.requestBodyValues = requestBodyValues;\n this.statusCode = statusCode;\n this.responseBody = responseBody;\n this.cause = cause;\n this.isRetryable = isRetryable;\n this.data = data;\n }\n\n static isAPICallError(error: unknown): error is APICallError {\n return (\n error instanceof Error &&\n error.name === 'AI_APICallError' &&\n typeof (error as APICallError).url === 'string' &&\n typeof (error as APICallError).requestBodyValues === 'object' &&\n ((error as APICallError).statusCode == null ||\n typeof (error as APICallError).statusCode === 'number') &&\n ((error as APICallError).responseBody == null ||\n typeof (error as APICallError).responseBody === 'string') &&\n ((error as APICallError).cause == null ||\n typeof (error as APICallError).cause === 'object') &&\n typeof (error as APICallError).isRetryable === 'boolean' &&\n ((error as APICallError).data == null ||\n typeof (error as APICallError).data === 'object')\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n url: this.url,\n requestBodyValues: this.requestBodyValues,\n statusCode: this.statusCode,\n responseBody: this.responseBody,\n cause: this.cause,\n isRetryable: this.isRetryable,\n data: this.data,\n };\n }\n}\n","export class InvalidArgumentError extends Error {\n readonly parameter: string;\n readonly value: unknown;\n\n constructor({\n parameter,\n value,\n message,\n }: {\n parameter: string;\n value: unknown;\n message: string;\n }) {\n super(`Invalid argument for parameter ${parameter}: ${message}`);\n\n this.name = 'AI_InvalidArgumentError';\n\n this.parameter = parameter;\n this.value = value;\n }\n\n static isInvalidArgumentError(error: unknown): error is InvalidArgumentError {\n return (\n error instanceof Error &&\n error.name === 'AI_InvalidArgumentError' &&\n typeof (error as InvalidArgumentError).parameter === 'string' &&\n typeof (error as InvalidArgumentError).value === 'string'\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n\n parameter: this.parameter,\n value: this.value,\n };\n }\n}\n","export class InvalidDataContentError extends Error {\n readonly content: unknown;\n\n constructor({\n content,\n message = `Invalid data content. Expected a string, Uint8Array, ArrayBuffer, or Buffer, but got ${typeof content}.`,\n }: {\n content: unknown;\n message?: string;\n }) {\n super(message);\n\n this.name = 'AI_InvalidDataContentError';\n\n this.content = content;\n }\n\n static isInvalidDataContentError(\n error: unknown,\n ): error is InvalidDataContentError {\n return (\n error instanceof Error &&\n error.name === 'AI_InvalidDataContentError' &&\n (error as InvalidDataContentError).content != null\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n\n content: this.content,\n };\n }\n}\n","export class InvalidPromptError extends Error {\n readonly prompt: unknown;\n\n constructor({ prompt, message }: { prompt: unknown; message: string }) {\n super(`Invalid prompt: ${message}`);\n\n this.name = 'AI_InvalidPromptError';\n\n this.prompt = prompt;\n }\n\n static isInvalidPromptError(error: unknown): error is InvalidPromptError {\n return (\n error instanceof Error &&\n error.name === 'AI_InvalidPromptError' &&\n prompt != null\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n\n prompt: this.prompt,\n };\n }\n}\n","/**\n * Server returned a response with invalid data content. This should be thrown by providers when they\n * cannot parse the response from the API.\n */\nexport class InvalidResponseDataError extends Error {\n readonly data: unknown;\n\n constructor({\n data,\n message = `Invalid response data: ${JSON.stringify(data)}.`,\n }: {\n data: unknown;\n message?: string;\n }) {\n super(message);\n\n this.name = 'AI_InvalidResponseDataError';\n\n this.data = data;\n }\n\n static isInvalidResponseDataError(\n error: unknown,\n ): error is InvalidResponseDataError {\n return (\n error instanceof Error &&\n error.name === 'AI_InvalidResponseDataError' &&\n (error as InvalidResponseDataError).data != null\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n\n data: this.data,\n };\n }\n}\n","import { customAlphabet } from 'nanoid/non-secure';\n\n/**\n * Generates a 7-character random string to use for IDs. Not secure.\n */\nexport const generateId = customAlphabet(\n '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n 7,\n);\n","export function getErrorMessage(error: unknown | undefined) {\n if (error == null) {\n return 'unknown error';\n }\n\n if (typeof error === 'string') {\n return error;\n }\n\n if (error instanceof Error) {\n return error.message;\n }\n\n return JSON.stringify(error);\n}\n","export class LoadAPIKeyError extends Error {\n constructor({ message }: { message: string }) {\n super(message);\n\n this.name = 'AI_LoadAPIKeyError';\n }\n\n static isLoadAPIKeyError(error: unknown): error is LoadAPIKeyError {\n return error instanceof Error && error.name === 'AI_LoadAPIKeyError';\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n };\n }\n}\n","import { LoadAPIKeyError } from '../errors/load-api-key-error';\n\nexport function loadApiKey({\n apiKey,\n environmentVariableName,\n apiKeyParameterName = 'apiKey',\n description,\n}: {\n apiKey: string | undefined;\n environmentVariableName: string;\n apiKeyParameterName?: string;\n description: string;\n}): string {\n if (typeof apiKey === 'string') {\n return apiKey;\n }\n\n if (apiKey != null) {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string.`,\n });\n }\n\n if (typeof process === 'undefined') {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`,\n });\n }\n\n apiKey = process.env[environmentVariableName];\n\n if (apiKey == null) {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`,\n });\n }\n\n if (typeof apiKey !== 'string') {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`,\n });\n }\n\n return apiKey;\n}\n","import SecureJSON from 'secure-json-parse';\nimport { ZodSchema } from 'zod';\nimport { JSONParseError } from '../errors/json-parse-error';\nimport { TypeValidationError } from '../errors/type-validation-error';\nimport { safeValidateTypes, validateTypes } from './validate-types';\n\n/**\n * Parses a JSON string into an unknown object.\n *\n * @param text - The JSON string to parse.\n * @returns {unknown} - The parsed JSON object.\n */\nexport function parseJSON({ text }: { text: string }): unknown;\n/**\n * Parses a JSON string into a strongly-typed object using the provided schema.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Schema<T>} schema - The schema to use for parsing the JSON.\n * @returns {T} - The parsed object.\n */\nexport function parseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema: ZodSchema<T>;\n}): T;\nexport function parseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: ZodSchema<T>;\n}): T {\n try {\n const value = SecureJSON.parse(text);\n\n if (schema == null) {\n return value;\n }\n\n return validateTypes({ value, schema });\n } catch (error) {\n if (\n JSONParseError.isJSONParseError(error) ||\n TypeValidationError.isTypeValidationError(error)\n ) {\n throw error;\n }\n\n throw new JSONParseError({ text, cause: error });\n }\n}\n\nexport type ParseResult<T> =\n | { success: true; value: T }\n | { success: false; error: JSONParseError | TypeValidationError };\n\n/**\n * Safely parses a JSON string and returns the result as an object of type `unknown`.\n *\n * @param text - The JSON string to parse.\n * @returns {object} Either an object with `success: true` and the parsed data, or an object with `success: false` and the error that occurred.\n */\nexport function safeParseJSON({ text }: { text: string }): ParseResult<unknown>;\n/**\n * Safely parses a JSON string into a strongly-typed object, using a provided schema to validate the object.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Schema<T>} schema - The schema to use for parsing the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport function safeParseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema: ZodSchema<T>;\n}): ParseResult<T>;\nexport function safeParseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: ZodSchema<T>;\n}):\n | { success: true; value: T }\n | { success: false; error: JSONParseError | TypeValidationError } {\n try {\n const value = SecureJSON.parse(text);\n\n if (schema == null) {\n return {\n success: true,\n value: value as T,\n };\n }\n\n return safeValidateTypes({ value, schema });\n } catch (error) {\n return {\n success: false,\n error: JSONParseError.isJSONParseError(error)\n ? error\n : new JSONParseError({ text, cause: error }),\n };\n }\n}\n\nexport function isParseableJson(input: string): boolean {\n try {\n SecureJSON.parse(input);\n return true;\n } catch {\n return false;\n }\n}\n","import { getErrorMessage } from '../util/get-error-message';\n\nexport class JSONParseError extends Error {\n // note: property order determines debugging output\n readonly text: string;\n readonly cause: unknown;\n\n constructor({ text, cause }: { text: string; cause: unknown }) {\n super(\n `JSON parsing failed: ` +\n `Text: ${text}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n );\n\n this.name = 'AI_JSONParseError';\n\n this.cause = cause;\n this.text = text;\n }\n\n static isJSONParseError(error: unknown): error is JSONParseError {\n return (\n error instanceof Error &&\n error.name === 'AI_JSONParseError' &&\n typeof (error as JSONParseError).text === 'string' &&\n typeof (error as JSONParseError).cause === 'string'\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n cause: this.cause,\n stack: this.stack,\n\n valueText: this.text,\n };\n }\n}\n","import { getErrorMessage } from '../util/get-error-message';\n\nexport class TypeValidationError extends Error {\n readonly value: unknown;\n readonly cause: unknown;\n\n constructor({ value, cause }: { value: unknown; cause: unknown }) {\n super(\n `Type validation failed: ` +\n `Value: ${JSON.stringify(value)}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n );\n\n this.name = 'AI_TypeValidationError';\n\n this.cause = cause;\n this.value = value;\n }\n\n static isTypeValidationError(error: unknown): error is TypeValidationError {\n return (\n error instanceof Error &&\n error.name === 'AI_TypeValidationError' &&\n typeof (error as TypeValidationError).value === 'string' &&\n typeof (error as TypeValidationError).cause === 'string'\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n cause: this.cause,\n stack: this.stack,\n\n value: this.value,\n };\n }\n}\n","import { ZodSchema } from 'zod';\nimport { TypeValidationError } from '../errors/type-validation-error';\n\n/**\n * Validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The object to validate.\n * @param {Schema<T>} options.schema - The schema to use for validating the JSON.\n * @returns {T} - The typed object.\n */\nexport function validateTypes<T>({\n value,\n schema,\n}: {\n value: unknown;\n schema: ZodSchema<T>;\n}): T {\n try {\n return schema.parse(value);\n } catch (error) {\n throw new TypeValidationError({ value, cause: error });\n }\n}\n\n/**\n * Safely validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The JSON object to validate.\n * @param {Schema<T>} options.schema - The schema to use for validating the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport function safeValidateTypes<T>({\n value,\n schema,\n}: {\n value: unknown;\n schema: ZodSchema<T>;\n}):\n | { success: true; value: T }\n | { success: false; error: TypeValidationError } {\n try {\n const validationResult = schema.safeParse(value);\n\n if (validationResult.success) {\n return {\n success: true,\n value: validationResult.data,\n };\n }\n\n return {\n success: false,\n error: new TypeValidationError({\n value,\n cause: validationResult.error,\n }),\n };\n } catch (error) {\n return {\n success: false,\n error: TypeValidationError.isTypeValidationError(error)\n ? error\n : new TypeValidationError({ value, cause: error }),\n };\n }\n}\n","import { APICallError } from '../errors/api-call-error';\nimport { ResponseHandler } from './response-handler';\n\nexport const postJsonToApi = async <T>({\n url,\n headers,\n body,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: unknown;\n failedResponseHandler: ResponseHandler<APICallError>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n}) =>\n postToApi({\n url,\n headers: {\n ...headers,\n 'Content-Type': 'application/json',\n },\n body: {\n content: JSON.stringify(body),\n values: body,\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n });\n\nexport const postToApi = async <T>({\n url,\n headers = {},\n body,\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: {\n content: string | FormData | Uint8Array;\n values: unknown;\n };\n failedResponseHandler: ResponseHandler<Error>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n}) => {\n try {\n // remove undefined headers:\n const definedHeaders = Object.fromEntries(\n Object.entries(headers).filter(([_key, value]) => value != null),\n ) as Record<string, string>;\n\n const response = await fetch(url, {\n method: 'POST',\n headers: definedHeaders,\n body: body.content,\n signal: abortSignal,\n });\n\n if (!response.ok) {\n try {\n throw await failedResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (error instanceof Error) {\n if (\n error.name === 'AbortError' ||\n APICallError.isAPICallError(error)\n ) {\n throw error;\n }\n }\n\n throw new APICallError({\n message: 'Failed to process error response',\n cause: error,\n statusCode: response.status,\n url,\n requestBodyValues: body.values,\n });\n }\n }\n\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (error instanceof Error) {\n if (error.name === 'AbortError' || APICallError.isAPICallError(error)) {\n throw error;\n }\n }\n\n throw new APICallError({\n message: 'Failed to process successful response',\n cause: error,\n statusCode: response.status,\n url,\n requestBodyValues: body.values,\n });\n }\n } catch (error) {\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw error;\n }\n }\n\n // unwrap original error when fetch failed (for easier debugging):\n if (error instanceof TypeError && error.message === 'fetch failed') {\n const cause = (error as any).cause;\n\n if (cause != null) {\n // Failed to connect to server:\n throw new APICallError({\n message: `Cannot connect to API: ${cause.message}`,\n cause,\n url,\n requestBodyValues: body.values,\n isRetryable: true, // retry when network error\n });\n }\n }\n\n throw error;\n }\n};\n","import {\n EventSourceParserStream,\n ParsedEvent,\n} from 'eventsource-parser/stream';\nimport { ZodSchema } from 'zod';\nimport { APICallError } from '../errors';\nimport { NoResponseBodyError } from '../errors/no-response-body-error';\nimport { ParseResult, parseJSON, safeParseJSON } from './parse-json';\n\nexport type ResponseHandler<RETURN_TYPE> = (options: {\n url: string;\n requestBodyValues: unknown;\n response: Response;\n}) => PromiseLike<RETURN_TYPE>;\n\nexport const createJsonErrorResponseHandler =\n <T>({\n errorSchema,\n errorToMessage,\n isRetryable,\n }: {\n errorSchema: ZodSchema<T>;\n errorToMessage: (error: T) => string;\n isRetryable?: (response: Response, error?: T) => boolean;\n }): ResponseHandler<APICallError> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n\n // Some providers return an empty response body for some errors:\n if (responseBody.trim() === '') {\n return new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseBody,\n isRetryable: isRetryable?.(response),\n });\n }\n\n // resilient parsing in case the response is not JSON or does not match the schema:\n try {\n const parsedError = parseJSON({\n text: responseBody,\n schema: errorSchema,\n });\n\n return new APICallError({\n message: errorToMessage(parsedError),\n url,\n requestBodyValues,\n statusCode: response.status,\n responseBody,\n data: parsedError,\n isRetryable: isRetryable?.(response, parsedError),\n });\n } catch (parseError) {\n return new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseBody,\n isRetryable: isRetryable?.(response),\n });\n }\n };\n\nexport const createEventSourceResponseHandler =\n <T>(\n chunkSchema: ZodSchema<T>,\n ): ResponseHandler<ReadableStream<ParseResult<T>>> =>\n async ({ response }: { response: Response }) => {\n if (response.body == null) {\n throw new NoResponseBodyError();\n }\n\n return response.body\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new EventSourceParserStream())\n .pipeThrough(\n new TransformStream<ParsedEvent, ParseResult<T>>({\n transform({ data }, controller) {\n if (data === '[DONE]') {\n return;\n }\n\n controller.enqueue(\n safeParseJSON({\n text: data,\n schema: chunkSchema,\n }),\n );\n },\n }),\n );\n };\n\nexport const createJsonResponseHandler =\n <T>(responseSchema: ZodSchema<T>): ResponseHandler<T> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n\n const parsedResult = safeParseJSON({\n text: responseBody,\n schema: responseSchema,\n });\n\n if (!parsedResult.success) {\n throw new APICallError({\n message: 'Invalid JSON response',\n cause: parsedResult.error,\n statusCode: response.status,\n responseBody,\n url,\n requestBodyValues,\n });\n }\n\n return parsedResult.value;\n };\n","export class NoResponseBodyError extends Error {\n constructor({ message = 'No response body' }: { message?: string } = {}) {\n super(message);\n\n this.name = 'AI_NoResponseBodyError';\n }\n\n static isNoResponseBodyError(error: unknown): error is NoResponseBodyError {\n return error instanceof Error && error.name === 'AI_NoResponseBodyError';\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n };\n }\n}\n","export function scale({\n inputMin = 0,\n inputMax = 1,\n outputMin,\n outputMax,\n value,\n}: {\n inputMin?: number;\n inputMax?: number;\n outputMin: number;\n outputMax: number;\n value: number | undefined;\n}) {\n if (value === undefined) {\n return undefined;\n }\n\n const inputRange = inputMax - inputMin;\n const outputRange = outputMax - outputMin;\n return ((value - inputMin) * outputRange) / inputRange + outputMin;\n}\n","export function convertBase64ToUint8Array(base64String: string) {\n const base64Url = base64String.replace(/-/g, '+').replace(/_/g, '/');\n const latin1string = globalThis.atob(base64Url);\n return Uint8Array.from(latin1string, byte => byte.codePointAt(0)!);\n}\n\nexport function convertUint8ArrayToBase64(array: Uint8Array): string {\n let latin1string = '';\n\n // Note: regular for loop to support older JavaScript versions that\n // do not support for..of on Uint8Array\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n\n return globalThis.btoa(latin1string);\n}\n","import { getErrorMessage } from '../util';\n\nexport class InvalidToolArgumentsError extends Error {\n readonly toolName: string;\n readonly toolArgs: string;\n readonly cause: unknown;\n\n constructor({\n toolArgs,\n toolName,\n cause,\n message = `Invalid arguments for tool ${toolName}: ${getErrorMessage(\n cause,\n )}`,\n }: {\n message?: string;\n toolArgs: string;\n toolName: string;\n cause: unknown;\n }) {\n super(message);\n\n this.name = 'AI_InvalidToolArgumentsError';\n\n this.toolArgs = toolArgs;\n this.toolName = toolName;\n this.cause = cause;\n }\n\n static isInvalidToolArgumentsError(\n error: unknown,\n ): error is InvalidToolArgumentsError {\n return (\n error instanceof Error &&\n error.name === 'AI_InvalidToolArgumentsError' &&\n typeof (error as InvalidToolArgumentsError).toolName === 'string' &&\n typeof (error as InvalidToolArgumentsError).toolArgs === 'string'\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n cause: this.cause,\n stack: this.stack,\n\n toolName: this.toolName,\n toolArgs: this.toolArgs,\n };\n }\n}\n","export class NoTextGeneratedError extends Error {\n readonly cause: unknown;\n\n constructor() {\n super(`No text generated.`);\n\n this.name = 'AI_NoTextGeneratedError';\n }\n\n static isNoTextGeneratedError(error: unknown): error is NoTextGeneratedError {\n return error instanceof Error && error.name === 'AI_NoTextGeneratedError';\n }\n\n toJSON() {\n return {\n name: this.name,\n cause: this.cause,\n message: this.message,\n stack: this.stack,\n };\n }\n}\n","export class NoSuchToolError extends Error {\n readonly toolName: string;\n\n constructor({ message, toolName }: { message: string; toolName: string }) {\n super(message);\n\n this.name = 'AI_NoSuchToolError';\n\n this.toolName = toolName;\n }\n\n static isNoSuchToolError(error: unknown): error is NoSuchToolError {\n return (\n error instanceof Error &&\n error.name === 'AI_NoSuchToolError' &&\n typeof (error as NoSuchToolError).toolName === 'string'\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n\n toolName: this.toolName,\n };\n }\n}\n","export type RetryErrorReason =\n | 'maxRetriesExceeded'\n | 'errorNotRetryable'\n | 'abort';\n\nexport class RetryError extends Error {\n // note: property order determines debugging output\n readonly reason: RetryErrorReason;\n readonly lastError: unknown;\n readonly errors: Array<unknown>;\n\n constructor({\n message,\n reason,\n errors,\n }: {\n message: string;\n reason: RetryErrorReason;\n errors: Array<unknown>;\n }) {\n super(message);\n\n this.name = 'AI_RetryError';\n this.reason = reason;\n this.errors = errors;\n\n // separate our last error to make debugging via log easier:\n this.lastError = errors[errors.length - 1];\n }\n\n static isRetryError(error: unknown): error is RetryError {\n return (\n error instanceof Error &&\n error.name === 'AI_RetryError' &&\n typeof (error as RetryError).reason === 'string' &&\n Array.isArray((error as RetryError).errors)\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n reason: this.reason,\n lastError: this.lastError,\n errors: this.errors,\n };\n }\n}\n","export class UnsupportedFunctionalityError extends Error {\n readonly functionality: string;\n readonly provider: string;\n\n constructor({\n provider,\n functionality,\n }: {\n provider: string;\n functionality: string;\n }) {\n super(\n `Functionality not supported by the provider. ` +\n `Provider: ${provider}.\\n` +\n `Functionality: ${functionality}`,\n );\n\n this.name = 'AI_UnsupportedFunctionalityError';\n\n this.provider = provider;\n this.functionality = functionality;\n }\n\n static isUnsupportedFunctionalityError(\n error: unknown,\n ): error is UnsupportedFunctionalityError {\n return (\n error instanceof Error &&\n error.name === 'AI_UnsupportedFunctionalityError' &&\n typeof (error as UnsupportedFunctionalityError).provider === 'string' &&\n typeof (error as UnsupportedFunctionalityError).functionality === 'string'\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n\n provider: this.provider,\n functionality: this.functionality,\n };\n }\n}\n"],"mappings":";AAAO,IAAM,eAAN,cAA2B,MAAM;AAAA,EAStC,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,cAAc,cAAc,SACzB,eAAe;AAAA,IACd,eAAe;AAAA,IACf,eAAe;AAAA,IACf,cAAc;AAAA;AAAA,IAClB;AAAA,EACF,GASG;AACD,UAAM,OAAO;AAEb,SAAK,OAAO;AAEZ,SAAK,MAAM;AACX,SAAK,oBAAoB;AACzB,SAAK,aAAa;AAClB,SAAK,eAAe;AACpB,SAAK,QAAQ;AACb,SAAK,cAAc;AACnB,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,OAAO,eAAe,OAAuC;AAC3D,WACE,iBAAiB,SACjB,MAAM,SAAS,qBACf,OAAQ,MAAuB,QAAQ,YACvC,OAAQ,MAAuB,sBAAsB,aACnD,MAAuB,cAAc,QACrC,OAAQ,MAAuB,eAAe,cAC9C,MAAuB,gBAAgB,QACvC,OAAQ,MAAuB,iBAAiB,cAChD,MAAuB,SAAS,QAChC,OAAQ,MAAuB,UAAU,aAC3C,OAAQ,MAAuB,gBAAgB,cAC7C,MAAuB,QAAQ,QAC/B,OAAQ,MAAuB,SAAS;AAAA,EAE9C;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,KAAK,KAAK;AAAA,MACV,mBAAmB,KAAK;AAAA,MACxB,YAAY,KAAK;AAAA,MACjB,cAAc,KAAK;AAAA,MACnB,OAAO,KAAK;AAAA,MACZ,aAAa,KAAK;AAAA,MAClB,MAAM,KAAK;AAAA,IACb;AAAA,EACF;AACF;;;AC5EO,IAAM,uBAAN,cAAmC,MAAM;AAAA,EAI9C,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAIG;AACD,UAAM,kCAAkC,SAAS,KAAK,OAAO,EAAE;AAE/D,SAAK,OAAO;AAEZ,SAAK,YAAY;AACjB,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,OAAO,uBAAuB,OAA+C;AAC3E,WACE,iBAAiB,SACjB,MAAM,SAAS,6BACf,OAAQ,MAA+B,cAAc,YACrD,OAAQ,MAA+B,UAAU;AAAA,EAErD;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,MAEZ,WAAW,KAAK;AAAA,MAChB,OAAO,KAAK;AAAA,IACd;AAAA,EACF;AACF;;;ACxCO,IAAM,0BAAN,cAAsC,MAAM;AAAA,EAGjD,YAAY;AAAA,IACV;AAAA,IACA,UAAU,wFAAwF,OAAO,OAAO;AAAA,EAClH,GAGG;AACD,UAAM,OAAO;AAEb,SAAK,OAAO;AAEZ,SAAK,UAAU;AAAA,EACjB;AAAA,EAEA,OAAO,0BACL,OACkC;AAClC,WACE,iBAAiB,SACjB,MAAM,SAAS,gCACd,MAAkC,WAAW;AAAA,EAElD;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,MAEZ,SAAS,KAAK;AAAA,IAChB;AAAA,EACF;AACF;;;ACpCO,IAAM,qBAAN,cAAiC,MAAM;AAAA,EAG5C,YAAY,EAAE,QAAAA,SAAQ,QAAQ,GAAyC;AACrE,UAAM,mBAAmB,OAAO,EAAE;AAElC,SAAK,OAAO;AAEZ,SAAK,SAASA;AAAA,EAChB;AAAA,EAEA,OAAO,qBAAqB,OAA6C;AACvE,WACE,iBAAiB,SACjB,MAAM,SAAS,2BACf,UAAU;AAAA,EAEd;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,MAEZ,QAAQ,KAAK;AAAA,IACf;AAAA,EACF;AACF;;;ACxBO,IAAM,2BAAN,cAAuC,MAAM;AAAA,EAGlD,YAAY;AAAA,IACV;AAAA,IACA,UAAU,0BAA0B,KAAK,UAAU,IAAI,CAAC;AAAA,EAC1D,GAGG;AACD,UAAM,OAAO;AAEb,SAAK,OAAO;AAEZ,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,OAAO,2BACL,OACmC;AACnC,WACE,iBAAiB,SACjB,MAAM,SAAS,iCACd,MAAmC,QAAQ;AAAA,EAEhD;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,MAEZ,MAAM,KAAK;AAAA,IACb;AAAA,EACF;AACF;;;ACxCA,SAAS,sBAAsB;AAKxB,IAAM,aAAa;AAAA,EACxB;AAAA,EACA;AACF;;;ACRO,SAAS,gBAAgB,OAA4B;AAC1D,MAAI,SAAS,MAAM;AACjB,WAAO;AAAA,EACT;AAEA,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA,EACT;AAEA,MAAI,iBAAiB,OAAO;AAC1B,WAAO,MAAM;AAAA,EACf;AAEA,SAAO,KAAK,UAAU,KAAK;AAC7B;;;ACdO,IAAM,kBAAN,cAA8B,MAAM;AAAA,EACzC,YAAY,EAAE,QAAQ,GAAwB;AAC5C,UAAM,OAAO;AAEb,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,OAAO,kBAAkB,OAA0C;AACjE,WAAO,iBAAiB,SAAS,MAAM,SAAS;AAAA,EAClD;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,IAChB;AAAA,EACF;AACF;;;ACfO,SAAS,WAAW;AAAA,EACzB;AAAA,EACA;AAAA,EACA,sBAAsB;AAAA,EACtB;AACF,GAKW;AACT,MAAI,OAAO,WAAW,UAAU;AAC9B,WAAO;AAAA,EACT;AAEA,MAAI,UAAU,MAAM;AAClB,UAAM,IAAI,gBAAgB;AAAA,MACxB,SAAS,GAAG,WAAW;AAAA,IACzB,CAAC;AAAA,EACH;AAEA,MAAI,OAAO,YAAY,aAAa;AAClC,UAAM,IAAI,gBAAgB;AAAA,MACxB,SAAS,GAAG,WAAW,2CAA2C,mBAAmB;AAAA,IACvF,CAAC;AAAA,EACH;AAEA,WAAS,QAAQ,IAAI,uBAAuB;AAE5C,MAAI,UAAU,MAAM;AAClB,UAAM,IAAI,gBAAgB;AAAA,MACxB,SAAS,GAAG,WAAW,2CAA2C,mBAAmB,sBAAsB,uBAAuB;AAAA,IACpI,CAAC;AAAA,EACH;AAEA,MAAI,OAAO,WAAW,UAAU;AAC9B,UAAM,IAAI,gBAAgB;AAAA,MACxB,SAAS,GAAG,WAAW,+CAA+C,uBAAuB;AAAA,IAC/F,CAAC;AAAA,EACH;AAEA,SAAO;AACT;;;AC5CA,OAAO,gBAAgB;;;ACEhB,IAAM,iBAAN,cAA6B,MAAM;AAAA,EAKxC,YAAY,EAAE,MAAM,MAAM,GAAqC;AAC7D;AAAA,MACE,8BACW,IAAI;AAAA,iBACK,gBAAgB,KAAK,CAAC;AAAA,IAC5C;AAEA,SAAK,OAAO;AAEZ,SAAK,QAAQ;AACb,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,OAAO,iBAAiB,OAAyC;AAC/D,WACE,iBAAiB,SACjB,MAAM,SAAS,uBACf,OAAQ,MAAyB,SAAS,YAC1C,OAAQ,MAAyB,UAAU;AAAA,EAE/C;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,MACZ,OAAO,KAAK;AAAA,MAEZ,WAAW,KAAK;AAAA,IAClB;AAAA,EACF;AACF;;;ACrCO,IAAM,sBAAN,cAAkC,MAAM;AAAA,EAI7C,YAAY,EAAE,OAAO,MAAM,GAAuC;AAChE;AAAA,MACE,kCACY,KAAK,UAAU,KAAK,CAAC;AAAA,iBACb,gBAAgB,KAAK,CAAC;AAAA,IAC5C;AAEA,SAAK,OAAO;AAEZ,SAAK,QAAQ;AACb,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,OAAO,sBAAsB,OAA8C;AACzE,WACE,iBAAiB,SACjB,MAAM,SAAS,4BACf,OAAQ,MAA8B,UAAU,YAChD,OAAQ,MAA8B,UAAU;AAAA,EAEpD;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,MACZ,OAAO,KAAK;AAAA,MAEZ,OAAO,KAAK;AAAA,IACd;AAAA,EACF;AACF;;;AC1BO,SAAS,cAAiB;AAAA,EAC/B;AAAA,EACA;AACF,GAGM;AACJ,MAAI;AACF,WAAO,OAAO,MAAM,KAAK;AAAA,EAC3B,SAAS,OAAO;AACd,UAAM,IAAI,oBAAoB,EAAE,OAAO,OAAO,MAAM,CAAC;AAAA,EACvD;AACF;AAWO,SAAS,kBAAqB;AAAA,EACnC;AAAA,EACA;AACF,GAKmD;AACjD,MAAI;AACF,UAAM,mBAAmB,OAAO,UAAU,KAAK;AAE/C,QAAI,iBAAiB,SAAS;AAC5B,aAAO;AAAA,QACL,SAAS;AAAA,QACT,OAAO,iBAAiB;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO,IAAI,oBAAoB;AAAA,QAC7B;AAAA,QACA,OAAO,iBAAiB;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA,EACF,SAAS,OAAO;AACd,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO,oBAAoB,sBAAsB,KAAK,IAClD,QACA,IAAI,oBAAoB,EAAE,OAAO,OAAO,MAAM,CAAC;AAAA,IACrD;AAAA,EACF;AACF;;;AHzCO,SAAS,UAAa;AAAA,EAC3B;AAAA,EACA;AACF,GAGM;AACJ,MAAI;AACF,UAAM,QAAQ,WAAW,MAAM,IAAI;AAEnC,QAAI,UAAU,MAAM;AAClB,aAAO;AAAA,IACT;AAEA,WAAO,cAAc,EAAE,OAAO,OAAO,CAAC;AAAA,EACxC,SAAS,OAAO;AACd,QACE,eAAe,iBAAiB,KAAK,KACrC,oBAAoB,sBAAsB,KAAK,GAC/C;AACA,YAAM;AAAA,IACR;AAEA,UAAM,IAAI,eAAe,EAAE,MAAM,OAAO,MAAM,CAAC;AAAA,EACjD;AACF;AA4BO,SAAS,cAAiB;AAAA,EAC/B;AAAA,EACA;AACF,GAKoE;AAClE,MAAI;AACF,UAAM,QAAQ,WAAW,MAAM,IAAI;AAEnC,QAAI,UAAU,MAAM;AAClB,aAAO;AAAA,QACL,SAAS;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAEA,WAAO,kBAAkB,EAAE,OAAO,OAAO,CAAC;AAAA,EAC5C,SAAS,OAAO;AACd,WAAO;AAAA,MACL,SAAS;AAAA,MACT,OAAO,eAAe,iBAAiB,KAAK,IACxC,QACA,IAAI,eAAe,EAAE,MAAM,OAAO,MAAM,CAAC;AAAA,IAC/C;AAAA,EACF;AACF;AAEO,SAAS,gBAAgB,OAAwB;AACtD,MAAI;AACF,eAAW,MAAM,KAAK;AACtB,WAAO;AAAA,EACT,SAAQ;AACN,WAAO;AAAA,EACT;AACF;;;AInHO,IAAM,gBAAgB,OAAU;AAAA,EACrC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAQE,UAAU;AAAA,EACR;AAAA,EACA,SAAS;AAAA,IACP,GAAG;AAAA,IACH,gBAAgB;AAAA,EAClB;AAAA,EACA,MAAM;AAAA,IACJ,SAAS,KAAK,UAAU,IAAI;AAAA,IAC5B,QAAQ;AAAA,EACV;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEI,IAAM,YAAY,OAAU;AAAA,EACjC;AAAA,EACA,UAAU,CAAC;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAUM;AACJ,MAAI;AAEF,UAAM,iBAAiB,OAAO;AAAA,MAC5B,OAAO,QAAQ,OAAO,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,MAAM,SAAS,IAAI;AAAA,IACjE;AAEA,UAAM,WAAW,MAAM,MAAM,KAAK;AAAA,MAChC,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,MAAM,KAAK;AAAA,MACX,QAAQ;AAAA,IACV,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,UAAI;AACF,cAAM,MAAM,sBAAsB;AAAA,UAChC;AAAA,UACA;AAAA,UACA,mBAAmB,KAAK;AAAA,QAC1B,CAAC;AAAA,MACH,SAAS,OAAO;AACd,YAAI,iBAAiB,OAAO;AAC1B,cACE,MAAM,SAAS,gBACf,aAAa,eAAe,KAAK,GACjC;AACA,kBAAM;AAAA,UACR;AAAA,QACF;AAEA,cAAM,IAAI,aAAa;AAAA,UACrB,SAAS;AAAA,UACT,OAAO;AAAA,UACP,YAAY,SAAS;AAAA,UACrB;AAAA,UACA,mBAAmB,KAAK;AAAA,QAC1B,CAAC;AAAA,MACH;AAAA,IACF;AAEA,QAAI;AACF,aAAO,MAAM,0BAA0B;AAAA,QACrC;AAAA,QACA;AAAA,QACA,mBAAmB,KAAK;AAAA,MAC1B,CAAC;AAAA,IACH,SAAS,OAAO;AACd,UAAI,iBAAiB,OAAO;AAC1B,YAAI,MAAM,SAAS,gBAAgB,aAAa,eAAe,KAAK,GAAG;AACrE,gBAAM;AAAA,QACR;AAAA,MACF;AAEA,YAAM,IAAI,aAAa;AAAA,QACrB,SAAS;AAAA,QACT,OAAO;AAAA,QACP,YAAY,SAAS;AAAA,QACrB;AAAA,QACA,mBAAmB,KAAK;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA,EACF,SAAS,OAAO;AACd,QAAI,iBAAiB,OAAO;AAC1B,UAAI,MAAM,SAAS,cAAc;AAC/B,cAAM;AAAA,MACR;AAAA,IACF;AAGA,QAAI,iBAAiB,aAAa,MAAM,YAAY,gBAAgB;AAClE,YAAM,QAAS,MAAc;AAE7B,UAAI,SAAS,MAAM;AAEjB,cAAM,IAAI,aAAa;AAAA,UACrB,SAAS,0BAA0B,MAAM,OAAO;AAAA,UAChD;AAAA,UACA;AAAA,UACA,mBAAmB,KAAK;AAAA,UACxB,aAAa;AAAA;AAAA,QACf,CAAC;AAAA,MACH;AAAA,IACF;AAEA,UAAM;AAAA,EACR;AACF;;;ACzIA;AAAA,EACE;AAAA,OAEK;;;ACHA,IAAM,sBAAN,cAAkC,MAAM;AAAA,EAC7C,YAAY,EAAE,UAAU,mBAAmB,IAA0B,CAAC,GAAG;AACvE,UAAM,OAAO;AAEb,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,OAAO,sBAAsB,OAA8C;AACzE,WAAO,iBAAiB,SAAS,MAAM,SAAS;AAAA,EAClD;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,IACd;AAAA,EACF;AACF;;;ADHO,IAAM,iCACX,CAAI;AAAA,EACF;AAAA,EACA;AAAA,EACA;AACF,MAKA,OAAO,EAAE,UAAU,KAAK,kBAAkB,MAAM;AAC9C,QAAM,eAAe,MAAM,SAAS,KAAK;AAGzC,MAAI,aAAa,KAAK,MAAM,IAAI;AAC9B,WAAO,IAAI,aAAa;AAAA,MACtB,SAAS,SAAS;AAAA,MAClB;AAAA,MACA;AAAA,MACA,YAAY,SAAS;AAAA,MACrB;AAAA,MACA,aAAa,2CAAc;AAAA,IAC7B,CAAC;AAAA,EACH;AAGA,MAAI;AACF,UAAM,cAAc,UAAU;AAAA,MAC5B,MAAM;AAAA,MACN,QAAQ;AAAA,IACV,CAAC;AAED,WAAO,IAAI,aAAa;AAAA,MACtB,SAAS,eAAe,WAAW;AAAA,MACnC;AAAA,MACA;AAAA,MACA,YAAY,SAAS;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,MACN,aAAa,2CAAc,UAAU;AAAA,IACvC,CAAC;AAAA,EACH,SAAS,YAAY;AACnB,WAAO,IAAI,aAAa;AAAA,MACtB,SAAS,SAAS;AAAA,MAClB;AAAA,MACA;AAAA,MACA,YAAY,SAAS;AAAA,MACrB;AAAA,MACA,aAAa,2CAAc;AAAA,IAC7B,CAAC;AAAA,EACH;AACF;AAEK,IAAM,mCACX,CACE,gBAEF,OAAO,EAAE,SAAS,MAA8B;AAC9C,MAAI,SAAS,QAAQ,MAAM;AACzB,UAAM,IAAI,oBAAoB;AAAA,EAChC;AAEA,SAAO,SAAS,KACb,YAAY,IAAI,kBAAkB,CAAC,EACnC,YAAY,IAAI,wBAAwB,CAAC,EACzC;AAAA,IACC,IAAI,gBAA6C;AAAA,MAC/C,UAAU,EAAE,KAAK,GAAG,YAAY;AAC9B,YAAI,SAAS,UAAU;AACrB;AAAA,QACF;AAEA,mBAAW;AAAA,UACT,cAAc;AAAA,YACZ,MAAM;AAAA,YACN,QAAQ;AAAA,UACV,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AACJ;AAEK,IAAM,4BACX,CAAI,mBACJ,OAAO,EAAE,UAAU,KAAK,kBAAkB,MAAM;AAC9C,QAAM,eAAe,MAAM,SAAS,KAAK;AAEzC,QAAM,eAAe,cAAc;AAAA,IACjC,MAAM;AAAA,IACN,QAAQ;AAAA,EACV,CAAC;AAED,MAAI,CAAC,aAAa,SAAS;AACzB,UAAM,IAAI,aAAa;AAAA,MACrB,SAAS;AAAA,MACT,OAAO,aAAa;AAAA,MACpB,YAAY,SAAS;AAAA,MACrB;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAEA,SAAO,aAAa;AACtB;;;AExHK,SAAS,MAAM;AAAA,EACpB,WAAW;AAAA,EACX,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA;AACF,GAMG;AACD,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,WAAW;AAC9B,QAAM,cAAc,YAAY;AAChC,UAAS,QAAQ,YAAY,cAAe,aAAa;AAC3D;;;ACpBO,SAAS,0BAA0B,cAAsB;AAC9D,QAAM,YAAY,aAAa,QAAQ,MAAM,GAAG,EAAE,QAAQ,MAAM,GAAG;AACnE,QAAM,eAAe,WAAW,KAAK,SAAS;AAC9C,SAAO,WAAW,KAAK,cAAc,UAAQ,KAAK,YAAY,CAAC,CAAE;AACnE;AAEO,SAAS,0BAA0B,OAA2B;AACnE,MAAI,eAAe;AAInB,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,oBAAgB,OAAO,cAAc,MAAM,CAAC,CAAC;AAAA,EAC/C;AAEA,SAAO,WAAW,KAAK,YAAY;AACrC;;;ACdO,IAAM,4BAAN,cAAwC,MAAM;AAAA,EAKnD,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,UAAU,8BAA8B,QAAQ,KAAK;AAAA,MACnD;AAAA,IACF,CAAC;AAAA,EACH,GAKG;AACD,UAAM,OAAO;AAEb,SAAK,OAAO;AAEZ,SAAK,WAAW;AAChB,SAAK,WAAW;AAChB,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,OAAO,4BACL,OACoC;AACpC,WACE,iBAAiB,SACjB,MAAM,SAAS,kCACf,OAAQ,MAAoC,aAAa,YACzD,OAAQ,MAAoC,aAAa;AAAA,EAE7D;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,MACZ,OAAO,KAAK;AAAA,MAEZ,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,IACjB;AAAA,EACF;AACF;;;ACnDO,IAAM,uBAAN,cAAmC,MAAM;AAAA,EAG9C,cAAc;AACZ,UAAM,oBAAoB;AAE1B,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,OAAO,uBAAuB,OAA+C;AAC3E,WAAO,iBAAiB,SAAS,MAAM,SAAS;AAAA,EAClD;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,MACZ,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,IACd;AAAA,EACF;AACF;;;ACrBO,IAAM,kBAAN,cAA8B,MAAM;AAAA,EAGzC,YAAY,EAAE,SAAS,SAAS,GAA0C;AACxE,UAAM,OAAO;AAEb,SAAK,OAAO;AAEZ,SAAK,WAAW;AAAA,EAClB;AAAA,EAEA,OAAO,kBAAkB,OAA0C;AACjE,WACE,iBAAiB,SACjB,MAAM,SAAS,wBACf,OAAQ,MAA0B,aAAa;AAAA,EAEnD;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,MAEZ,UAAU,KAAK;AAAA,IACjB;AAAA,EACF;AACF;;;ACvBO,IAAM,aAAN,cAAyB,MAAM;AAAA,EAMpC,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAIG;AACD,UAAM,OAAO;AAEb,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,SAAS;AAGd,SAAK,YAAY,OAAO,OAAO,SAAS,CAAC;AAAA,EAC3C;AAAA,EAEA,OAAO,aAAa,OAAqC;AACvD,WACE,iBAAiB,SACjB,MAAM,SAAS,mBACf,OAAQ,MAAqB,WAAW,YACxC,MAAM,QAAS,MAAqB,MAAM;AAAA,EAE9C;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,QAAQ,KAAK;AAAA,MACb,WAAW,KAAK;AAAA,MAChB,QAAQ,KAAK;AAAA,IACf;AAAA,EACF;AACF;;;AChDO,IAAM,gCAAN,cAA4C,MAAM;AAAA,EAIvD,YAAY;AAAA,IACV;AAAA,IACA;AAAA,EACF,GAGG;AACD;AAAA,MACE,0DACe,QAAQ;AAAA,iBACH,aAAa;AAAA,IACnC;AAEA,SAAK,OAAO;AAEZ,SAAK,WAAW;AAChB,SAAK,gBAAgB;AAAA,EACvB;AAAA,EAEA,OAAO,gCACL,OACwC;AACxC,WACE,iBAAiB,SACjB,MAAM,SAAS,sCACf,OAAQ,MAAwC,aAAa,YAC7D,OAAQ,MAAwC,kBAAkB;AAAA,EAEtE;AAAA,EAEA,SAAS;AACP,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,OAAO,KAAK;AAAA,MAEZ,UAAU,KAAK;AAAA,MACf,eAAe,KAAK;AAAA,IACtB;AAAA,EACF;AACF;","names":["prompt"]}
@@ -740,27 +740,12 @@ async function* readDataStream(reader, {
740
740
  }
741
741
  }
742
742
 
743
- // shared/utils.ts
743
+ // shared/generate-id.ts
744
744
  var import_non_secure = require("nanoid/non-secure");
745
- var nanoid = (0, import_non_secure.customAlphabet)(
745
+ var generateId = (0, import_non_secure.customAlphabet)(
746
746
  "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
747
747
  7
748
748
  );
749
- function createChunkDecoder(complex) {
750
- const decoder = new TextDecoder();
751
- if (!complex) {
752
- return function(chunk) {
753
- if (!chunk)
754
- return "";
755
- return decoder.decode(chunk, { stream: true });
756
- };
757
- }
758
- return function(chunk) {
759
- const decoded = decoder.decode(chunk, { stream: true }).split("\n").filter((line) => line !== "");
760
- return decoded.map(parseStreamPart).filter(Boolean);
761
- };
762
- }
763
- var COMPLEX_HEADER = "X-Experimental-Stream-Data";
764
749
 
765
750
  // shared/parse-complex-response.ts
766
751
  function assignAnnotationsToMessage(message, annotations) {
@@ -773,7 +758,7 @@ async function parseComplexResponse({
773
758
  abortControllerRef,
774
759
  update,
775
760
  onFinish,
776
- generateId = nanoid,
761
+ generateId: generateId2 = generateId,
777
762
  getCurrentDate = () => /* @__PURE__ */ new Date()
778
763
  }) {
779
764
  const createdAt = getCurrentDate();
@@ -792,7 +777,7 @@ async function parseComplexResponse({
792
777
  };
793
778
  } else {
794
779
  prefixMap["text"] = {
795
- id: generateId(),
780
+ id: generateId2(),
796
781
  role: "assistant",
797
782
  content: value,
798
783
  createdAt
@@ -802,7 +787,7 @@ async function parseComplexResponse({
802
787
  let functionCallMessage = null;
803
788
  if (type === "function_call") {
804
789
  prefixMap["function_call"] = {
805
- id: generateId(),
790
+ id: generateId2(),
806
791
  role: "assistant",
807
792
  content: "",
808
793
  function_call: value.function_call,
@@ -814,7 +799,7 @@ async function parseComplexResponse({
814
799
  let toolCallMessage = null;
815
800
  if (type === "tool_calls") {
816
801
  prefixMap["tool_calls"] = {
817
- id: generateId(),
802
+ id: generateId2(),
818
803
  role: "assistant",
819
804
  content: "",
820
805
  tool_calls: value.tool_calls,
@@ -873,6 +858,23 @@ async function parseComplexResponse({
873
858
  };
874
859
  }
875
860
 
861
+ // shared/utils.ts
862
+ function createChunkDecoder(complex) {
863
+ const decoder = new TextDecoder();
864
+ if (!complex) {
865
+ return function(chunk) {
866
+ if (!chunk)
867
+ return "";
868
+ return decoder.decode(chunk, { stream: true });
869
+ };
870
+ }
871
+ return function(chunk) {
872
+ const decoded = decoder.decode(chunk, { stream: true }).split("\n").filter((line) => line !== "");
873
+ return decoded.map(parseStreamPart).filter(Boolean);
874
+ };
875
+ }
876
+ var COMPLEX_HEADER = "X-Experimental-Stream-Data";
877
+
876
878
  // shared/call-chat-api.ts
877
879
  async function callChatApi({
878
880
  api,
@@ -886,7 +888,7 @@ async function callChatApi({
886
888
  onResponse,
887
889
  onUpdate,
888
890
  onFinish,
889
- generateId
891
+ generateId: generateId2
890
892
  }) {
891
893
  var _a;
892
894
  const response = await fetch(api, {
@@ -933,13 +935,13 @@ async function callChatApi({
933
935
  onFinish(prefixMap.text);
934
936
  }
935
937
  },
936
- generateId
938
+ generateId: generateId2
937
939
  });
938
940
  } else {
939
941
  const createdAt = /* @__PURE__ */ new Date();
940
942
  const decode = createChunkDecoder(false);
941
943
  let streamedResponse = "";
942
- const replyId = generateId();
944
+ const replyId = generateId2();
943
945
  let responseMessage = {
944
946
  id: replyId,
945
947
  createdAt,
@@ -1099,7 +1101,7 @@ async function processChatStream({
1099
1101
  }
1100
1102
 
1101
1103
  // svelte/use-chat.ts
1102
- var getStreamedResponse = async (api, chatRequest, mutate, mutateStreamData, existingData, extraMetadata, previousMessages, abortControllerRef, generateId, onFinish, onResponse, sendExtraMessageFields) => {
1104
+ var getStreamedResponse = async (api, chatRequest, mutate, mutateStreamData, existingData, extraMetadata, previousMessages, abortControllerRef, generateId2, onFinish, onResponse, sendExtraMessageFields) => {
1103
1105
  var _a, _b;
1104
1106
  mutate(chatRequest.messages);
1105
1107
  const constructedMessagesPayload = sendExtraMessageFields ? chatRequest.messages : chatRequest.messages.map(
@@ -1153,7 +1155,7 @@ var getStreamedResponse = async (api, chatRequest, mutate, mutateStreamData, exi
1153
1155
  mutateStreamData([...existingData || [], ...data || []]);
1154
1156
  },
1155
1157
  onFinish,
1156
- generateId
1158
+ generateId: generateId2
1157
1159
  });
1158
1160
  };
1159
1161
  var uniqueId = 0;
@@ -1172,7 +1174,7 @@ function useChat({
1172
1174
  credentials,
1173
1175
  headers,
1174
1176
  body,
1175
- generateId = nanoid
1177
+ generateId: generateId2 = generateId
1176
1178
  } = {}) {
1177
1179
  const chatId = id || `chat-${uniqueId++}`;
1178
1180
  const key = `${api}|${chatId}`;
@@ -1216,7 +1218,7 @@ function useChat({
1216
1218
  extraMetadata,
1217
1219
  (0, import_store.get)(messages),
1218
1220
  abortController,
1219
- generateId,
1221
+ generateId2,
1220
1222
  onFinish,
1221
1223
  onResponse,
1222
1224
  sendExtraMessageFields
@@ -1251,7 +1253,7 @@ function useChat({
1251
1253
  tool_choice
1252
1254
  } = {}) => {
1253
1255
  if (!message.id) {
1254
- message.id = generateId();
1256
+ message.id = generateId2();
1255
1257
  }
1256
1258
  const chatRequest = {
1257
1259
  messages: (0, import_store.get)(messages).concat(message),