@llmgateway/ai-sdk-provider 3.6.0 → 3.8.0

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.
@@ -2240,6 +2240,29 @@ function getBase64FromDataUrl(dataUrl) {
2240
2240
  }
2241
2241
 
2242
2242
  // src/chat/convert-to-llmgateway-chat-messages.ts
2243
+ var AUDIO_FORMAT_BY_MIME = {
2244
+ "audio/wav": "wav",
2245
+ "audio/wave": "wav",
2246
+ "audio/x-wav": "wav",
2247
+ "audio/mpeg": "mp3",
2248
+ "audio/mp3": "mp3",
2249
+ "audio/mp4": "mp4",
2250
+ "audio/m4a": "m4a",
2251
+ "audio/x-m4a": "m4a",
2252
+ "audio/aac": "aac",
2253
+ "audio/ogg": "ogg",
2254
+ "audio/flac": "flac",
2255
+ "audio/aiff": "aiff",
2256
+ "audio/x-aiff": "aiff",
2257
+ "audio/webm": "webm"
2258
+ };
2259
+ function audioFormatFromMime(mime) {
2260
+ var _a16;
2261
+ if (!mime) return void 0;
2262
+ const lower = (_a16 = mime.toLowerCase().split(";")[0]) == null ? void 0 : _a16.trim();
2263
+ if (!lower) return void 0;
2264
+ return AUDIO_FORMAT_BY_MIME[lower];
2265
+ }
2243
2266
  function getCacheControl(providerOptions) {
2244
2267
  var _a16, _b16, _c;
2245
2268
  const anthropic = providerOptions == null ? void 0 : providerOptions.anthropic;
@@ -2278,7 +2301,7 @@ function convertToLLMGatewayChatMessages(prompt) {
2278
2301
  const messageCacheControl = getCacheControl(providerOptions);
2279
2302
  const contentParts = content.map(
2280
2303
  (part) => {
2281
- var _a17, _b17, _c2, _d, _e, _f;
2304
+ var _a17, _b17, _c2, _d, _e, _f, _g;
2282
2305
  const cacheControl = (_a17 = getCacheControl(part.providerOptions)) != null ? _a17 : messageCacheControl;
2283
2306
  switch (part.type) {
2284
2307
  case "text":
@@ -2303,8 +2326,27 @@ function convertToLLMGatewayChatMessages(prompt) {
2303
2326
  cache_control: cacheControl
2304
2327
  };
2305
2328
  }
2329
+ if ((_c2 = part.mediaType) == null ? void 0 : _c2.startsWith("audio/")) {
2330
+ const format = audioFormatFromMime(part.mediaType);
2331
+ if (format) {
2332
+ const fileUrl = getFileUrl({
2333
+ part,
2334
+ defaultMediaType: part.mediaType
2335
+ });
2336
+ if (fileUrl.startsWith("data:")) {
2337
+ return {
2338
+ type: "input_audio",
2339
+ input_audio: {
2340
+ data: getBase64FromDataUrl(fileUrl),
2341
+ format
2342
+ },
2343
+ cache_control: cacheControl
2344
+ };
2345
+ }
2346
+ }
2347
+ }
2306
2348
  const fileName = String(
2307
- (_f = (_e = (_d = (_c2 = part.providerOptions) == null ? void 0 : _c2.llmgateway) == null ? void 0 : _d.filename) != null ? _e : part.filename) != null ? _f : ""
2349
+ (_g = (_f = (_e = (_d = part.providerOptions) == null ? void 0 : _d.llmgateway) == null ? void 0 : _e.filename) != null ? _f : part.filename) != null ? _g : ""
2308
2350
  );
2309
2351
  const fileData = getFileUrl({
2310
2352
  part,
@@ -3591,13 +3633,19 @@ var LLMGatewayImageModel = class {
3591
3633
  if (options.aspectRatio != null) {
3592
3634
  body.aspect_ratio = options.aspectRatio;
3593
3635
  }
3636
+ if (options.quality != null) {
3637
+ body.quality = options.quality;
3638
+ }
3639
+ const providerOptions = options.providerOptions || {};
3640
+ const llmgatewayOptions = providerOptions.llmgateway || {};
3641
+ const requestBody = __spreadValues(__spreadValues(__spreadValues(__spreadValues({}, body), this.config.extraBody), this.settings.extraBody), llmgatewayOptions);
3594
3642
  const { value: response, responseHeaders } = await postJsonToApi({
3595
3643
  url: this.config.url({
3596
3644
  path: hasFiles ? "/images/edits" : "/images/generations",
3597
3645
  modelId: this.modelId
3598
3646
  }),
3599
3647
  headers: combineHeaders(this.config.headers(), options.headers),
3600
- body,
3648
+ body: requestBody,
3601
3649
  failedResponseHandler: llmgatewayFailedResponseHandler,
3602
3650
  successfulResponseHandler: createJsonResponseHandler(
3603
3651
  LLMGatewayImageResponseSchema