@huggingface/inference 3.14.0 → 4.0.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.
Files changed (130) hide show
  1. package/README.md +104 -1
  2. package/dist/commonjs/errors.d.ts +46 -0
  3. package/dist/commonjs/errors.d.ts.map +1 -0
  4. package/dist/commonjs/errors.js +70 -0
  5. package/dist/commonjs/index.d.ts +1 -1
  6. package/dist/commonjs/index.d.ts.map +1 -1
  7. package/dist/commonjs/index.js +2 -3
  8. package/dist/commonjs/lib/getInferenceProviderMapping.d.ts.map +1 -1
  9. package/dist/commonjs/lib/getInferenceProviderMapping.js +27 -16
  10. package/dist/commonjs/lib/getProviderHelper.d.ts.map +1 -1
  11. package/dist/commonjs/lib/getProviderHelper.js +5 -3
  12. package/dist/commonjs/lib/makeRequestOptions.d.ts.map +1 -1
  13. package/dist/commonjs/lib/makeRequestOptions.js +12 -11
  14. package/dist/commonjs/package.d.ts +1 -1
  15. package/dist/commonjs/package.d.ts.map +1 -1
  16. package/dist/commonjs/package.js +1 -1
  17. package/dist/commonjs/providers/black-forest-labs.d.ts.map +1 -1
  18. package/dist/commonjs/providers/black-forest-labs.js +4 -4
  19. package/dist/commonjs/providers/fal-ai.d.ts.map +1 -1
  20. package/dist/commonjs/providers/fal-ai.js +29 -17
  21. package/dist/commonjs/providers/featherless-ai.d.ts.map +1 -1
  22. package/dist/commonjs/providers/featherless-ai.js +10 -4
  23. package/dist/commonjs/providers/hf-inference.d.ts.map +1 -1
  24. package/dist/commonjs/providers/hf-inference.js +27 -30
  25. package/dist/commonjs/providers/hyperbolic.d.ts.map +1 -1
  26. package/dist/commonjs/providers/hyperbolic.js +3 -3
  27. package/dist/commonjs/providers/nebius.d.ts.map +1 -1
  28. package/dist/commonjs/providers/nebius.js +2 -2
  29. package/dist/commonjs/providers/novita.d.ts +5 -6
  30. package/dist/commonjs/providers/novita.d.ts.map +1 -1
  31. package/dist/commonjs/providers/novita.js +66 -16
  32. package/dist/commonjs/providers/nscale.d.ts.map +1 -1
  33. package/dist/commonjs/providers/nscale.js +2 -2
  34. package/dist/commonjs/providers/ovhcloud.d.ts.map +1 -1
  35. package/dist/commonjs/providers/ovhcloud.js +2 -2
  36. package/dist/commonjs/providers/providerHelper.js +3 -3
  37. package/dist/commonjs/providers/replicate.js +4 -4
  38. package/dist/commonjs/providers/sambanova.d.ts +16 -0
  39. package/dist/commonjs/providers/sambanova.d.ts.map +1 -1
  40. package/dist/commonjs/providers/sambanova.js +2 -18
  41. package/dist/commonjs/providers/together.d.ts.map +1 -1
  42. package/dist/commonjs/providers/together.js +3 -3
  43. package/dist/commonjs/tasks/audio/automaticSpeechRecognition.d.ts.map +1 -1
  44. package/dist/commonjs/tasks/audio/automaticSpeechRecognition.js +2 -2
  45. package/dist/commonjs/utils/request.d.ts.map +1 -1
  46. package/dist/commonjs/utils/request.js +77 -12
  47. package/dist/commonjs/vendor/type-fest/basic.d.ts +33 -0
  48. package/dist/commonjs/vendor/type-fest/basic.d.ts.map +1 -0
  49. package/dist/commonjs/vendor/type-fest/basic.js +2 -0
  50. package/dist/esm/errors.d.ts +46 -0
  51. package/dist/esm/errors.d.ts.map +1 -0
  52. package/dist/esm/errors.js +62 -0
  53. package/dist/esm/index.d.ts +1 -1
  54. package/dist/esm/index.d.ts.map +1 -1
  55. package/dist/esm/index.js +1 -1
  56. package/dist/esm/lib/getInferenceProviderMapping.d.ts.map +1 -1
  57. package/dist/esm/lib/getInferenceProviderMapping.js +27 -16
  58. package/dist/esm/lib/getProviderHelper.d.ts.map +1 -1
  59. package/dist/esm/lib/getProviderHelper.js +5 -3
  60. package/dist/esm/lib/makeRequestOptions.d.ts.map +1 -1
  61. package/dist/esm/lib/makeRequestOptions.js +12 -11
  62. package/dist/esm/package.d.ts +1 -1
  63. package/dist/esm/package.d.ts.map +1 -1
  64. package/dist/esm/package.js +1 -1
  65. package/dist/esm/providers/black-forest-labs.d.ts.map +1 -1
  66. package/dist/esm/providers/black-forest-labs.js +4 -4
  67. package/dist/esm/providers/fal-ai.d.ts.map +1 -1
  68. package/dist/esm/providers/fal-ai.js +29 -17
  69. package/dist/esm/providers/featherless-ai.d.ts.map +1 -1
  70. package/dist/esm/providers/featherless-ai.js +10 -4
  71. package/dist/esm/providers/hf-inference.d.ts.map +1 -1
  72. package/dist/esm/providers/hf-inference.js +27 -30
  73. package/dist/esm/providers/hyperbolic.d.ts.map +1 -1
  74. package/dist/esm/providers/hyperbolic.js +3 -3
  75. package/dist/esm/providers/nebius.d.ts.map +1 -1
  76. package/dist/esm/providers/nebius.js +2 -2
  77. package/dist/esm/providers/novita.d.ts +5 -6
  78. package/dist/esm/providers/novita.d.ts.map +1 -1
  79. package/dist/esm/providers/novita.js +66 -16
  80. package/dist/esm/providers/nscale.d.ts.map +1 -1
  81. package/dist/esm/providers/nscale.js +2 -2
  82. package/dist/esm/providers/ovhcloud.d.ts.map +1 -1
  83. package/dist/esm/providers/ovhcloud.js +2 -2
  84. package/dist/esm/providers/providerHelper.js +3 -3
  85. package/dist/esm/providers/replicate.js +4 -4
  86. package/dist/esm/providers/sambanova.d.ts +16 -0
  87. package/dist/esm/providers/sambanova.d.ts.map +1 -1
  88. package/dist/esm/providers/sambanova.js +2 -18
  89. package/dist/esm/providers/together.d.ts.map +1 -1
  90. package/dist/esm/providers/together.js +3 -3
  91. package/dist/esm/tasks/audio/automaticSpeechRecognition.d.ts.map +1 -1
  92. package/dist/esm/tasks/audio/automaticSpeechRecognition.js +2 -2
  93. package/dist/esm/utils/request.d.ts.map +1 -1
  94. package/dist/esm/utils/request.js +77 -12
  95. package/dist/esm/vendor/type-fest/basic.d.ts +33 -0
  96. package/dist/esm/vendor/type-fest/basic.d.ts.map +1 -0
  97. package/dist/esm/vendor/type-fest/basic.js +1 -0
  98. package/package.json +2 -2
  99. package/src/errors.ts +82 -0
  100. package/src/index.ts +1 -1
  101. package/src/lib/getInferenceProviderMapping.ts +42 -22
  102. package/src/lib/getProviderHelper.ts +9 -3
  103. package/src/lib/makeRequestOptions.ts +20 -11
  104. package/src/package.ts +1 -1
  105. package/src/providers/black-forest-labs.ts +14 -4
  106. package/src/providers/fal-ai.ts +59 -23
  107. package/src/providers/featherless-ai.ts +10 -4
  108. package/src/providers/hf-inference.ts +75 -34
  109. package/src/providers/hyperbolic.ts +3 -4
  110. package/src/providers/nebius.ts +2 -2
  111. package/src/providers/novita.ts +103 -23
  112. package/src/providers/nscale.ts +2 -2
  113. package/src/providers/ovhcloud.ts +2 -2
  114. package/src/providers/providerHelper.ts +3 -3
  115. package/src/providers/replicate.ts +4 -4
  116. package/src/providers/sambanova.ts +3 -4
  117. package/src/providers/together.ts +3 -3
  118. package/src/tasks/audio/automaticSpeechRecognition.ts +2 -2
  119. package/src/tasks/cv/textToVideo.ts +2 -2
  120. package/src/utils/request.ts +127 -14
  121. package/src/vendor/type-fest/basic.ts +31 -0
  122. package/src/vendor/type-fest/license-cc0 +121 -0
  123. package/src/vendor/type-fest/license-mit +9 -0
  124. package/dist/commonjs/lib/InferenceOutputError.d.ts +0 -4
  125. package/dist/commonjs/lib/InferenceOutputError.d.ts.map +0 -1
  126. package/dist/commonjs/lib/InferenceOutputError.js +0 -10
  127. package/dist/esm/lib/InferenceOutputError.d.ts +0 -4
  128. package/dist/esm/lib/InferenceOutputError.d.ts.map +0 -1
  129. package/dist/esm/lib/InferenceOutputError.js +0 -6
  130. package/src/lib/InferenceOutputError.ts +0 -8
@@ -1,5 +1,5 @@
1
1
  import { HF_ROUTER_URL } from "../config.js";
2
- import { InferenceOutputError } from "../lib/InferenceOutputError.js";
2
+ import { InferenceClientProviderOutputError } from "../errors.js";
3
3
  import { toArray } from "../utils/toArray.js";
4
4
  import { TaskProviderHelper } from "./providerHelper.js";
5
5
  import { base64FromBytes } from "../utils/base64FromBytes.js";
@@ -32,7 +32,7 @@ export class HFInferenceTask extends TaskProviderHelper {
32
32
  export class HFInferenceTextToImageTask extends HFInferenceTask {
33
33
  async getResponse(response, url, headers, outputType) {
34
34
  if (!response) {
35
- throw new InferenceOutputError("response is undefined");
35
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference text-to-image API: response is undefined");
36
36
  }
37
37
  if (typeof response == "object") {
38
38
  if ("data" in response && Array.isArray(response.data) && response.data[0].b64_json) {
@@ -59,7 +59,7 @@ export class HFInferenceTextToImageTask extends HFInferenceTask {
59
59
  }
60
60
  return response;
61
61
  }
62
- throw new InferenceOutputError("Expected a Blob ");
62
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference text-to-image API: expected a Blob");
63
63
  }
64
64
  }
65
65
  export class HFInferenceConversationalTask extends HFInferenceTask {
@@ -96,19 +96,16 @@ export class HFInferenceTextGenerationTask extends HFInferenceTask {
96
96
  if (Array.isArray(res) && res.every((x) => "generated_text" in x && typeof x?.generated_text === "string")) {
97
97
  return res?.[0];
98
98
  }
99
- throw new InferenceOutputError("Expected Array<{generated_text: string}>");
99
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference text generation API: expected Array<{generated_text: string}>");
100
100
  }
101
101
  }
102
102
  export class HFInferenceAudioClassificationTask extends HFInferenceTask {
103
103
  async getResponse(response) {
104
- // Add type checking/validation for the 'unknown' input
105
104
  if (Array.isArray(response) &&
106
105
  response.every((x) => typeof x === "object" && x !== null && typeof x.label === "string" && typeof x.score === "number")) {
107
- // If validation passes, it's safe to return as AudioClassificationOutput
108
106
  return response;
109
107
  }
110
- // If validation fails, throw an error
111
- throw new InferenceOutputError("Expected Array<{label: string, score: number}> but received different format");
108
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference audio-classification API: expected Array<{label: string, score: number}> but received different format");
112
109
  }
113
110
  }
114
111
  export class HFInferenceAutomaticSpeechRecognitionTask extends HFInferenceTask {
@@ -127,7 +124,7 @@ export class HFInferenceAutomaticSpeechRecognitionTask extends HFInferenceTask {
127
124
  export class HFInferenceAudioToAudioTask extends HFInferenceTask {
128
125
  async getResponse(response) {
129
126
  if (!Array.isArray(response)) {
130
- throw new InferenceOutputError("Expected Array");
127
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference audio-to-audio API: expected Array");
131
128
  }
132
129
  if (!response.every((elem) => {
133
130
  return (typeof elem === "object" &&
@@ -139,7 +136,7 @@ export class HFInferenceAudioToAudioTask extends HFInferenceTask {
139
136
  "blob" in elem &&
140
137
  typeof elem.blob === "string");
141
138
  })) {
142
- throw new InferenceOutputError("Expected Array<{label: string, audio: Blob}>");
139
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference audio-to-audio API: expected Array<{label: string, audio: Blob}>");
143
140
  }
144
141
  return response;
145
142
  }
@@ -155,7 +152,7 @@ export class HFInferenceDocumentQuestionAnsweringTask extends HFInferenceTask {
155
152
  (typeof elem.start === "number" || typeof elem.start === "undefined"))) {
156
153
  return response[0];
157
154
  }
158
- throw new InferenceOutputError("Expected Array<{answer: string, end: number, score: number, start: number}>");
155
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference document-question-answering API: expected Array<{answer: string, end: number, score: number, start: number}>");
159
156
  }
160
157
  }
161
158
  export class HFInferenceFeatureExtractionTask extends HFInferenceTask {
@@ -173,7 +170,7 @@ export class HFInferenceFeatureExtractionTask extends HFInferenceTask {
173
170
  if (Array.isArray(response) && isNumArrayRec(response, 3, 0)) {
174
171
  return response;
175
172
  }
176
- throw new InferenceOutputError("Expected Array<number[][][] | number[][] | number[] | number>");
173
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference feature-extraction API: expected Array<number[][][] | number[][] | number[] | number>");
177
174
  }
178
175
  }
179
176
  export class HFInferenceImageClassificationTask extends HFInferenceTask {
@@ -181,7 +178,7 @@ export class HFInferenceImageClassificationTask extends HFInferenceTask {
181
178
  if (Array.isArray(response) && response.every((x) => typeof x.label === "string" && typeof x.score === "number")) {
182
179
  return response;
183
180
  }
184
- throw new InferenceOutputError("Expected Array<{label: string, score: number}>");
181
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference image-classification API: expected Array<{label: string, score: number}>");
185
182
  }
186
183
  }
187
184
  export class HFInferenceImageSegmentationTask extends HFInferenceTask {
@@ -192,13 +189,13 @@ export class HFInferenceImageSegmentationTask extends HFInferenceTask {
192
189
  (x.score === undefined || typeof x.score === "number"))) {
193
190
  return response;
194
191
  }
195
- throw new InferenceOutputError("Expected Array<{label: string, mask: string, score: number}>");
192
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference image-segmentation API: expected Array<{label: string, mask: string, score: number}>");
196
193
  }
197
194
  }
198
195
  export class HFInferenceImageToTextTask extends HFInferenceTask {
199
196
  async getResponse(response) {
200
197
  if (typeof response?.generated_text !== "string") {
201
- throw new InferenceOutputError("Expected {generated_text: string}");
198
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference image-to-text API: expected {generated_text: string}");
202
199
  }
203
200
  return response;
204
201
  }
@@ -223,7 +220,7 @@ export class HFInferenceImageToImageTask extends HFInferenceTask {
223
220
  if (response instanceof Blob) {
224
221
  return response;
225
222
  }
226
- throw new InferenceOutputError("Expected Blob");
223
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference image-to-image API: expected Blob");
227
224
  }
228
225
  }
229
226
  export class HFInferenceObjectDetectionTask extends HFInferenceTask {
@@ -237,7 +234,7 @@ export class HFInferenceObjectDetectionTask extends HFInferenceTask {
237
234
  typeof x.box.ymax === "number")) {
238
235
  return response;
239
236
  }
240
- throw new InferenceOutputError("Expected Array<{label: string, score: number, box: {xmin: number, ymin: number, xmax: number, ymax: number}}>");
237
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference object-detection API: expected Array<{label: string, score: number, box: {xmin: number, ymin: number, xmax: number, ymax: number}}>");
241
238
  }
242
239
  }
243
240
  export class HFInferenceZeroShotImageClassificationTask extends HFInferenceTask {
@@ -245,7 +242,7 @@ export class HFInferenceZeroShotImageClassificationTask extends HFInferenceTask
245
242
  if (Array.isArray(response) && response.every((x) => typeof x.label === "string" && typeof x.score === "number")) {
246
243
  return response;
247
244
  }
248
- throw new InferenceOutputError("Expected Array<{label: string, score: number}>");
245
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference zero-shot-image-classification API: expected Array<{label: string, score: number}>");
249
246
  }
250
247
  }
251
248
  export class HFInferenceTextClassificationTask extends HFInferenceTask {
@@ -254,7 +251,7 @@ export class HFInferenceTextClassificationTask extends HFInferenceTask {
254
251
  if (Array.isArray(output) && output.every((x) => typeof x?.label === "string" && typeof x.score === "number")) {
255
252
  return output;
256
253
  }
257
- throw new InferenceOutputError("Expected Array<{label: string, score: number}>");
254
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference text-classification API: expected Array<{label: string, score: number}>");
258
255
  }
259
256
  }
260
257
  export class HFInferenceQuestionAnsweringTask extends HFInferenceTask {
@@ -274,7 +271,7 @@ export class HFInferenceQuestionAnsweringTask extends HFInferenceTask {
274
271
  typeof response.start === "number") {
275
272
  return Array.isArray(response) ? response[0] : response;
276
273
  }
277
- throw new InferenceOutputError("Expected Array<{answer: string, end: number, score: number, start: number}>");
274
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference question-answering API: expected Array<{answer: string, end: number, score: number, start: number}>");
278
275
  }
279
276
  }
280
277
  export class HFInferenceFillMaskTask extends HFInferenceTask {
@@ -286,7 +283,7 @@ export class HFInferenceFillMaskTask extends HFInferenceTask {
286
283
  typeof x.token_str === "string")) {
287
284
  return response;
288
285
  }
289
- throw new InferenceOutputError("Expected Array<{score: number, sequence: string, token: number, token_str: string}>");
286
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference fill-mask API: expected Array<{score: number, sequence: string, token: number, token_str: string}>");
290
287
  }
291
288
  }
292
289
  export class HFInferenceZeroShotClassificationTask extends HFInferenceTask {
@@ -299,7 +296,7 @@ export class HFInferenceZeroShotClassificationTask extends HFInferenceTask {
299
296
  typeof x.sequence === "string")) {
300
297
  return response;
301
298
  }
302
- throw new InferenceOutputError("Expected Array<{labels: string[], scores: number[], sequence: string}>");
299
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference zero-shot-classification API: expected Array<{labels: string[], scores: number[], sequence: string}>");
303
300
  }
304
301
  }
305
302
  export class HFInferenceSentenceSimilarityTask extends HFInferenceTask {
@@ -307,7 +304,7 @@ export class HFInferenceSentenceSimilarityTask extends HFInferenceTask {
307
304
  if (Array.isArray(response) && response.every((x) => typeof x === "number")) {
308
305
  return response;
309
306
  }
310
- throw new InferenceOutputError("Expected Array<number>");
307
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference sentence-similarity API: expected Array<number>");
311
308
  }
312
309
  }
313
310
  export class HFInferenceTableQuestionAnsweringTask extends HFInferenceTask {
@@ -331,7 +328,7 @@ export class HFInferenceTableQuestionAnsweringTask extends HFInferenceTask {
331
328
  : HFInferenceTableQuestionAnsweringTask.validate(response)) {
332
329
  return Array.isArray(response) ? response[0] : response;
333
330
  }
334
- throw new InferenceOutputError("Expected {aggregator: string, answer: string, cells: string[], coordinates: number[][]}");
331
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference table-question-answering API: expected {aggregator: string, answer: string, cells: string[], coordinates: number[][]}");
335
332
  }
336
333
  }
337
334
  export class HFInferenceTokenClassificationTask extends HFInferenceTask {
@@ -344,7 +341,7 @@ export class HFInferenceTokenClassificationTask extends HFInferenceTask {
344
341
  typeof x.word === "string")) {
345
342
  return response;
346
343
  }
347
- throw new InferenceOutputError("Expected Array<{end: number, entity_group: string, score: number, start: number, word: string}>");
344
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference token-classification API: expected Array<{end: number, entity_group: string, score: number, start: number, word: string}>");
348
345
  }
349
346
  }
350
347
  export class HFInferenceTranslationTask extends HFInferenceTask {
@@ -352,7 +349,7 @@ export class HFInferenceTranslationTask extends HFInferenceTask {
352
349
  if (Array.isArray(response) && response.every((x) => typeof x?.translation_text === "string")) {
353
350
  return response?.length === 1 ? response?.[0] : response;
354
351
  }
355
- throw new InferenceOutputError("Expected Array<{translation_text: string}>");
352
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference translation API: expected Array<{translation_text: string}>");
356
353
  }
357
354
  }
358
355
  export class HFInferenceSummarizationTask extends HFInferenceTask {
@@ -360,7 +357,7 @@ export class HFInferenceSummarizationTask extends HFInferenceTask {
360
357
  if (Array.isArray(response) && response.every((x) => typeof x?.summary_text === "string")) {
361
358
  return response?.[0];
362
359
  }
363
- throw new InferenceOutputError("Expected Array<{summary_text: string}>");
360
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference summarization API: expected Array<{summary_text: string}>");
364
361
  }
365
362
  }
366
363
  export class HFInferenceTextToSpeechTask extends HFInferenceTask {
@@ -373,7 +370,7 @@ export class HFInferenceTabularClassificationTask extends HFInferenceTask {
373
370
  if (Array.isArray(response) && response.every((x) => typeof x === "number")) {
374
371
  return response;
375
372
  }
376
- throw new InferenceOutputError("Expected Array<number>");
373
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference tabular-classification API: expected Array<number>");
377
374
  }
378
375
  }
379
376
  export class HFInferenceVisualQuestionAnsweringTask extends HFInferenceTask {
@@ -382,7 +379,7 @@ export class HFInferenceVisualQuestionAnsweringTask extends HFInferenceTask {
382
379
  response.every((elem) => typeof elem === "object" && !!elem && typeof elem?.answer === "string" && typeof elem.score === "number")) {
383
380
  return response[0];
384
381
  }
385
- throw new InferenceOutputError("Expected Array<{answer: string, score: number}>");
382
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference visual-question-answering API: expected Array<{answer: string, score: number}>");
386
383
  }
387
384
  }
388
385
  export class HFInferenceTabularRegressionTask extends HFInferenceTask {
@@ -390,7 +387,7 @@ export class HFInferenceTabularRegressionTask extends HFInferenceTask {
390
387
  if (Array.isArray(response) && response.every((x) => typeof x === "number")) {
391
388
  return response;
392
389
  }
393
- throw new InferenceOutputError("Expected Array<number>");
390
+ throw new InferenceClientProviderOutputError("Received malformed response from HF-Inference tabular-regression API: expected Array<number>");
394
391
  }
395
392
  }
396
393
  export class HFInferenceTextToAudioTask extends HFInferenceTask {
@@ -1 +1 @@
1
- {"version":3,"file":"hyperbolic.d.ts","sourceRoot":"","sources":["../../../src/providers/hyperbolic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAErF,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EACN,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,MAAM,qBAAqB,CAAC;AAI7B,MAAM,WAAW,8BAA+B,SAAQ,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC;IAC5F,OAAO,EAAE,KAAK,CAAC;QACd,OAAO,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;KAC7B,CAAC,CAAC;CACH;AAED,UAAU,2BAA2B;IACpC,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjC;AAED,qBAAa,4BAA6B,SAAQ,sBAAsB;;CAIvE;AAED,qBAAa,4BAA6B,SAAQ,sBAAsB;;IAK9D,SAAS,IAAI,MAAM;IAInB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAcrD,WAAW,CAAC,QAAQ,EAAE,8BAA8B,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAenG;AAED,qBAAa,yBAA0B,SAAQ,kBAAmB,YAAW,qBAAqB;;IAKjG,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAKpC,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IASrD,WAAW,CAChB,QAAQ,EAAE,2BAA2B,EACrC,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,EACrB,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAgBzB"}
1
+ {"version":3,"file":"hyperbolic.d.ts","sourceRoot":"","sources":["../../../src/providers/hyperbolic.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AACrF,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EACN,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,MAAM,qBAAqB,CAAC;AAI7B,MAAM,WAAW,8BAA+B,SAAQ,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC;IAC5F,OAAO,EAAE,KAAK,CAAC;QACd,OAAO,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;KAC7B,CAAC,CAAC;CACH;AAED,UAAU,2BAA2B;IACpC,MAAM,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjC;AAED,qBAAa,4BAA6B,SAAQ,sBAAsB;;CAIvE;AAED,qBAAa,4BAA6B,SAAQ,sBAAsB;;IAK9D,SAAS,IAAI,MAAM;IAInB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAcrD,WAAW,CAAC,QAAQ,EAAE,8BAA8B,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAenG;AAED,qBAAa,yBAA0B,SAAQ,kBAAmB,YAAW,qBAAqB;;IAKjG,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAKpC,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IASrD,WAAW,CAChB,QAAQ,EAAE,2BAA2B,EACrC,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,EACrB,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAgBzB"}
@@ -1,6 +1,6 @@
1
- import { InferenceOutputError } from "../lib/InferenceOutputError.js";
2
1
  import { omit } from "../utils/omit.js";
3
2
  import { BaseConversationalTask, BaseTextGenerationTask, TaskProviderHelper, } from "./providerHelper.js";
3
+ import { InferenceClientProviderOutputError } from "../errors.js";
4
4
  const HYPERBOLIC_API_BASE_URL = "https://api.hyperbolic.xyz";
5
5
  export class HyperbolicConversationalTask extends BaseConversationalTask {
6
6
  constructor() {
@@ -37,7 +37,7 @@ export class HyperbolicTextGenerationTask extends BaseTextGenerationTask {
37
37
  generated_text: completion.message.content,
38
38
  };
39
39
  }
40
- throw new InferenceOutputError("Expected Hyperbolic text generation response format");
40
+ throw new InferenceClientProviderOutputError("Received malformed response from Hyperbolic text generation API");
41
41
  }
42
42
  }
43
43
  export class HyperbolicTextToImageTask extends TaskProviderHelper {
@@ -67,6 +67,6 @@ export class HyperbolicTextToImageTask extends TaskProviderHelper {
67
67
  }
68
68
  return fetch(`data:image/jpeg;base64,${response.images[0].image}`).then((res) => res.blob());
69
69
  }
70
- throw new InferenceOutputError("Expected Hyperbolic text-to-image response format");
70
+ throw new InferenceClientProviderOutputError("Received malformed response from Hyperbolic text-to-image API");
71
71
  }
72
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nebius.d.ts","sourceRoot":"","sources":["../../../src/providers/nebius.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EACN,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,MAAM,qBAAqB,CAAC;AAI7B,UAAU,2BAA2B;IACpC,IAAI,EAAE,KAAK,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACH;AAED,UAAU,wBAAwB;IACjC,IAAI,EAAE,KAAK,CAAC;QACX,SAAS,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC;CACH;AAED,qBAAa,wBAAyB,SAAQ,sBAAsB;;CAInE;AAED,qBAAa,wBAAyB,SAAQ,sBAAsB;;CAInE;AAED,qBAAa,qBAAsB,SAAQ,kBAAmB,YAAW,qBAAqB;;IAK7F,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAU3D,SAAS,IAAI,MAAM;IAIb,WAAW,CAChB,QAAQ,EAAE,2BAA2B,EACrC,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,EACrB,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAkBzB;AAED,qBAAa,2BAA4B,SAAQ,kBAAmB,YAAW,2BAA2B;;IAKzG,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAO3D,SAAS,IAAI,MAAM;IAIb,WAAW,CAAC,QAAQ,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAGvF"}
1
+ {"version":3,"file":"nebius.d.ts","sourceRoot":"","sources":["../../../src/providers/nebius.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EACN,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,2BAA2B,EAChC,KAAK,qBAAqB,EAC1B,MAAM,qBAAqB,CAAC;AAK7B,UAAU,2BAA2B;IACpC,IAAI,EAAE,KAAK,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACH;AAED,UAAU,wBAAwB;IACjC,IAAI,EAAE,KAAK,CAAC;QACX,SAAS,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC,CAAC;CACH;AAED,qBAAa,wBAAyB,SAAQ,sBAAsB;;CAInE;AAED,qBAAa,wBAAyB,SAAQ,sBAAsB;;CAInE;AAED,qBAAa,qBAAsB,SAAQ,kBAAmB,YAAW,qBAAqB;;IAK7F,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAU3D,SAAS,IAAI,MAAM;IAIb,WAAW,CAChB,QAAQ,EAAE,2BAA2B,EACrC,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,EACrB,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAkBzB;AAED,qBAAa,2BAA4B,SAAQ,kBAAmB,YAAW,2BAA2B;;IAKzG,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAO3D,SAAS,IAAI,MAAM;IAIb,WAAW,CAAC,QAAQ,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAGvF"}
@@ -1,6 +1,6 @@
1
- import { InferenceOutputError } from "../lib/InferenceOutputError.js";
2
1
  import { omit } from "../utils/omit.js";
3
2
  import { BaseConversationalTask, BaseTextGenerationTask, TaskProviderHelper, } from "./providerHelper.js";
3
+ import { InferenceClientProviderOutputError } from "../errors.js";
4
4
  const NEBIUS_API_BASE_URL = "https://api.studio.nebius.ai";
5
5
  export class NebiusConversationalTask extends BaseConversationalTask {
6
6
  constructor() {
@@ -41,7 +41,7 @@ export class NebiusTextToImageTask extends TaskProviderHelper {
41
41
  }
42
42
  return fetch(`data:image/jpeg;base64,${base64Data}`).then((res) => res.blob());
43
43
  }
44
- throw new InferenceOutputError("Expected Nebius text-to-image response format");
44
+ throw new InferenceClientProviderOutputError("Received malformed response from Nebius text-to-image API");
45
45
  }
46
46
  }
47
47
  export class NebiusFeatureExtractionTask extends TaskProviderHelper {
@@ -1,9 +1,8 @@
1
+ import type { TextToVideoArgs } from "../tasks/index.js";
1
2
  import type { BodyParams, UrlParams } from "../types.js";
2
3
  import { BaseConversationalTask, BaseTextGenerationTask, TaskProviderHelper, type TextToVideoTaskHelper } from "./providerHelper.js";
3
- export interface NovitaOutput {
4
- video: {
5
- video_url: string;
6
- };
4
+ export interface NovitaAsyncAPIOutput {
5
+ task_id: string;
7
6
  }
8
7
  export declare class NovitaTextGenerationTask extends BaseTextGenerationTask {
9
8
  constructor();
@@ -16,7 +15,7 @@ export declare class NovitaConversationalTask extends BaseConversationalTask {
16
15
  export declare class NovitaTextToVideoTask extends TaskProviderHelper implements TextToVideoTaskHelper {
17
16
  constructor();
18
17
  makeRoute(params: UrlParams): string;
19
- preparePayload(params: BodyParams): Record<string, unknown>;
20
- getResponse(response: NovitaOutput): Promise<Blob>;
18
+ preparePayload(params: BodyParams<TextToVideoArgs>): Record<string, unknown>;
19
+ getResponse(response: NovitaAsyncAPIOutput, url?: string, headers?: Record<string, string>): Promise<Blob>;
21
20
  }
22
21
  //# sourceMappingURL=novita.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"novita.d.ts","sourceRoot":"","sources":["../../../src/providers/novita.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEzD,OAAO,EACN,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,MAAM,qBAAqB,CAAC;AAG7B,MAAM,WAAW,YAAY;IAC5B,KAAK,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;KAClB,CAAC;CACF;AACD,qBAAa,wBAAyB,SAAQ,sBAAsB;;IAK1D,SAAS,IAAI,MAAM;CAG5B;AAED,qBAAa,wBAAyB,SAAQ,sBAAsB;;IAK1D,SAAS,IAAI,MAAM;CAG5B;AACD,qBAAa,qBAAsB,SAAQ,kBAAmB,YAAW,qBAAqB;;IAK7F,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAIpC,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAO5C,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;CAkBjE"}
1
+ {"version":3,"file":"novita.d.ts","sourceRoot":"","sources":["../../../src/providers/novita.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGzD,OAAO,EACN,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,MAAM,qBAAqB,CAAC;AAS7B,MAAM,WAAW,oBAAoB;IACpC,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,wBAAyB,SAAQ,sBAAsB;;IAK1D,SAAS,IAAI,MAAM;CAG5B;AAED,qBAAa,wBAAyB,SAAQ,sBAAsB;;IAK1D,SAAS,IAAI,MAAM;CAG5B;AAED,qBAAa,qBAAsB,SAAQ,kBAAmB,YAAW,qBAAqB;;IAKpF,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAIpC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAUtE,WAAW,CACzB,QAAQ,EAAE,oBAAoB,EAC9B,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC;CAoFhB"}
@@ -14,10 +14,11 @@
14
14
  *
15
15
  * Thanks!
16
16
  */
17
- import { InferenceOutputError } from "../lib/InferenceOutputError.js";
18
17
  import { isUrl } from "../lib/isUrl.js";
18
+ import { delay } from "../utils/delay.js";
19
19
  import { omit } from "../utils/omit.js";
20
20
  import { BaseConversationalTask, BaseTextGenerationTask, TaskProviderHelper, } from "./providerHelper.js";
21
+ import { InferenceClientInputError, InferenceClientProviderApiError, InferenceClientProviderOutputError, } from "../errors.js";
21
22
  const NOVITA_API_BASE_URL = "https://api.novita.ai";
22
23
  export class NovitaTextGenerationTask extends BaseTextGenerationTask {
23
24
  constructor() {
@@ -40,28 +41,77 @@ export class NovitaTextToVideoTask extends TaskProviderHelper {
40
41
  super("novita", NOVITA_API_BASE_URL);
41
42
  }
42
43
  makeRoute(params) {
43
- return `/v3/hf/${params.model}`;
44
+ return `/v3/async/${params.model}`;
44
45
  }
45
46
  preparePayload(params) {
47
+ const { num_inference_steps, ...restParameters } = params.args.parameters ?? {};
46
48
  return {
47
49
  ...omit(params.args, ["inputs", "parameters"]),
48
- ...params.args.parameters,
50
+ ...restParameters,
51
+ steps: num_inference_steps,
49
52
  prompt: params.args.inputs,
50
53
  };
51
54
  }
52
- async getResponse(response) {
53
- const isValidOutput = typeof response === "object" &&
54
- !!response &&
55
- "video" in response &&
56
- typeof response.video === "object" &&
57
- !!response.video &&
58
- "video_url" in response.video &&
59
- typeof response.video.video_url === "string" &&
60
- isUrl(response.video.video_url);
61
- if (!isValidOutput) {
62
- throw new InferenceOutputError("Expected { video: { video_url: string } }");
55
+ async getResponse(response, url, headers) {
56
+ if (!url || !headers) {
57
+ throw new InferenceClientInputError("URL and headers are required for text-to-video task");
58
+ }
59
+ const taskId = response.task_id;
60
+ if (!taskId) {
61
+ throw new InferenceClientProviderOutputError("Received malformed response from Novita text-to-video API: no task ID found in the response");
62
+ }
63
+ const parsedUrl = new URL(url);
64
+ const baseUrl = `${parsedUrl.protocol}//${parsedUrl.host}${parsedUrl.host === "router.huggingface.co" ? "/novita" : ""}`;
65
+ const resultUrl = `${baseUrl}/v3/async/task-result?task_id=${taskId}`;
66
+ let status = "";
67
+ let taskResult;
68
+ while (status !== "TASK_STATUS_SUCCEED" && status !== "TASK_STATUS_FAILED") {
69
+ await delay(500);
70
+ const resultResponse = await fetch(resultUrl, { headers });
71
+ if (!resultResponse.ok) {
72
+ throw new InferenceClientProviderApiError("Failed to fetch task result", { url: resultUrl, method: "GET", headers }, {
73
+ requestId: resultResponse.headers.get("x-request-id") ?? "",
74
+ status: resultResponse.status,
75
+ body: await resultResponse.text(),
76
+ });
77
+ }
78
+ try {
79
+ taskResult = await resultResponse.json();
80
+ if (taskResult &&
81
+ typeof taskResult === "object" &&
82
+ "task" in taskResult &&
83
+ taskResult.task &&
84
+ typeof taskResult.task === "object" &&
85
+ "status" in taskResult.task &&
86
+ typeof taskResult.task.status === "string") {
87
+ status = taskResult.task.status;
88
+ }
89
+ else {
90
+ throw new InferenceClientProviderOutputError("Received malformed response from Novita text-to-video API: failed to get task status");
91
+ }
92
+ }
93
+ catch (error) {
94
+ throw new InferenceClientProviderOutputError("Received malformed response from Novita text-to-video API: failed to parse task result");
95
+ }
96
+ }
97
+ if (status === "TASK_STATUS_FAILED") {
98
+ throw new InferenceClientProviderOutputError("Novita text-to-video task failed");
99
+ }
100
+ if (typeof taskResult === "object" &&
101
+ !!taskResult &&
102
+ "videos" in taskResult &&
103
+ typeof taskResult.videos === "object" &&
104
+ !!taskResult.videos &&
105
+ Array.isArray(taskResult.videos) &&
106
+ taskResult.videos.length > 0 &&
107
+ "video_url" in taskResult.videos[0] &&
108
+ typeof taskResult.videos[0].video_url === "string" &&
109
+ isUrl(taskResult.videos[0].video_url)) {
110
+ const urlResponse = await fetch(taskResult.videos[0].video_url);
111
+ return await urlResponse.blob();
112
+ }
113
+ else {
114
+ throw new InferenceClientProviderOutputError(`Received malformed response from Novita text-to-video API: expected { videos: [{ video_url: string }] } format, got instead: ${JSON.stringify(taskResult)}`);
63
115
  }
64
- const urlResponse = await fetch(response.video.video_url);
65
- return await urlResponse.blob();
66
116
  }
67
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nscale.d.ts","sourceRoot":"","sources":["../../../src/providers/nscale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAI7G,UAAU,gCAAgC;IACzC,IAAI,EAAE,KAAK,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACH;AAED,qBAAa,wBAAyB,SAAQ,sBAAsB;;CAInE;AAED,qBAAa,qBAAsB,SAAQ,kBAAmB,YAAW,qBAAqB;;IAK7F,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAU7E,SAAS,IAAI,MAAM;IAIb,WAAW,CAChB,QAAQ,EAAE,gCAAgC,EAC1C,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,EACrB,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAkBzB"}
1
+ {"version":3,"file":"nscale.d.ts","sourceRoot":"","sources":["../../../src/providers/nscale.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAK7G,UAAU,gCAAgC;IACzC,IAAI,EAAE,KAAK,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACH;AAED,qBAAa,wBAAyB,SAAQ,sBAAsB;;CAInE;AAED,qBAAa,qBAAsB,SAAQ,kBAAmB,YAAW,qBAAqB;;IAK7F,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAU7E,SAAS,IAAI,MAAM;IAIb,WAAW,CAChB,QAAQ,EAAE,gCAAgC,EAC1C,GAAG,CAAC,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,WAAW,EACrB,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAkBzB"}
@@ -1,6 +1,6 @@
1
- import { InferenceOutputError } from "../lib/InferenceOutputError.js";
2
1
  import { omit } from "../utils/omit.js";
3
2
  import { BaseConversationalTask, TaskProviderHelper } from "./providerHelper.js";
3
+ import { InferenceClientProviderOutputError } from "../errors.js";
4
4
  const NSCALE_API_BASE_URL = "https://inference.api.nscale.com";
5
5
  export class NscaleConversationalTask extends BaseConversationalTask {
6
6
  constructor() {
@@ -36,6 +36,6 @@ export class NscaleTextToImageTask extends TaskProviderHelper {
36
36
  }
37
37
  return fetch(`data:image/jpeg;base64,${base64Data}`).then((res) => res.blob());
38
38
  }
39
- throw new InferenceOutputError("Expected Nscale text-to-image response format");
39
+ throw new InferenceClientProviderOutputError("Received malformed response from Nscale text-to-image API");
40
40
  }
41
41
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ovhcloud.d.ts","sourceRoot":"","sources":["../../../src/providers/ovhcloud.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AAEvH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,UAAU,4BAA6B,SAAQ,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC;IACnF,OAAO,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,gCAAgC,CAAC;QAChD,QAAQ,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACH;AAED,qBAAa,0BAA2B,SAAQ,sBAAsB;;CAIrE;AAED,qBAAa,0BAA2B,SAAQ,sBAAsB;;IAK5D,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAc1E,WAAW,CAAC,QAAQ,EAAE,4BAA4B,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAcjG"}
1
+ {"version":3,"file":"ovhcloud.d.ts","sourceRoot":"","sources":["../../../src/providers/ovhcloud.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AACvH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAK9D,UAAU,4BAA6B,SAAQ,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC;IACnF,OAAO,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,gCAAgC,CAAC;QAChD,QAAQ,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACH;AAED,qBAAa,0BAA2B,SAAQ,sBAAsB;;CAIrE;AAED,qBAAa,0BAA2B,SAAQ,sBAAsB;;IAK5D,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAc1E,WAAW,CAAC,QAAQ,EAAE,4BAA4B,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAcjG"}
@@ -15,8 +15,8 @@
15
15
  * Thanks!
16
16
  */
17
17
  import { BaseConversationalTask, BaseTextGenerationTask } from "./providerHelper.js";
18
- import { InferenceOutputError } from "../lib/InferenceOutputError.js";
19
18
  import { omit } from "../utils/omit.js";
19
+ import { InferenceClientProviderOutputError } from "../errors.js";
20
20
  const OVHCLOUD_API_BASE_URL = "https://oai.endpoints.kepler.ai.cloud.ovh.net";
21
21
  export class OvhCloudConversationalTask extends BaseConversationalTask {
22
22
  constructor() {
@@ -50,6 +50,6 @@ export class OvhCloudTextGenerationTask extends BaseTextGenerationTask {
50
50
  generated_text: completion.text,
51
51
  };
52
52
  }
53
- throw new InferenceOutputError("Expected OVHcloud text generation response format");
53
+ throw new InferenceClientProviderOutputError("Received malformed response from OVHcloud text generation API");
54
54
  }
55
55
  }
@@ -1,5 +1,5 @@
1
1
  import { HF_ROUTER_URL } from "../config.js";
2
- import { InferenceOutputError } from "../lib/InferenceOutputError.js";
2
+ import { InferenceClientProviderOutputError } from "../errors.js";
3
3
  import { toArray } from "../utils/toArray.js";
4
4
  /**
5
5
  * Base class for task-specific provider helpers
@@ -74,7 +74,7 @@ export class BaseConversationalTask extends TaskProviderHelper {
74
74
  typeof response?.usage === "object") {
75
75
  return response;
76
76
  }
77
- throw new InferenceOutputError("Expected ChatCompletionOutput");
77
+ throw new InferenceClientProviderOutputError("Expected ChatCompletionOutput");
78
78
  }
79
79
  }
80
80
  export class BaseTextGenerationTask extends TaskProviderHelper {
@@ -97,6 +97,6 @@ export class BaseTextGenerationTask extends TaskProviderHelper {
97
97
  res.every((x) => typeof x === "object" && !!x && "generated_text" in x && typeof x.generated_text === "string")) {
98
98
  return res[0];
99
99
  }
100
- throw new InferenceOutputError("Expected Array<{generated_text: string}>");
100
+ throw new InferenceClientProviderOutputError("Expected Array<{generated_text: string}>");
101
101
  }
102
102
  }
@@ -14,7 +14,7 @@
14
14
  *
15
15
  * Thanks!
16
16
  */
17
- import { InferenceOutputError } from "../lib/InferenceOutputError.js";
17
+ import { InferenceClientProviderOutputError } from "../errors.js";
18
18
  import { isUrl } from "../lib/isUrl.js";
19
19
  import { omit } from "../utils/omit.js";
20
20
  import { TaskProviderHelper } from "./providerHelper.js";
@@ -81,7 +81,7 @@ export class ReplicateTextToImageTask extends ReplicateTask {
81
81
  const urlResponse = await fetch(res.output[0]);
82
82
  return await urlResponse.blob();
83
83
  }
84
- throw new InferenceOutputError("Expected Replicate text-to-image response format");
84
+ throw new InferenceClientProviderOutputError("Received malformed response from Replicate text-to-image API");
85
85
  }
86
86
  }
87
87
  export class ReplicateTextToSpeechTask extends ReplicateTask {
@@ -111,7 +111,7 @@ export class ReplicateTextToSpeechTask extends ReplicateTask {
111
111
  }
112
112
  }
113
113
  }
114
- throw new InferenceOutputError("Expected Blob or object with output");
114
+ throw new InferenceClientProviderOutputError("Received malformed response from Replicate text-to-speech API");
115
115
  }
116
116
  }
117
117
  export class ReplicateTextToVideoTask extends ReplicateTask {
@@ -124,6 +124,6 @@ export class ReplicateTextToVideoTask extends ReplicateTask {
124
124
  const urlResponse = await fetch(response.output);
125
125
  return await urlResponse.blob();
126
126
  }
127
- throw new InferenceOutputError("Expected { output: string }");
127
+ throw new InferenceClientProviderOutputError("Received malformed response from Replicate text-to-video API");
128
128
  }
129
129
  }
@@ -1,3 +1,19 @@
1
+ /**
2
+ * See the registered mapping of HF model ID => Sambanova model ID here:
3
+ *
4
+ * https://huggingface.co/api/partners/sambanova/models
5
+ *
6
+ * This is a publicly available mapping.
7
+ *
8
+ * If you want to try to run inference for a new model locally before it's registered on huggingface.co,
9
+ * you can add it to the dictionary "HARDCODED_MODEL_ID_MAPPING" in consts.ts, for dev purposes.
10
+ *
11
+ * - If you work at Sambanova and want to update this mapping, please use the model mapping API we provide on huggingface.co
12
+ * - If you're a community member and want to add a new supported HF model to Sambanova, please open an issue on the present repo
13
+ * and we will tag Sambanova team members.
14
+ *
15
+ * Thanks!
16
+ */
1
17
  import type { FeatureExtractionOutput } from "@huggingface/tasks";
2
18
  import type { BodyParams } from "../types.js";
3
19
  import type { FeatureExtractionTaskHelper } from "./providerHelper.js";
@@ -1 +1 @@
1
- {"version":3,"file":"sambanova.d.ts","sourceRoot":"","sources":["../../../src/providers/sambanova.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEjF,qBAAa,2BAA4B,SAAQ,sBAAsB;;CAItE;AAED,qBAAa,8BAA+B,SAAQ,kBAAmB,YAAW,2BAA2B;;IAKnG,SAAS,IAAI,MAAM;IAIb,WAAW,CAAC,QAAQ,EAAE,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAStF,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAOpE"}
1
+ {"version":3,"file":"sambanova.d.ts","sourceRoot":"","sources":["../../../src/providers/sambanova.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAGjF,qBAAa,2BAA4B,SAAQ,sBAAsB;;CAItE;AAED,qBAAa,8BAA+B,SAAQ,kBAAmB,YAAW,2BAA2B;;IAKnG,SAAS,IAAI,MAAM;IAIb,WAAW,CAAC,QAAQ,EAAE,uBAAuB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAStF,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAOpE"}
@@ -1,21 +1,5 @@
1
- /**
2
- * See the registered mapping of HF model ID => Sambanova model ID here:
3
- *
4
- * https://huggingface.co/api/partners/sambanova/models
5
- *
6
- * This is a publicly available mapping.
7
- *
8
- * If you want to try to run inference for a new model locally before it's registered on huggingface.co,
9
- * you can add it to the dictionary "HARDCODED_MODEL_ID_MAPPING" in consts.ts, for dev purposes.
10
- *
11
- * - If you work at Sambanova and want to update this mapping, please use the model mapping API we provide on huggingface.co
12
- * - If you're a community member and want to add a new supported HF model to Sambanova, please open an issue on the present repo
13
- * and we will tag Sambanova team members.
14
- *
15
- * Thanks!
16
- */
17
- import { InferenceOutputError } from "../lib/InferenceOutputError.js";
18
1
  import { BaseConversationalTask, TaskProviderHelper } from "./providerHelper.js";
2
+ import { InferenceClientProviderOutputError } from "../errors.js";
19
3
  export class SambanovaConversationalTask extends BaseConversationalTask {
20
4
  constructor() {
21
5
  super("sambanova", "https://api.sambanova.ai");
@@ -32,7 +16,7 @@ export class SambanovaFeatureExtractionTask extends TaskProviderHelper {
32
16
  if (typeof response === "object" && "data" in response && Array.isArray(response.data)) {
33
17
  return response.data.map((item) => item.embedding);
34
18
  }
35
- throw new InferenceOutputError("Expected Sambanova feature-extraction (embeddings) response format to be {'data' : list of {'embedding' : number[]}}");
19
+ throw new InferenceClientProviderOutputError("Received malformed response from Sambanova feature-extraction (embeddings) API");
36
20
  }
37
21
  preparePayload(params) {
38
22
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"together.d.ts","sourceRoot":"","sources":["../../../src/providers/together.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AAEvH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EACN,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,MAAM,qBAAqB,CAAC;AAI7B,UAAU,4BAA6B,SAAQ,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC;IACnF,OAAO,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,gCAAgC,CAAC;QAChD,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACH;AAED,UAAU,6BAA6B;IACtC,IAAI,EAAE,KAAK,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACH;AAED,qBAAa,0BAA2B,SAAQ,sBAAsB;;CAIrE;AAED,qBAAa,0BAA2B,SAAQ,sBAAsB;;IAK5D,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAQrD,WAAW,CAAC,QAAQ,EAAE,4BAA4B,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAcjG;AAED,qBAAa,uBAAwB,SAAQ,kBAAmB,YAAW,qBAAqB;;IAK/F,SAAS,IAAI,MAAM;IAInB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAUrD,WAAW,CAAC,QAAQ,EAAE,6BAA6B,EAAE,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAkB/G"}
1
+ {"version":3,"file":"together.d.ts","sourceRoot":"","sources":["../../../src/providers/together.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,gCAAgC,EAAE,MAAM,oBAAoB,CAAC;AACvH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,EACN,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,MAAM,qBAAqB,CAAC;AAK7B,UAAU,4BAA6B,SAAQ,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC;IACnF,OAAO,EAAE,KAAK,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,aAAa,EAAE,gCAAgC,CAAC;QAChD,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACH;AAED,UAAU,6BAA6B;IACtC,IAAI,EAAE,KAAK,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACH;AAED,qBAAa,0BAA2B,SAAQ,sBAAsB;;CAIrE;AAED,qBAAa,0BAA2B,SAAQ,sBAAsB;;IAK5D,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAQrD,WAAW,CAAC,QAAQ,EAAE,4BAA4B,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAcjG;AAED,qBAAa,uBAAwB,SAAQ,kBAAmB,YAAW,qBAAqB;;IAK/F,SAAS,IAAI,MAAM;IAInB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAUrD,WAAW,CAAC,QAAQ,EAAE,6BAA6B,EAAE,UAAU,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAkB/G"}