@ai-sdk/openai-compatible 2.0.15 → 2.0.16

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @ai-sdk/openai-compatible
2
2
 
3
+ ## 2.0.16
4
+
5
+ ### Patch Changes
6
+
7
+ - 78555ad: fix(openai-compatible): Accept non-OpenAI provider options
8
+
3
9
  ## 2.0.15
4
10
 
5
11
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -209,7 +209,12 @@ declare class OpenAICompatibleImageModel implements ImageModelV3 {
209
209
  readonly specificationVersion = "v3";
210
210
  readonly maxImagesPerCall = 10;
211
211
  get provider(): string;
212
+ /**
213
+ * The provider options key used to extract provider-specific options.
214
+ */
215
+ private get providerOptionsKey();
212
216
  constructor(modelId: OpenAICompatibleImageModelId, config: OpenAICompatibleImageModelConfig);
217
+ private getArgs;
213
218
  doGenerate({ prompt, n, size, aspectRatio, seed, providerOptions, headers, abortSignal, files, mask, }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<Awaited<ReturnType<ImageModelV3['doGenerate']>>>;
214
219
  }
215
220
 
package/dist/index.d.ts CHANGED
@@ -209,7 +209,12 @@ declare class OpenAICompatibleImageModel implements ImageModelV3 {
209
209
  readonly specificationVersion = "v3";
210
210
  readonly maxImagesPerCall = 10;
211
211
  get provider(): string;
212
+ /**
213
+ * The provider options key used to extract provider-specific options.
214
+ */
215
+ private get providerOptionsKey();
212
216
  constructor(modelId: OpenAICompatibleImageModelId, config: OpenAICompatibleImageModelConfig);
217
+ private getArgs;
213
218
  doGenerate({ prompt, n, size, aspectRatio, seed, providerOptions, headers, abortSignal, files, mask, }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<Awaited<ReturnType<ImageModelV3['doGenerate']>>>;
214
219
  }
215
220
 
package/dist/index.js CHANGED
@@ -1529,6 +1529,19 @@ var OpenAICompatibleImageModel = class {
1529
1529
  get provider() {
1530
1530
  return this.config.provider;
1531
1531
  }
1532
+ /**
1533
+ * The provider options key used to extract provider-specific options.
1534
+ */
1535
+ get providerOptionsKey() {
1536
+ return this.config.provider.split(".")[0].trim();
1537
+ }
1538
+ // TODO: deprecate non-camelCase keys and remove in future major version
1539
+ getArgs(providerOptions) {
1540
+ return {
1541
+ ...providerOptions[this.providerOptionsKey],
1542
+ ...providerOptions[toCamelCase(this.providerOptionsKey)]
1543
+ };
1544
+ }
1532
1545
  async doGenerate({
1533
1546
  prompt,
1534
1547
  n,
@@ -1541,7 +1554,7 @@ var OpenAICompatibleImageModel = class {
1541
1554
  files,
1542
1555
  mask
1543
1556
  }) {
1544
- var _a, _b, _c, _d, _e, _f, _g;
1557
+ var _a, _b, _c, _d, _e;
1545
1558
  const warnings = [];
1546
1559
  if (aspectRatio != null) {
1547
1560
  warnings.push({
@@ -1554,6 +1567,7 @@ var OpenAICompatibleImageModel = class {
1554
1567
  warnings.push({ type: "unsupported", feature: "seed" });
1555
1568
  }
1556
1569
  const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
1570
+ const args = this.getArgs(providerOptions);
1557
1571
  if (files != null && files.length > 0) {
1558
1572
  const { value: response2, responseHeaders: responseHeaders2 } = await (0, import_provider_utils5.postFormDataToApi)({
1559
1573
  url: this.config.url({
@@ -1568,10 +1582,10 @@ var OpenAICompatibleImageModel = class {
1568
1582
  mask: mask != null ? await fileToBlob(mask) : void 0,
1569
1583
  n,
1570
1584
  size,
1571
- ...(_d = providerOptions.openai) != null ? _d : {}
1585
+ ...args
1572
1586
  }),
1573
1587
  failedResponseHandler: (0, import_provider_utils5.createJsonErrorResponseHandler)(
1574
- (_e = this.config.errorStructure) != null ? _e : defaultOpenAICompatibleErrorStructure
1588
+ (_d = this.config.errorStructure) != null ? _d : defaultOpenAICompatibleErrorStructure
1575
1589
  ),
1576
1590
  successfulResponseHandler: (0, import_provider_utils5.createJsonResponseHandler)(
1577
1591
  openaiCompatibleImageResponseSchema
@@ -1600,11 +1614,11 @@ var OpenAICompatibleImageModel = class {
1600
1614
  prompt,
1601
1615
  n,
1602
1616
  size,
1603
- ...(_f = providerOptions.openai) != null ? _f : {},
1617
+ ...args,
1604
1618
  response_format: "b64_json"
1605
1619
  },
1606
1620
  failedResponseHandler: (0, import_provider_utils5.createJsonErrorResponseHandler)(
1607
- (_g = this.config.errorStructure) != null ? _g : defaultOpenAICompatibleErrorStructure
1621
+ (_e = this.config.errorStructure) != null ? _e : defaultOpenAICompatibleErrorStructure
1608
1622
  ),
1609
1623
  successfulResponseHandler: (0, import_provider_utils5.createJsonResponseHandler)(
1610
1624
  openaiCompatibleImageResponseSchema
@@ -1633,12 +1647,15 @@ async function fileToBlob(file) {
1633
1647
  const data = file.data instanceof Uint8Array ? file.data : (0, import_provider_utils5.convertBase64ToUint8Array)(file.data);
1634
1648
  return new Blob([data], { type: file.mediaType });
1635
1649
  }
1650
+ function toCamelCase(str) {
1651
+ return str.replace(/[_-]([a-z])/g, (g) => g[1].toUpperCase());
1652
+ }
1636
1653
 
1637
1654
  // src/openai-compatible-provider.ts
1638
1655
  var import_provider_utils6 = require("@ai-sdk/provider-utils");
1639
1656
 
1640
1657
  // src/version.ts
1641
- var VERSION = true ? "2.0.15" : "0.0.0-test";
1658
+ var VERSION = true ? "2.0.16" : "0.0.0-test";
1642
1659
 
1643
1660
  // src/openai-compatible-provider.ts
1644
1661
  function createOpenAICompatible(options) {