@workglow/ai-provider 0.0.125 → 0.1.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 (185) hide show
  1. package/dist/common/HfModelSearch.d.ts +1 -0
  2. package/dist/common/HfModelSearch.d.ts.map +1 -1
  3. package/dist/common/modelSearchQuery.d.ts +25 -0
  4. package/dist/common/modelSearchQuery.d.ts.map +1 -0
  5. package/dist/provider-anthropic/AnthropicProvider.d.ts +1 -1
  6. package/dist/provider-anthropic/AnthropicProvider.d.ts.map +1 -1
  7. package/dist/provider-anthropic/AnthropicQueuedProvider.d.ts +4 -4
  8. package/dist/provider-anthropic/AnthropicQueuedProvider.d.ts.map +1 -1
  9. package/dist/provider-anthropic/common/Anthropic_Client.d.ts.map +1 -1
  10. package/dist/provider-anthropic/common/Anthropic_CountTokens.d.ts.map +1 -1
  11. package/dist/provider-anthropic/common/Anthropic_JobRunFns.d.ts.map +1 -1
  12. package/dist/provider-anthropic/common/Anthropic_ModelSearch.d.ts.map +1 -1
  13. package/dist/provider-anthropic/common/Anthropic_TextGeneration.d.ts.map +1 -1
  14. package/dist/provider-anthropic/common/Anthropic_TextRewriter.d.ts.map +1 -1
  15. package/dist/provider-anthropic/common/Anthropic_TextSummary.d.ts.map +1 -1
  16. package/dist/provider-anthropic/index.js +3 -4
  17. package/dist/provider-anthropic/index.js.map +3 -3
  18. package/dist/provider-anthropic/runtime.js +39 -292
  19. package/dist/provider-anthropic/runtime.js.map +13 -13
  20. package/dist/provider-chrome/common/WebBrowser_ModelSearch.d.ts.map +1 -1
  21. package/dist/provider-chrome/common/WebBrowser_TextGeneration.d.ts.map +1 -1
  22. package/dist/provider-chrome/common/WebBrowser_TextLanguageDetection.d.ts.map +1 -1
  23. package/dist/provider-chrome/common/WebBrowser_TextRewriter.d.ts.map +1 -1
  24. package/dist/provider-chrome/common/WebBrowser_TextSummary.d.ts.map +1 -1
  25. package/dist/provider-chrome/common/WebBrowser_TextTranslation.d.ts.map +1 -1
  26. package/dist/provider-chrome/runtime.js +24 -99
  27. package/dist/provider-chrome/runtime.js.map +10 -9
  28. package/dist/provider-gemini/GoogleGeminiProvider.d.ts +1 -1
  29. package/dist/provider-gemini/GoogleGeminiProvider.d.ts.map +1 -1
  30. package/dist/provider-gemini/GoogleGeminiQueuedProvider.d.ts +4 -4
  31. package/dist/provider-gemini/GoogleGeminiQueuedProvider.d.ts.map +1 -1
  32. package/dist/provider-gemini/common/Gemini_CountTokens.d.ts.map +1 -1
  33. package/dist/provider-gemini/common/Gemini_JobRunFns.d.ts.map +1 -1
  34. package/dist/provider-gemini/common/Gemini_ModelSearch.d.ts.map +1 -1
  35. package/dist/provider-gemini/common/Gemini_TextEmbedding.d.ts.map +1 -1
  36. package/dist/provider-gemini/common/Gemini_TextGeneration.d.ts.map +1 -1
  37. package/dist/provider-gemini/common/Gemini_TextRewriter.d.ts.map +1 -1
  38. package/dist/provider-gemini/common/Gemini_TextSummary.d.ts.map +1 -1
  39. package/dist/provider-gemini/index.js +3 -4
  40. package/dist/provider-gemini/index.js.map +3 -3
  41. package/dist/provider-gemini/runtime.js +33 -259
  42. package/dist/provider-gemini/runtime.js.map +13 -13
  43. package/dist/provider-hf-inference/HfInferenceProvider.d.ts +1 -1
  44. package/dist/provider-hf-inference/HfInferenceProvider.d.ts.map +1 -1
  45. package/dist/provider-hf-inference/HfInferenceQueuedProvider.d.ts +4 -4
  46. package/dist/provider-hf-inference/HfInferenceQueuedProvider.d.ts.map +1 -1
  47. package/dist/provider-hf-inference/common/HFI_Client.d.ts.map +1 -1
  48. package/dist/provider-hf-inference/common/HFI_JobRunFns.d.ts.map +1 -1
  49. package/dist/provider-hf-inference/common/HFI_ModelSearch.d.ts.map +1 -1
  50. package/dist/provider-hf-inference/common/HFI_TextEmbedding.d.ts.map +1 -1
  51. package/dist/provider-hf-inference/common/HFI_TextGeneration.d.ts.map +1 -1
  52. package/dist/provider-hf-inference/common/HFI_TextRewriter.d.ts.map +1 -1
  53. package/dist/provider-hf-inference/common/HFI_TextSummary.d.ts.map +1 -1
  54. package/dist/provider-hf-inference/index.js +3 -4
  55. package/dist/provider-hf-inference/index.js.map +3 -3
  56. package/dist/provider-hf-inference/runtime.js +14 -207
  57. package/dist/provider-hf-inference/runtime.js.map +13 -14
  58. package/dist/provider-hf-transformers/HuggingFaceTransformersProvider.d.ts +1 -1
  59. package/dist/provider-hf-transformers/HuggingFaceTransformersProvider.d.ts.map +1 -1
  60. package/dist/provider-hf-transformers/HuggingFaceTransformersQueuedProvider.d.ts +13 -3
  61. package/dist/provider-hf-transformers/HuggingFaceTransformersQueuedProvider.d.ts.map +1 -1
  62. package/dist/provider-hf-transformers/common/HFT_Constants.d.ts +4 -0
  63. package/dist/provider-hf-transformers/common/HFT_Constants.d.ts.map +1 -1
  64. package/dist/provider-hf-transformers/common/HFT_CountTokens.d.ts.map +1 -1
  65. package/dist/provider-hf-transformers/common/HFT_Download.d.ts.map +1 -1
  66. package/dist/provider-hf-transformers/common/HFT_ImageEmbedding.d.ts.map +1 -1
  67. package/dist/provider-hf-transformers/common/HFT_JobRunFns.d.ts +117 -88
  68. package/dist/provider-hf-transformers/common/HFT_JobRunFns.d.ts.map +1 -1
  69. package/dist/provider-hf-transformers/common/HFT_ModelInfo.d.ts.map +1 -1
  70. package/dist/provider-hf-transformers/common/HFT_ModelSchema.d.ts +30 -0
  71. package/dist/provider-hf-transformers/common/HFT_ModelSchema.d.ts.map +1 -1
  72. package/dist/provider-hf-transformers/common/HFT_ModelSearch.d.ts.map +1 -1
  73. package/dist/provider-hf-transformers/common/HFT_OnnxDtypes.d.ts.map +1 -1
  74. package/dist/provider-hf-transformers/common/HFT_Pipeline.d.ts +9 -2
  75. package/dist/provider-hf-transformers/common/HFT_Pipeline.d.ts.map +1 -1
  76. package/dist/provider-hf-transformers/common/HFT_Streaming.d.ts +2 -2
  77. package/dist/provider-hf-transformers/common/HFT_Streaming.d.ts.map +1 -1
  78. package/dist/provider-hf-transformers/common/HFT_TextClassification.d.ts.map +1 -1
  79. package/dist/provider-hf-transformers/common/HFT_TextFillMask.d.ts.map +1 -1
  80. package/dist/provider-hf-transformers/common/HFT_TextGeneration.d.ts.map +1 -1
  81. package/dist/provider-hf-transformers/common/HFT_TextLanguageDetection.d.ts.map +1 -1
  82. package/dist/provider-hf-transformers/common/HFT_TextNamedEntityRecognition.d.ts.map +1 -1
  83. package/dist/provider-hf-transformers/common/HFT_TextQuestionAnswer.d.ts.map +1 -1
  84. package/dist/provider-hf-transformers/common/HFT_TextRewriter.d.ts.map +1 -1
  85. package/dist/provider-hf-transformers/common/HFT_TextSummary.d.ts.map +1 -1
  86. package/dist/provider-hf-transformers/common/HFT_TextTranslation.d.ts.map +1 -1
  87. package/dist/provider-hf-transformers/index.d.ts +0 -1
  88. package/dist/provider-hf-transformers/index.d.ts.map +1 -1
  89. package/dist/provider-hf-transformers/index.js +49 -177
  90. package/dist/provider-hf-transformers/index.js.map +8 -9
  91. package/dist/provider-hf-transformers/registerHuggingFaceTransformersWorker.d.ts.map +1 -1
  92. package/dist/provider-hf-transformers/runtime.d.ts +0 -1
  93. package/dist/provider-hf-transformers/runtime.d.ts.map +1 -1
  94. package/dist/provider-hf-transformers/runtime.js +209 -514
  95. package/dist/provider-hf-transformers/runtime.js.map +29 -31
  96. package/dist/provider-llamacpp/LlamaCppProvider.d.ts +1 -1
  97. package/dist/provider-llamacpp/LlamaCppProvider.d.ts.map +1 -1
  98. package/dist/provider-llamacpp/LlamaCppQueuedProvider.d.ts +1 -1
  99. package/dist/provider-llamacpp/LlamaCppQueuedProvider.d.ts.map +1 -1
  100. package/dist/provider-llamacpp/common/LlamaCpp_CountTokens.d.ts.map +1 -1
  101. package/dist/provider-llamacpp/common/LlamaCpp_JobRunFns.d.ts.map +1 -1
  102. package/dist/provider-llamacpp/common/LlamaCpp_ModelSchema.d.ts +15 -0
  103. package/dist/provider-llamacpp/common/LlamaCpp_ModelSchema.d.ts.map +1 -1
  104. package/dist/provider-llamacpp/common/LlamaCpp_ModelSearch.d.ts.map +1 -1
  105. package/dist/provider-llamacpp/common/LlamaCpp_Runtime.d.ts +10 -0
  106. package/dist/provider-llamacpp/common/LlamaCpp_Runtime.d.ts.map +1 -1
  107. package/dist/provider-llamacpp/common/LlamaCpp_StructuredGeneration.d.ts.map +1 -1
  108. package/dist/provider-llamacpp/common/LlamaCpp_TextEmbedding.d.ts.map +1 -1
  109. package/dist/provider-llamacpp/common/LlamaCpp_TextGeneration.d.ts.map +1 -1
  110. package/dist/provider-llamacpp/common/LlamaCpp_TextRewriter.d.ts.map +1 -1
  111. package/dist/provider-llamacpp/common/LlamaCpp_TextSummary.d.ts.map +1 -1
  112. package/dist/provider-llamacpp/index.js +6 -2
  113. package/dist/provider-llamacpp/index.js.map +4 -4
  114. package/dist/provider-llamacpp/runtime.js +83 -231
  115. package/dist/provider-llamacpp/runtime.js.map +15 -16
  116. package/dist/provider-ollama/OllamaProvider.d.ts +1 -1
  117. package/dist/provider-ollama/OllamaProvider.d.ts.map +1 -1
  118. package/dist/provider-ollama/OllamaQueuedProvider.d.ts +4 -4
  119. package/dist/provider-ollama/OllamaQueuedProvider.d.ts.map +1 -1
  120. package/dist/provider-ollama/common/Ollama_JobRunFns.browser.d.ts +14 -72
  121. package/dist/provider-ollama/common/Ollama_JobRunFns.browser.d.ts.map +1 -1
  122. package/dist/provider-ollama/common/Ollama_JobRunFns.d.ts +14 -72
  123. package/dist/provider-ollama/common/Ollama_JobRunFns.d.ts.map +1 -1
  124. package/dist/provider-ollama/common/Ollama_ModelSearch.d.ts.map +1 -1
  125. package/dist/provider-ollama/common/Ollama_TextGeneration.d.ts.map +1 -1
  126. package/dist/provider-ollama/common/Ollama_TextRewriter.d.ts.map +1 -1
  127. package/dist/provider-ollama/common/Ollama_TextSummary.d.ts.map +1 -1
  128. package/dist/provider-ollama/index.browser.js +3 -4
  129. package/dist/provider-ollama/index.browser.js.map +3 -3
  130. package/dist/provider-ollama/index.js +3 -4
  131. package/dist/provider-ollama/index.js.map +3 -3
  132. package/dist/provider-ollama/runtime.browser.js +28 -181
  133. package/dist/provider-ollama/runtime.browser.js.map +11 -11
  134. package/dist/provider-ollama/runtime.js +28 -176
  135. package/dist/provider-ollama/runtime.js.map +11 -11
  136. package/dist/provider-openai/OpenAiProvider.d.ts +1 -1
  137. package/dist/provider-openai/OpenAiProvider.d.ts.map +1 -1
  138. package/dist/provider-openai/OpenAiQueuedProvider.d.ts +4 -4
  139. package/dist/provider-openai/OpenAiQueuedProvider.d.ts.map +1 -1
  140. package/dist/provider-openai/common/OpenAI_Client.d.ts.map +1 -1
  141. package/dist/provider-openai/common/OpenAI_CountTokens.browser.d.ts.map +1 -1
  142. package/dist/provider-openai/common/OpenAI_CountTokens.d.ts.map +1 -1
  143. package/dist/provider-openai/common/OpenAI_JobRunFns.browser.d.ts.map +1 -1
  144. package/dist/provider-openai/common/OpenAI_JobRunFns.d.ts.map +1 -1
  145. package/dist/provider-openai/common/OpenAI_ModelSearch.d.ts.map +1 -1
  146. package/dist/provider-openai/common/OpenAI_TextEmbedding.d.ts.map +1 -1
  147. package/dist/provider-openai/common/OpenAI_TextGeneration.d.ts.map +1 -1
  148. package/dist/provider-openai/common/OpenAI_TextRewriter.d.ts.map +1 -1
  149. package/dist/provider-openai/common/OpenAI_TextSummary.d.ts.map +1 -1
  150. package/dist/provider-openai/index.browser.js +3 -4
  151. package/dist/provider-openai/index.browser.js.map +3 -3
  152. package/dist/provider-openai/index.js +3 -4
  153. package/dist/provider-openai/index.js.map +3 -3
  154. package/dist/provider-openai/runtime.browser.js +42 -225
  155. package/dist/provider-openai/runtime.browser.js.map +14 -14
  156. package/dist/provider-openai/runtime.js +42 -225
  157. package/dist/provider-openai/runtime.js.map +14 -14
  158. package/dist/provider-tf-mediapipe/TensorFlowMediaPipeQueuedProvider.d.ts +3 -3
  159. package/dist/provider-tf-mediapipe/TensorFlowMediaPipeQueuedProvider.d.ts.map +1 -1
  160. package/dist/provider-tf-mediapipe/common/TFMP_ImageEmbedding.d.ts.map +1 -1
  161. package/dist/provider-tf-mediapipe/common/TFMP_JobRunFns.d.ts +18 -11
  162. package/dist/provider-tf-mediapipe/common/TFMP_JobRunFns.d.ts.map +1 -1
  163. package/dist/provider-tf-mediapipe/common/TFMP_ModelSearch.d.ts.map +1 -1
  164. package/dist/provider-tf-mediapipe/common/TFMP_Unload.d.ts.map +1 -1
  165. package/dist/provider-tf-mediapipe/index.js +3 -3
  166. package/dist/provider-tf-mediapipe/index.js.map +3 -3
  167. package/dist/provider-tf-mediapipe/runtime.js +37 -7
  168. package/dist/provider-tf-mediapipe/runtime.js.map +8 -7
  169. package/package.json +31 -19
  170. package/dist/provider-anthropic/common/Anthropic_ToolCalling.d.ts +0 -10
  171. package/dist/provider-anthropic/common/Anthropic_ToolCalling.d.ts.map +0 -1
  172. package/dist/provider-gemini/common/Gemini_ToolCalling.d.ts +0 -10
  173. package/dist/provider-gemini/common/Gemini_ToolCalling.d.ts.map +0 -1
  174. package/dist/provider-hf-inference/common/HFI_ToolCalling.d.ts +0 -10
  175. package/dist/provider-hf-inference/common/HFI_ToolCalling.d.ts.map +0 -1
  176. package/dist/provider-hf-transformers/common/HFT_ToolCalling.d.ts +0 -10
  177. package/dist/provider-hf-transformers/common/HFT_ToolCalling.d.ts.map +0 -1
  178. package/dist/provider-hf-transformers/common/HFT_ToolMarkup.d.ts +0 -40
  179. package/dist/provider-hf-transformers/common/HFT_ToolMarkup.d.ts.map +0 -1
  180. package/dist/provider-llamacpp/common/LlamaCpp_ToolCalling.d.ts +0 -10
  181. package/dist/provider-llamacpp/common/LlamaCpp_ToolCalling.d.ts.map +0 -1
  182. package/dist/provider-ollama/common/Ollama_ToolCalling.d.ts +0 -16
  183. package/dist/provider-ollama/common/Ollama_ToolCalling.d.ts.map +0 -1
  184. package/dist/provider-openai/common/OpenAI_ToolCalling.d.ts +0 -10
  185. package/dist/provider-openai/common/OpenAI_ToolCalling.d.ts.map +0 -1
@@ -40,7 +40,11 @@ async function getClient(model) {
40
40
  if (!apiKey) {
41
41
  throw new Error("Missing Hugging Face API key: set provider_config.credential_key or the HF_TOKEN environment variable.");
42
42
  }
43
- return new sdk.InferenceClient(apiKey);
43
+ try {
44
+ return new sdk.InferenceClient(apiKey);
45
+ } catch (err) {
46
+ throw new Error(`Failed to create HuggingFace Inference client: ${err instanceof Error ? err.message : "unknown error"}`);
47
+ }
44
48
  }
45
49
  function getModelName(model) {
46
50
  const name = model?.provider_config?.model_name;
@@ -143,7 +147,7 @@ var HF_INFERENCE = "HF_INFERENCE";
143
147
 
144
148
  // src/provider-hf-inference/common/HFI_ModelSearch.ts
145
149
  var HFI_ModelSearch = async (input, _model, _onProgress, signal) => {
146
- const entries = await searchHfModels(input.query, undefined, undefined, signal);
150
+ const entries = await searchHfModels(input.query?.trim() ?? "", undefined, undefined, signal);
147
151
  const results = entries.map((entry) => mapHfModelResult(entry, HF_INFERENCE));
148
152
  return { results };
149
153
  };
@@ -194,16 +198,6 @@ var HFI_TextEmbedding = async (input, model, update_progress, signal) => {
194
198
  // src/provider-hf-inference/common/HFI_TextGeneration.ts
195
199
  import { getLogger as getLogger2 } from "@workglow/util/worker";
196
200
  var HFI_TextGeneration = async (input, model, update_progress, signal) => {
197
- if (Array.isArray(input.prompt)) {
198
- getLogger2().warn("HFI_TextGeneration: array input received; processing sequentially (no native batch support)");
199
- const prompts = input.prompt;
200
- const results = [];
201
- for (const item of prompts) {
202
- const r = await HFI_TextGeneration({ ...input, prompt: item }, model, update_progress, signal);
203
- results.push(r.text);
204
- }
205
- return { text: results };
206
- }
207
201
  const logger = getLogger2();
208
202
  const timerLabel = `hfi:TextGeneration:${model?.provider_config?.model_name}`;
209
203
  logger.time(timerLabel, { model: model?.provider_config?.model_name });
@@ -247,18 +241,7 @@ var HFI_TextGeneration_Stream = async function* (input, model, signal) {
247
241
  };
248
242
 
249
243
  // src/provider-hf-inference/common/HFI_TextRewriter.ts
250
- import { getLogger as getLogger3 } from "@workglow/util/worker";
251
244
  var HFI_TextRewriter = async (input, model, update_progress, signal) => {
252
- if (Array.isArray(input.text)) {
253
- getLogger3().warn("HFI_TextRewriter: array input received; processing sequentially (no native batch support)");
254
- const texts = input.text;
255
- const results = [];
256
- for (const item of texts) {
257
- const r = await HFI_TextRewriter({ ...input, text: item }, model, update_progress, signal);
258
- results.push(r.text);
259
- }
260
- return { text: results };
261
- }
262
245
  update_progress(0, "Starting HF Inference text rewriting");
263
246
  const client = await getClient(model);
264
247
  const modelName = getModelName(model);
@@ -296,18 +279,7 @@ var HFI_TextRewriter_Stream = async function* (input, model, signal) {
296
279
  };
297
280
 
298
281
  // src/provider-hf-inference/common/HFI_TextSummary.ts
299
- import { getLogger as getLogger4 } from "@workglow/util/worker";
300
282
  var HFI_TextSummary = async (input, model, update_progress, signal) => {
301
- if (Array.isArray(input.text)) {
302
- getLogger4().warn("HFI_TextSummary: array input received; processing sequentially (no native batch support)");
303
- const texts = input.text;
304
- const results = [];
305
- for (const item of texts) {
306
- const r = await HFI_TextSummary({ ...input, text: item }, model, update_progress, signal);
307
- results.push(r.text);
308
- }
309
- return { text: results };
310
- }
311
283
  update_progress(0, "Starting HF Inference text summarization");
312
284
  const client = await getClient(model);
313
285
  const modelName = getModelName(model);
@@ -344,167 +316,6 @@ var HFI_TextSummary_Stream = async function* (input, model, signal) {
344
316
  yield { type: "finish", data: {} };
345
317
  };
346
318
 
347
- // src/provider-hf-inference/common/HFI_ToolCalling.ts
348
- import { buildToolDescription, filterValidToolCalls, toOpenAIMessages } from "@workglow/ai/worker";
349
- import { getLogger as getLogger5, parsePartialJson } from "@workglow/util/worker";
350
- function mapHFIToolChoice(toolChoice) {
351
- if (!toolChoice || toolChoice === "auto")
352
- return "auto";
353
- if (toolChoice === "none")
354
- return "none";
355
- if (toolChoice === "required")
356
- return "required";
357
- return "auto";
358
- }
359
- var HFI_ToolCalling = async (input, model, update_progress, signal) => {
360
- if (Array.isArray(input.prompt)) {
361
- getLogger5().warn("HFI_ToolCalling: array input received; processing sequentially (no native batch support)");
362
- const prompts = input.prompt;
363
- const texts = [];
364
- const toolCallsList = [];
365
- for (const item of prompts) {
366
- const r = await HFI_ToolCalling({ ...input, prompt: item }, model, update_progress, signal);
367
- texts.push(r.text);
368
- toolCallsList.push(r.toolCalls);
369
- }
370
- return { text: texts, toolCalls: toolCallsList };
371
- }
372
- update_progress(0, "Starting HF Inference tool calling");
373
- const client = await getClient(model);
374
- const modelName = getModelName(model);
375
- const provider = getProvider(model);
376
- const tools = input.tools.map((t) => ({
377
- type: "function",
378
- function: {
379
- name: t.name,
380
- description: buildToolDescription(t),
381
- parameters: t.inputSchema
382
- }
383
- }));
384
- const messages = toOpenAIMessages(input);
385
- const toolChoice = mapHFIToolChoice(input.toolChoice);
386
- const params = {
387
- model: modelName,
388
- messages,
389
- max_tokens: input.maxTokens,
390
- temperature: input.temperature,
391
- provider
392
- };
393
- if (toolChoice !== "none") {
394
- params.tools = tools;
395
- params.tool_choice = toolChoice;
396
- }
397
- const response = await client.chatCompletion(params, { signal });
398
- const text = response.choices[0]?.message?.content ?? "";
399
- const toolCalls = [];
400
- let callIndex = 0;
401
- (response.choices[0]?.message?.tool_calls ?? []).forEach((tc) => {
402
- let parsedInput = {};
403
- const rawArgs = tc.function?.arguments;
404
- if (typeof rawArgs === "string") {
405
- try {
406
- parsedInput = JSON.parse(rawArgs);
407
- } catch {
408
- const partial = parsePartialJson(rawArgs);
409
- parsedInput = partial ?? {};
410
- }
411
- } else if (rawArgs != null) {
412
- parsedInput = rawArgs;
413
- }
414
- const id = tc.id ?? `call_${callIndex}`;
415
- callIndex++;
416
- toolCalls.push({ id, name: tc.function.name, input: parsedInput });
417
- });
418
- update_progress(100, "Completed HF Inference tool calling");
419
- return { text, toolCalls: filterValidToolCalls(toolCalls, input.tools) };
420
- };
421
- var HFI_ToolCalling_Stream = async function* (input, model, signal) {
422
- const client = await getClient(model);
423
- const modelName = getModelName(model);
424
- const provider = getProvider(model);
425
- const tools = input.tools.map((t) => ({
426
- type: "function",
427
- function: {
428
- name: t.name,
429
- description: buildToolDescription(t),
430
- parameters: t.inputSchema
431
- }
432
- }));
433
- const messages = toOpenAIMessages(input);
434
- const toolChoice = mapHFIToolChoice(input.toolChoice);
435
- const params = {
436
- model: modelName,
437
- messages,
438
- max_tokens: input.maxTokens,
439
- temperature: input.temperature,
440
- provider
441
- };
442
- if (toolChoice !== "none") {
443
- params.tools = tools;
444
- params.tool_choice = toolChoice;
445
- }
446
- const stream = client.chatCompletionStream(params, { signal });
447
- let accumulatedText = "";
448
- const toolCallAccumulator = new Map;
449
- for await (const chunk of stream) {
450
- const choice = chunk.choices[0];
451
- if (!choice)
452
- continue;
453
- const contentDelta = choice.delta?.content ?? "";
454
- if (contentDelta) {
455
- accumulatedText += contentDelta;
456
- yield { type: "text-delta", port: "text", textDelta: contentDelta };
457
- }
458
- const tcDeltas = choice.delta?.tool_calls;
459
- if (Array.isArray(tcDeltas)) {
460
- for (const tcDelta of tcDeltas) {
461
- const idx = tcDelta.index;
462
- if (!toolCallAccumulator.has(idx)) {
463
- toolCallAccumulator.set(idx, {
464
- id: tcDelta.id ?? "",
465
- name: tcDelta.function?.name ?? "",
466
- arguments: ""
467
- });
468
- }
469
- const acc = toolCallAccumulator.get(idx);
470
- if (tcDelta.id)
471
- acc.id = tcDelta.id;
472
- if (tcDelta.function?.name)
473
- acc.name = tcDelta.function.name;
474
- if (tcDelta.function?.arguments)
475
- acc.arguments += tcDelta.function.arguments;
476
- }
477
- const snapshot = [];
478
- for (const [, tc] of toolCallAccumulator) {
479
- let parsedInput;
480
- try {
481
- parsedInput = JSON.parse(tc.arguments);
482
- } catch {
483
- const partial = parsePartialJson(tc.arguments);
484
- parsedInput = partial ?? {};
485
- }
486
- snapshot.push({ id: tc.id, name: tc.name, input: parsedInput });
487
- }
488
- yield { type: "object-delta", port: "toolCalls", objectDelta: snapshot };
489
- }
490
- }
491
- const toolCalls = [];
492
- for (const [, tc] of toolCallAccumulator) {
493
- let finalInput;
494
- try {
495
- finalInput = JSON.parse(tc.arguments);
496
- } catch {
497
- finalInput = parsePartialJson(tc.arguments) ?? {};
498
- }
499
- toolCalls.push({ id: tc.id, name: tc.name, input: finalInput });
500
- }
501
- const validToolCalls = filterValidToolCalls(toolCalls, input.tools);
502
- yield {
503
- type: "finish",
504
- data: { text: accumulatedText, toolCalls: validToolCalls }
505
- };
506
- };
507
-
508
319
  // src/provider-hf-inference/common/HFI_JobRunFns.ts
509
320
  var HFI_TASKS = {
510
321
  ModelInfoTask: HFI_ModelInfo,
@@ -512,21 +323,19 @@ var HFI_TASKS = {
512
323
  TextEmbeddingTask: HFI_TextEmbedding,
513
324
  TextRewriterTask: HFI_TextRewriter,
514
325
  TextSummaryTask: HFI_TextSummary,
515
- ToolCallingTask: HFI_ToolCalling,
516
326
  ModelSearchTask: HFI_ModelSearch
517
327
  };
518
328
  var HFI_STREAM_TASKS = {
519
329
  TextGenerationTask: HFI_TextGeneration_Stream,
520
330
  TextRewriterTask: HFI_TextRewriter_Stream,
521
- TextSummaryTask: HFI_TextSummary_Stream,
522
- ToolCallingTask: HFI_ToolCalling_Stream
331
+ TextSummaryTask: HFI_TextSummary_Stream
523
332
  };
524
333
 
525
334
  // src/provider-hf-inference/HfInferenceQueuedProvider.ts
526
335
  import {
527
- QueuedAiProvider
336
+ AiProvider
528
337
  } from "@workglow/ai";
529
- class HfInferenceQueuedProvider extends QueuedAiProvider {
338
+ class HfInferenceQueuedProvider extends AiProvider {
530
339
  name = HF_INFERENCE;
531
340
  displayName = "Hugging Face Inference";
532
341
  isLocal = false;
@@ -537,7 +346,6 @@ class HfInferenceQueuedProvider extends QueuedAiProvider {
537
346
  "TextEmbeddingTask",
538
347
  "TextRewriterTask",
539
348
  "TextSummaryTask",
540
- "ToolCallingTask",
541
349
  "ModelSearchTask"
542
350
  ];
543
351
  constructor(tasks, streamTasks, reactiveTasks) {
@@ -550,13 +358,13 @@ async function registerHfInferenceInline(options) {
550
358
  await new HfInferenceQueuedProvider(HFI_TASKS, HFI_STREAM_TASKS).register(options ?? {});
551
359
  }
552
360
  // src/provider-hf-inference/registerHfInferenceWorker.ts
553
- import { getLogger as getLogger6, globalServiceRegistry, WORKER_SERVER } from "@workglow/util/worker";
361
+ import { getLogger as getLogger3, globalServiceRegistry, WORKER_SERVER } from "@workglow/util/worker";
554
362
 
555
363
  // src/provider-hf-inference/HfInferenceProvider.ts
556
364
  import {
557
- AiProvider
365
+ AiProvider as AiProvider2
558
366
  } from "@workglow/ai/worker";
559
- class HfInferenceProvider extends AiProvider {
367
+ class HfInferenceProvider extends AiProvider2 {
560
368
  name = HF_INFERENCE;
561
369
  displayName = "Hugging Face Inference";
562
370
  isLocal = false;
@@ -567,7 +375,6 @@ class HfInferenceProvider extends AiProvider {
567
375
  "TextEmbeddingTask",
568
376
  "TextRewriterTask",
569
377
  "TextSummaryTask",
570
- "ToolCallingTask",
571
378
  "ModelSearchTask"
572
379
  ];
573
380
  constructor(tasks, streamTasks, reactiveTasks) {
@@ -580,7 +387,7 @@ async function registerHfInferenceWorker() {
580
387
  const workerServer = globalServiceRegistry.get(WORKER_SERVER);
581
388
  new HfInferenceProvider(HFI_TASKS, HFI_STREAM_TASKS).registerOnWorkerServer(workerServer);
582
389
  workerServer.sendReady();
583
- getLogger6().info("Hugging Face Inference worker job run functions registered");
390
+ getLogger3().info("Hugging Face Inference worker job run functions registered");
584
391
  }
585
392
  export {
586
393
  registerHfInferenceWorker,
@@ -591,4 +398,4 @@ export {
591
398
  getClient
592
399
  };
593
400
 
594
- //# debugId=D4B1B612245BC13F64756E2164756E21
401
+ //# debugId=0F9D615ABDB7DCE964756E2164756E21
@@ -1,25 +1,24 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/provider-hf-inference/common/HFI_Client.ts", "../src/common/PipelineTaskMapping.ts", "../src/common/HfModelSearch.ts", "../src/provider-hf-inference/common/HFI_Constants.ts", "../src/provider-hf-inference/common/HFI_ModelSearch.ts", "../src/provider-hf-inference/common/HFI_ModelInfo.ts", "../src/provider-hf-inference/common/HFI_TextEmbedding.ts", "../src/provider-hf-inference/common/HFI_TextGeneration.ts", "../src/provider-hf-inference/common/HFI_TextRewriter.ts", "../src/provider-hf-inference/common/HFI_TextSummary.ts", "../src/provider-hf-inference/common/HFI_ToolCalling.ts", "../src/provider-hf-inference/common/HFI_JobRunFns.ts", "../src/provider-hf-inference/HfInferenceQueuedProvider.ts", "../src/provider-hf-inference/registerHfInferenceInline.ts", "../src/provider-hf-inference/registerHfInferenceWorker.ts", "../src/provider-hf-inference/HfInferenceProvider.ts"],
3
+ "sources": ["../src/provider-hf-inference/common/HFI_Client.ts", "../src/common/PipelineTaskMapping.ts", "../src/common/HfModelSearch.ts", "../src/provider-hf-inference/common/HFI_Constants.ts", "../src/provider-hf-inference/common/HFI_ModelSearch.ts", "../src/provider-hf-inference/common/HFI_ModelInfo.ts", "../src/provider-hf-inference/common/HFI_TextEmbedding.ts", "../src/provider-hf-inference/common/HFI_TextGeneration.ts", "../src/provider-hf-inference/common/HFI_TextRewriter.ts", "../src/provider-hf-inference/common/HFI_TextSummary.ts", "../src/provider-hf-inference/common/HFI_JobRunFns.ts", "../src/provider-hf-inference/HfInferenceQueuedProvider.ts", "../src/provider-hf-inference/registerHfInferenceInline.ts", "../src/provider-hf-inference/registerHfInferenceWorker.ts", "../src/provider-hf-inference/HfInferenceProvider.ts"],
4
4
  "sourcesContent": [
5
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { InferenceProviderOrPolicy } from \"@huggingface/inference\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nlet _sdk: typeof import(\"@huggingface/inference\") | undefined;\n\nexport async function loadHfInferenceSDK() {\n if (!_sdk) {\n try {\n _sdk = await import(\"@huggingface/inference\");\n } catch {\n throw new Error(\n \"@huggingface/inference is required for Hugging Face Inference tasks. Install it with: bun add @huggingface/inference\"\n );\n }\n }\n return _sdk;\n}\n\ninterface ResolvedProviderConfig {\n readonly credential_key?: string;\n readonly api_key?: string;\n readonly model_name?: string;\n readonly provider?: string;\n}\n\nexport async function getClient(model: HfInferenceModelConfig | undefined) {\n const sdk = await loadHfInferenceSDK();\n const config = model?.provider_config as ResolvedProviderConfig | undefined;\n const apiKey =\n config?.credential_key ||\n config?.api_key ||\n (typeof process !== \"undefined\" ? process.env?.HF_TOKEN : undefined);\n if (!apiKey) {\n throw new Error(\n \"Missing Hugging Face API key: set provider_config.credential_key or the HF_TOKEN environment variable.\"\n );\n }\n return new sdk.InferenceClient(apiKey);\n}\n\nexport function getModelName(model: HfInferenceModelConfig | undefined): string {\n const name = model?.provider_config?.model_name;\n if (!name) {\n throw new Error(\"Missing model name in provider_config.model_name.\");\n }\n return name;\n}\n\nexport function getProvider(\n model: HfInferenceModelConfig | undefined\n): InferenceProviderOrPolicy | undefined {\n return model?.provider_config?.provider as InferenceProviderOrPolicy | undefined;\n}\n",
5
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { InferenceProviderOrPolicy } from \"@huggingface/inference\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nlet _sdk: typeof import(\"@huggingface/inference\") | undefined;\n\nexport async function loadHfInferenceSDK() {\n if (!_sdk) {\n try {\n _sdk = await import(\"@huggingface/inference\");\n } catch {\n throw new Error(\n \"@huggingface/inference is required for Hugging Face Inference tasks. Install it with: bun add @huggingface/inference\"\n );\n }\n }\n return _sdk;\n}\n\ninterface ResolvedProviderConfig {\n readonly credential_key?: string;\n readonly api_key?: string;\n readonly model_name?: string;\n readonly provider?: string;\n}\n\nexport async function getClient(model: HfInferenceModelConfig | undefined) {\n const sdk = await loadHfInferenceSDK();\n const config = model?.provider_config as ResolvedProviderConfig | undefined;\n const apiKey =\n config?.credential_key ||\n config?.api_key ||\n (typeof process !== \"undefined\" ? process.env?.HF_TOKEN : undefined);\n if (!apiKey) {\n throw new Error(\n \"Missing Hugging Face API key: set provider_config.credential_key or the HF_TOKEN environment variable.\"\n );\n }\n try {\n return new sdk.InferenceClient(apiKey);\n } catch (err) {\n throw new Error(\n `Failed to create HuggingFace Inference client: ${err instanceof Error ? err.message : \"unknown error\"}`\n );\n }\n}\n\nexport function getModelName(model: HfInferenceModelConfig | undefined): string {\n const name = model?.provider_config?.model_name;\n if (!name) {\n throw new Error(\"Missing model name in provider_config.model_name.\");\n }\n return name;\n}\n\nexport function getProvider(\n model: HfInferenceModelConfig | undefined\n): InferenceProviderOrPolicy | undefined {\n return model?.provider_config?.provider as InferenceProviderOrPolicy | undefined;\n}\n",
6
6
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * Mapping from app task types to HuggingFace pipeline names.\n * Each task type maps to one or more pipelines (first is primary).\n */\nconst TASK_TO_PIPELINES: Record<string, string[]> = {\n TextEmbeddingTask: [\"feature-extraction\"],\n TextGenerationTask: [\"text-generation\"],\n TextSummaryTask: [\"sentence-similarity\", \"summarization\"],\n TextTranslationTask: [\"translation\"],\n TextClassificationTask: [\"text-classification\", \"zero-shot-classification\"],\n TextQuestionAnswerTask: [\"question-answering\"],\n TextFillMaskTask: [\"fill-mask\"],\n TextLanguageDetectionTask: [\"text-classification\"],\n TextNamedEntityRecognitionTask: [\"token-classification\"],\n TokenClassificationTask: [\"token-classification\"],\n ImageClassificationTask: [\"image-classification\", \"zero-shot-image-classification\"],\n ImageEmbeddingTask: [\"image-feature-extraction\"],\n ImageSegmentationTask: [\"image-segmentation\"],\n ImageToImageTask: [\"image-to-image\"],\n ImageToTextTask: [\"image-to-text\"],\n ObjectDetectionTask: [\"object-detection\", \"zero-shot-object-detection\"],\n DepthEstimationTask: [\"depth-estimation\"],\n AudioClassificationTask: [\"audio-classification\"],\n SpeechRecognitionTask: [\"automatic-speech-recognition\"],\n};\n\n/** Convert an app task type to its primary HuggingFace pipeline name. */\nexport function taskTypeToPipeline(taskType: string): string | undefined {\n return TASK_TO_PIPELINES[taskType]?.[0];\n}\n\n/** Convert an app task type to all matching HuggingFace pipeline names. */\nexport function taskTypeToPipelines(taskType: string): string[] {\n return TASK_TO_PIPELINES[taskType] ?? [];\n}\n\n/** Reverse lookup: given a HuggingFace pipeline name, return all matching app task types. */\nexport function pipelineToTaskTypes(pipeline: string): string[] {\n return Object.entries(TASK_TO_PIPELINES)\n .filter(([, pipelines]) => pipelines.includes(pipeline))\n .map(([task]) => task);\n}\n",
7
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ModelSearchResultItem } from \"@workglow/ai\";\nimport { pipelineToTaskTypes } from \"./PipelineTaskMapping\";\n\nexport interface HfModelEntry {\n id: string;\n modelId: string;\n pipeline_tag?: string;\n library_name?: string;\n likes: number;\n downloads: number;\n tags?: string[];\n siblings?: Array<{ rfilename: string }>;\n}\n\nconst HF_API_BASE = \"https://huggingface.co/api\";\n\nexport function formatDownloads(n: number): string {\n if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`;\n if (n >= 1_000) return `${(n / 1_000).toFixed(1)}k`;\n return String(n);\n}\n\n/**\n * Map an HF model entry to a provider-specific config object.\n */\nexport function mapHfProviderConfig(\n entry: HfModelEntry,\n provider: string\n): Record<string, unknown> {\n switch (provider) {\n case \"HF_TRANSFORMERS_ONNX\":\n return {\n model_path: entry.id,\n ...(entry.pipeline_tag ? { pipeline: entry.pipeline_tag } : {}),\n };\n case \"LOCAL_LLAMACPP\":\n return { model_path: entry.id };\n default:\n return { model_name: entry.id };\n }\n}\n\n/**\n * Map an HF model entry to a ModelSearchResultItem.\n */\nexport function mapHfModelResult(entry: HfModelEntry, provider: string): ModelSearchResultItem {\n const badges = [entry.pipeline_tag, entry.library_name].filter(Boolean).join(\" | \");\n return {\n id: entry.id,\n label: `${entry.id}${badges ? ` ${badges}` : \"\"}`,\n description: `${formatDownloads(entry.downloads)} downloads`,\n record: {\n model_id: entry.id,\n provider,\n title: entry.id.split(\"/\").pop() ?? entry.id,\n description: [entry.pipeline_tag, `${formatDownloads(entry.downloads)} downloads`]\n .filter(Boolean)\n .join(\" \\u2014 \"),\n tasks: entry.pipeline_tag ? pipelineToTaskTypes(entry.pipeline_tag) : [],\n provider_config: mapHfProviderConfig(entry, provider),\n metadata: {},\n },\n raw: entry,\n };\n}\n\n/**\n * Search HuggingFace models API. Returns all results (limit=500, no pagination).\n */\nexport async function searchHfModels(\n query: string,\n extraParams?: Record<string, string>,\n expandFields?: string[],\n signal?: AbortSignal\n): Promise<HfModelEntry[]> {\n const params = new URLSearchParams({\n search: query,\n limit: \"500\",\n sort: \"downloads\",\n direction: \"-1\",\n ...extraParams,\n });\n params.append(\"expand[]\", \"pipeline_tag\");\n if (expandFields) {\n for (const field of expandFields) {\n params.append(\"expand[]\", field);\n }\n }\n const res = await fetch(`${HF_API_BASE}/models?${params}`, { signal });\n if (!res.ok) throw new Error(`HuggingFace API returned ${res.status}`);\n return res.json();\n}\n",
7
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ModelSearchResultItem } from \"@workglow/ai\";\nimport { pipelineToTaskTypes } from \"./PipelineTaskMapping\";\n\nexport interface HfModelEntry {\n id: string;\n modelId: string;\n pipeline_tag?: string;\n library_name?: string;\n likes: number;\n downloads: number;\n tags?: string[];\n siblings?: Array<{ rfilename: string }>;\n}\n\nconst HF_API_BASE = \"https://huggingface.co/api\";\n\nexport function formatDownloads(n: number): string {\n if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`;\n if (n >= 1_000) return `${(n / 1_000).toFixed(1)}k`;\n return String(n);\n}\n\n/**\n * Map an HF model entry to a provider-specific config object.\n */\nexport function mapHfProviderConfig(\n entry: HfModelEntry,\n provider: string\n): Record<string, unknown> {\n switch (provider) {\n case \"HF_TRANSFORMERS_ONNX\":\n return {\n model_path: entry.id,\n ...(entry.pipeline_tag ? { pipeline: entry.pipeline_tag } : {}),\n };\n case \"LOCAL_LLAMACPP\":\n return { model_path: entry.id };\n default:\n return { model_name: entry.id };\n }\n}\n\n/**\n * Map an HF model entry to a ModelSearchResultItem.\n */\nexport function mapHfModelResult(entry: HfModelEntry, provider: string): ModelSearchResultItem {\n const badges = [entry.pipeline_tag, entry.library_name].filter(Boolean).join(\" | \");\n return {\n id: entry.id,\n label: `${entry.id}${badges ? ` ${badges}` : \"\"}`,\n description: `${formatDownloads(entry.downloads)} downloads`,\n record: {\n model_id: entry.id,\n provider,\n title: entry.id.split(\"/\").pop() ?? entry.id,\n description: [entry.pipeline_tag, `${formatDownloads(entry.downloads)} downloads`]\n .filter(Boolean)\n .join(\" \\u2014 \"),\n tasks: entry.pipeline_tag ? pipelineToTaskTypes(entry.pipeline_tag) : [],\n provider_config: mapHfProviderConfig(entry, provider),\n metadata: {},\n },\n raw: entry,\n };\n}\n\n/**\n * Search HuggingFace models API. Returns all results (limit=500, no pagination).\n * An empty `query` lists top models by sort order (no text filter).\n */\nexport async function searchHfModels(\n query: string,\n extraParams?: Record<string, string>,\n expandFields?: string[],\n signal?: AbortSignal\n): Promise<HfModelEntry[]> {\n const params = new URLSearchParams({\n search: query,\n limit: \"500\",\n sort: \"downloads\",\n direction: \"-1\",\n ...extraParams,\n });\n params.append(\"expand[]\", \"pipeline_tag\");\n if (expandFields) {\n for (const field of expandFields) {\n params.append(\"expand[]\", field);\n }\n }\n const res = await fetch(`${HF_API_BASE}/models?${params}`, { signal });\n if (!res.ok) throw new Error(`HuggingFace API returned ${res.status}`);\n return res.json();\n}\n",
8
8
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const HF_INFERENCE = \"HF_INFERENCE\";\n",
9
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, ModelSearchTaskInput, ModelSearchTaskOutput } from \"@workglow/ai\";\nimport { searchHfModels, mapHfModelResult } from \"../../common/HfModelSearch\";\nimport { HF_INFERENCE } from \"./HFI_Constants\";\n\nexport const HFI_ModelSearch: AiProviderRunFn<\n ModelSearchTaskInput,\n ModelSearchTaskOutput\n> = async (input, _model, _onProgress, signal) => {\n const entries = await searchHfModels(input.query, undefined, undefined, signal);\n const results = entries.map((entry) => mapHfModelResult(entry, HF_INFERENCE));\n return { results };\n};\n",
9
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, ModelSearchTaskInput, ModelSearchTaskOutput } from \"@workglow/ai\";\nimport { searchHfModels, mapHfModelResult } from \"../../common/HfModelSearch\";\nimport { HF_INFERENCE } from \"./HFI_Constants\";\n\nexport const HFI_ModelSearch: AiProviderRunFn<ModelSearchTaskInput, ModelSearchTaskOutput> = async (\n input,\n _model,\n _onProgress,\n signal\n) => {\n const entries = await searchHfModels(input.query?.trim() ?? \"\", undefined, undefined, signal);\n const results = entries.map((entry) => mapHfModelResult(entry, HF_INFERENCE));\n return { results };\n};\n",
10
10
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, ModelInfoTaskInput, ModelInfoTaskOutput } from \"@workglow/ai\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nexport const HFI_ModelInfo: AiProviderRunFn<\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n HfInferenceModelConfig\n> = async (input) => {\n return {\n model: input.model,\n is_local: false,\n is_remote: true,\n supports_browser: true,\n supports_node: true,\n is_cached: false,\n is_loaded: false,\n file_sizes: null,\n };\n};\n",
11
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, TextEmbeddingTaskInput, TextEmbeddingTaskOutput } from \"@workglow/ai\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName } from \"./HFI_Client\";\n\nexport const HFI_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n const logger = getLogger();\n const timerLabel = `hfi:TextEmbedding:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n\n update_progress(0, \"Starting HF Inference text embedding\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n if (Array.isArray(input.text)) {\n const embeddings = await Promise.all(\n input.text.map((text) =>\n client.featureExtraction(\n {\n model: modelName,\n inputs: text,\n },\n { signal }\n )\n )\n );\n\n update_progress(100, \"Completed HF Inference text embedding\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name, batch: true });\n return {\n vector: embeddings.map((embedding) => new Float32Array(embedding as unknown as number[])),\n };\n }\n\n const embedding = await client.featureExtraction(\n {\n model: modelName,\n inputs: input.text,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text embedding\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n return { vector: new Float32Array(embedding as unknown as number[]) };\n};\n",
12
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, AiProviderStreamFn, TextGenerationTaskInput, TextGenerationTaskOutput } from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_TextGeneration: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n if (Array.isArray(input.prompt)) {\n getLogger().warn(\n \"HFI_TextGeneration: array input received; processing sequentially (no native batch support)\"\n );\n const prompts = input.prompt as string[];\n const results: string[] = [];\n for (const item of prompts) {\n const r = await HFI_TextGeneration(\n { ...input, prompt: item },\n model,\n update_progress,\n signal\n );\n results.push(r.text as string);\n }\n return { text: results };\n }\n\n const logger = getLogger();\n const timerLabel = `hfi:TextGeneration:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n\n update_progress(0, \"Starting HF Inference text generation\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const response = await client.chatCompletion(\n {\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt as string }],\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n top_p: input.topP,\n frequency_penalty: input.frequencyPenalty,\n provider,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text generation\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\nexport const HFI_TextGeneration_Stream: AiProviderStreamFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextGenerationTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const stream = client.chatCompletionStream(\n {\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt as string }],\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n top_p: input.topP,\n frequency_penalty: input.frequencyPenalty,\n provider,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextGenerationTaskOutput };\n};\n",
13
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, AiProviderStreamFn, TextRewriterTaskInput, TextRewriterTaskOutput } from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_TextRewriter: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n if (Array.isArray(input.text)) {\n getLogger().warn(\n \"HFI_TextRewriter: array input received; processing sequentially (no native batch support)\"\n );\n const texts = input.text as string[];\n const results: string[] = [];\n for (const item of texts) {\n const r = await HFI_TextRewriter({ ...input, text: item }, model, update_progress, signal);\n results.push(r.text as string);\n }\n return { text: results };\n }\n\n update_progress(0, \"Starting HF Inference text rewriting\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const response = await client.chatCompletion(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt as string },\n { role: \"user\", content: input.text as string },\n ],\n provider,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text rewriting\");\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\nexport const HFI_TextRewriter_Stream: AiProviderStreamFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextRewriterTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const stream = client.chatCompletionStream(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt as string },\n { role: \"user\", content: input.text as string },\n ],\n provider,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextRewriterTaskOutput };\n};\n",
14
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, AiProviderStreamFn, TextSummaryTaskInput, TextSummaryTaskOutput } from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_TextSummary: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n if (Array.isArray(input.text)) {\n getLogger().warn(\n \"HFI_TextSummary: array input received; processing sequentially (no native batch support)\"\n );\n const texts = input.text as string[];\n const results: string[] = [];\n for (const item of texts) {\n const r = await HFI_TextSummary({ ...input, text: item }, model, update_progress, signal);\n results.push(r.text as string);\n }\n return { text: results };\n }\n\n update_progress(0, \"Starting HF Inference text summarization\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const response = await client.chatCompletion(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text as string },\n ],\n provider,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text summarization\");\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\nexport const HFI_TextSummary_Stream: AiProviderStreamFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextSummaryTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const stream = client.chatCompletionStream(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text as string },\n ],\n provider,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextSummaryTaskOutput };\n};\n",
15
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { buildToolDescription, filterValidToolCalls, toOpenAIMessages } from \"@workglow/ai/worker\";\nimport type {\n AiProviderRunFn,\n AiProviderStreamFn,\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n ToolCalls,\n ToolDefinition,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { getLogger, parsePartialJson } from \"@workglow/util/worker\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nfunction mapHFIToolChoice(\n toolChoice: string | undefined\n): \"auto\" | \"none\" | \"required\" | undefined {\n if (!toolChoice || toolChoice === \"auto\") return \"auto\";\n if (toolChoice === \"none\") return \"none\";\n if (toolChoice === \"required\") return \"required\";\n return \"auto\";\n}\n\nexport const HFI_ToolCalling: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n if (Array.isArray(input.prompt)) {\n getLogger().warn(\n \"HFI_ToolCalling: array input received; processing sequentially (no native batch support)\"\n );\n const prompts = input.prompt as string[];\n const texts: string[] = [];\n const toolCallsList: ToolCalls[] = [];\n for (const item of prompts) {\n const r = await HFI_ToolCalling({ ...input, prompt: item }, model, update_progress, signal);\n texts.push(r.text as string);\n toolCallsList.push(r.toolCalls as ToolCalls);\n }\n return { text: texts, toolCalls: toolCallsList } as unknown as ToolCallingTaskOutput;\n }\n\n update_progress(0, \"Starting HF Inference tool calling\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const tools = input.tools.map((t: ToolDefinition) => ({\n type: \"function\" as const,\n function: {\n name: t.name,\n description: buildToolDescription(t),\n parameters: t.inputSchema as any,\n },\n }));\n\n const messages = toOpenAIMessages(input);\n\n const toolChoice = mapHFIToolChoice(input.toolChoice);\n\n const params: any = {\n model: modelName,\n messages,\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n provider,\n };\n\n if (toolChoice !== \"none\") {\n params.tools = tools;\n params.tool_choice = toolChoice;\n }\n\n const response = await client.chatCompletion(params, { signal });\n\n const text = response.choices[0]?.message?.content ?? \"\";\n const toolCalls: ToolCalls = [];\n let callIndex = 0;\n ((response.choices[0]?.message as any)?.tool_calls ?? []).forEach((tc: any) => {\n let parsedInput: Record<string, unknown> = {};\n const rawArgs = tc.function?.arguments;\n if (typeof rawArgs === \"string\") {\n try {\n parsedInput = JSON.parse(rawArgs);\n } catch {\n const partial = parsePartialJson(rawArgs);\n parsedInput = (partial as Record<string, unknown>) ?? {};\n }\n } else if (rawArgs != null) {\n parsedInput = rawArgs as Record<string, unknown>;\n }\n const id = (tc.id as string) ?? `call_${callIndex}`;\n callIndex++;\n toolCalls.push({ id, name: tc.function.name as string, input: parsedInput });\n });\n\n update_progress(100, \"Completed HF Inference tool calling\");\n return { text, toolCalls: filterValidToolCalls(toolCalls, input.tools) };\n};\n\nexport const HFI_ToolCalling_Stream: AiProviderStreamFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<ToolCallingTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const tools = input.tools.map((t: ToolDefinition) => ({\n type: \"function\" as const,\n function: {\n name: t.name,\n description: buildToolDescription(t),\n parameters: t.inputSchema as any,\n },\n }));\n\n const messages = toOpenAIMessages(input);\n\n const toolChoice = mapHFIToolChoice(input.toolChoice);\n\n const params: any = {\n model: modelName,\n messages,\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n provider,\n };\n\n if (toolChoice !== \"none\") {\n params.tools = tools;\n params.tool_choice = toolChoice;\n }\n\n const stream = client.chatCompletionStream(params, { signal });\n\n let accumulatedText = \"\";\n const toolCallAccumulator = new Map<number, { id: string; name: string; arguments: string }>();\n\n for await (const chunk of stream) {\n const choice = chunk.choices[0];\n if (!choice) continue;\n\n const contentDelta = choice.delta?.content ?? \"\";\n if (contentDelta) {\n accumulatedText += contentDelta;\n yield { type: \"text-delta\", port: \"text\", textDelta: contentDelta };\n }\n\n const tcDeltas = (choice.delta as any)?.tool_calls;\n if (Array.isArray(tcDeltas)) {\n for (const tcDelta of tcDeltas) {\n const idx = tcDelta.index as number;\n if (!toolCallAccumulator.has(idx)) {\n toolCallAccumulator.set(idx, {\n id: tcDelta.id ?? \"\",\n name: tcDelta.function?.name ?? \"\",\n arguments: \"\",\n });\n }\n const acc = toolCallAccumulator.get(idx)!;\n if (tcDelta.id) acc.id = tcDelta.id;\n if (tcDelta.function?.name) acc.name = tcDelta.function.name;\n if (tcDelta.function?.arguments) acc.arguments += tcDelta.function.arguments;\n }\n\n const snapshot: ToolCalls = [];\n for (const [, tc] of toolCallAccumulator) {\n let parsedInput: Record<string, unknown>;\n try {\n parsedInput = JSON.parse(tc.arguments);\n } catch {\n const partial = parsePartialJson(tc.arguments);\n parsedInput = (partial as Record<string, unknown>) ?? {};\n }\n snapshot.push({ id: tc.id, name: tc.name, input: parsedInput });\n }\n yield { type: \"object-delta\", port: \"toolCalls\", objectDelta: snapshot };\n }\n }\n\n const toolCalls: ToolCalls = [];\n for (const [, tc] of toolCallAccumulator) {\n let finalInput: Record<string, unknown>;\n try {\n finalInput = JSON.parse(tc.arguments);\n } catch {\n finalInput = (parsePartialJson(tc.arguments) as Record<string, unknown>) ?? {};\n }\n toolCalls.push({ id: tc.id, name: tc.name, input: finalInput });\n }\n\n const validToolCalls = filterValidToolCalls(toolCalls, input.tools);\n yield {\n type: \"finish\",\n data: { text: accumulatedText, toolCalls: validToolCalls } as ToolCallingTaskOutput,\n };\n};\n",
16
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, AiProviderStreamFn } from \"@workglow/ai\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { HFI_ModelSearch } from \"./HFI_ModelSearch\";\n\nexport { loadHfInferenceSDK, getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nimport { HFI_ModelInfo } from \"./HFI_ModelInfo\";\nimport { HFI_TextEmbedding } from \"./HFI_TextEmbedding\";\nimport { HFI_TextGeneration, HFI_TextGeneration_Stream } from \"./HFI_TextGeneration\";\nimport { HFI_TextRewriter, HFI_TextRewriter_Stream } from \"./HFI_TextRewriter\";\nimport { HFI_TextSummary, HFI_TextSummary_Stream } from \"./HFI_TextSummary\";\nimport { HFI_ToolCalling, HFI_ToolCalling_Stream } from \"./HFI_ToolCalling\";\n\nexport const HFI_TASKS: Record<string, AiProviderRunFn<any, any, HfInferenceModelConfig>> = {\n ModelInfoTask: HFI_ModelInfo,\n TextGenerationTask: HFI_TextGeneration,\n TextEmbeddingTask: HFI_TextEmbedding,\n TextRewriterTask: HFI_TextRewriter,\n TextSummaryTask: HFI_TextSummary,\n ToolCallingTask: HFI_ToolCalling,\n ModelSearchTask: HFI_ModelSearch,\n};\n\nexport const HFI_STREAM_TASKS: Record<\n string,\n AiProviderStreamFn<any, any, HfInferenceModelConfig>\n> = {\n TextGenerationTask: HFI_TextGeneration_Stream,\n TextRewriterTask: HFI_TextRewriter_Stream,\n TextSummaryTask: HFI_TextSummary_Stream,\n ToolCallingTask: HFI_ToolCalling_Stream,\n};\n",
17
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n QueuedAiProvider,\n type AiProviderReactiveRunFn,\n type AiProviderRunFn,\n type AiProviderStreamFn,\n} from \"@workglow/ai\";\nimport { HF_INFERENCE } from \"./common/HFI_Constants\";\nimport type { HfInferenceModelConfig } from \"./common/HFI_ModelSchema\";\n\n/** Main-thread registration (inline or worker-backed); creates the default job queue. */\nexport class HfInferenceQueuedProvider extends QueuedAiProvider<HfInferenceModelConfig> {\n readonly name = HF_INFERENCE;\n readonly displayName = \"Hugging Face Inference\";\n readonly isLocal = false;\n readonly supportsBrowser = true;\n\n readonly taskTypes = [\n \"ModelInfoTask\",\n \"TextGenerationTask\",\n \"TextEmbeddingTask\",\n \"TextRewriterTask\",\n \"TextSummaryTask\",\n \"ToolCallingTask\",\n \"ModelSearchTask\",\n ] as const;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, HfInferenceModelConfig>>,\n streamTasks?: Record<string, AiProviderStreamFn<any, any, HfInferenceModelConfig>>,\n reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, HfInferenceModelConfig>>\n ) {\n super(tasks, streamTasks, reactiveTasks);\n }\n}\n",
11
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n} from \"@workglow/ai\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName } from \"./HFI_Client\";\n\nexport const HFI_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n const logger = getLogger();\n const timerLabel = `hfi:TextEmbedding:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n\n update_progress(0, \"Starting HF Inference text embedding\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n if (Array.isArray(input.text)) {\n const embeddings = await Promise.all(\n input.text.map((text) =>\n client.featureExtraction(\n {\n model: modelName,\n inputs: text,\n },\n { signal }\n )\n )\n );\n\n update_progress(100, \"Completed HF Inference text embedding\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name, batch: true });\n return {\n vector: embeddings.map((embedding) => new Float32Array(embedding as unknown as number[])),\n };\n }\n\n const embedding = await client.featureExtraction(\n {\n model: modelName,\n inputs: input.text,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text embedding\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n return { vector: new Float32Array(embedding as unknown as number[]) };\n};\n",
12
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n AiProviderStreamFn,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_TextGeneration: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n const logger = getLogger();\n const timerLabel = `hfi:TextGeneration:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n\n update_progress(0, \"Starting HF Inference text generation\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const response = await client.chatCompletion(\n {\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n top_p: input.topP,\n frequency_penalty: input.frequencyPenalty,\n provider,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text generation\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\nexport const HFI_TextGeneration_Stream: AiProviderStreamFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextGenerationTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const stream = client.chatCompletionStream(\n {\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n top_p: input.topP,\n frequency_penalty: input.frequencyPenalty,\n provider,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextGenerationTaskOutput };\n};\n",
13
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n AiProviderStreamFn,\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_TextRewriter: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting HF Inference text rewriting\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const response = await client.chatCompletion(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n provider,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text rewriting\");\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\nexport const HFI_TextRewriter_Stream: AiProviderStreamFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextRewriterTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const stream = client.chatCompletionStream(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n provider,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextRewriterTaskOutput };\n};\n",
14
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n AiProviderStreamFn,\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_TextSummary: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting HF Inference text summarization\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const response = await client.chatCompletion(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n provider,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text summarization\");\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\nexport const HFI_TextSummary_Stream: AiProviderStreamFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextSummaryTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const stream = client.chatCompletionStream(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n provider,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextSummaryTaskOutput };\n};\n",
15
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, AiProviderStreamFn } from \"@workglow/ai\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { HFI_ModelSearch } from \"./HFI_ModelSearch\";\n\nexport { loadHfInferenceSDK, getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nimport { HFI_ModelInfo } from \"./HFI_ModelInfo\";\nimport { HFI_TextEmbedding } from \"./HFI_TextEmbedding\";\nimport { HFI_TextGeneration, HFI_TextGeneration_Stream } from \"./HFI_TextGeneration\";\nimport { HFI_TextRewriter, HFI_TextRewriter_Stream } from \"./HFI_TextRewriter\";\nimport { HFI_TextSummary, HFI_TextSummary_Stream } from \"./HFI_TextSummary\";\nexport const HFI_TASKS: Record<string, AiProviderRunFn<any, any, HfInferenceModelConfig>> = {\n ModelInfoTask: HFI_ModelInfo,\n TextGenerationTask: HFI_TextGeneration,\n TextEmbeddingTask: HFI_TextEmbedding,\n TextRewriterTask: HFI_TextRewriter,\n TextSummaryTask: HFI_TextSummary,\n ModelSearchTask: HFI_ModelSearch,\n};\n\nexport const HFI_STREAM_TASKS: Record<\n string,\n AiProviderStreamFn<any, any, HfInferenceModelConfig>\n> = {\n TextGenerationTask: HFI_TextGeneration_Stream,\n TextRewriterTask: HFI_TextRewriter_Stream,\n TextSummaryTask: HFI_TextSummary_Stream,\n};\n",
16
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AiProvider,\n type AiProviderReactiveRunFn,\n type AiProviderRunFn,\n type AiProviderStreamFn,\n} from \"@workglow/ai\";\nimport { HF_INFERENCE } from \"./common/HFI_Constants\";\nimport type { HfInferenceModelConfig } from \"./common/HFI_ModelSchema\";\n\n/** Main-thread registration (inline or worker-backed). No queue uses direct execution. */\nexport class HfInferenceQueuedProvider extends AiProvider<HfInferenceModelConfig> {\n readonly name = HF_INFERENCE;\n readonly displayName = \"Hugging Face Inference\";\n readonly isLocal = false;\n readonly supportsBrowser = true;\n\n readonly taskTypes = [\n \"ModelInfoTask\",\n \"TextGenerationTask\",\n \"TextEmbeddingTask\",\n \"TextRewriterTask\",\n \"TextSummaryTask\",\n \"ModelSearchTask\",\n ] as const;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, HfInferenceModelConfig>>,\n streamTasks?: Record<string, AiProviderStreamFn<any, any, HfInferenceModelConfig>>,\n reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, HfInferenceModelConfig>>\n ) {\n super(tasks, streamTasks, reactiveTasks);\n }\n}\n",
18
17
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRegisterOptions } from \"@workglow/ai\";\nimport { HFI_STREAM_TASKS, HFI_TASKS } from \"./common/HFI_JobRunFns\";\nimport { HfInferenceQueuedProvider } from \"./HfInferenceQueuedProvider\";\n\nexport async function registerHfInferenceInline(\n options?: AiProviderRegisterOptions\n): Promise<void> {\n await new HfInferenceQueuedProvider(HFI_TASKS, HFI_STREAM_TASKS).register(options ?? {});\n}\n",
19
18
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { getLogger, globalServiceRegistry, WORKER_SERVER } from \"@workglow/util/worker\";\nimport { HFI_STREAM_TASKS, HFI_TASKS } from \"./common/HFI_JobRunFns\";\nimport { HfInferenceProvider } from \"./HfInferenceProvider\";\n\nexport async function registerHfInferenceWorker(): Promise<void> {\n const workerServer = globalServiceRegistry.get(WORKER_SERVER);\n new HfInferenceProvider(HFI_TASKS, HFI_STREAM_TASKS).registerOnWorkerServer(workerServer);\n workerServer.sendReady();\n getLogger().info(\"Hugging Face Inference worker job run functions registered\");\n}\n",
20
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AiProvider,\n type AiProviderReactiveRunFn,\n type AiProviderRunFn,\n type AiProviderStreamFn,\n} from \"@workglow/ai/worker\";\nimport { HF_INFERENCE } from \"./common/HFI_Constants\";\nimport type { HfInferenceModelConfig } from \"./common/HFI_ModelSchema\";\n\n/**\n * AI provider for Hugging Face Inference API.\n *\n * Supports text generation, text embedding, text rewriting, and text summarization\n * via the Hugging Face Inference API using the `@huggingface/inference` SDK.\n *\n * Task run functions are injected via the constructor so that the `@huggingface/inference` SDK\n * is only imported where actually needed (inline mode, worker server), not on\n * the main thread in worker mode.\n */\nexport class HfInferenceProvider extends AiProvider<HfInferenceModelConfig> {\n readonly name = HF_INFERENCE;\n readonly displayName = \"Hugging Face Inference\";\n readonly isLocal = false;\n readonly supportsBrowser = true;\n\n readonly taskTypes = [\n \"ModelInfoTask\",\n \"TextGenerationTask\",\n \"TextEmbeddingTask\",\n \"TextRewriterTask\",\n \"TextSummaryTask\",\n \"ToolCallingTask\",\n \"ModelSearchTask\",\n ] as const;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, HfInferenceModelConfig>>,\n streamTasks?: Record<string, AiProviderStreamFn<any, any, HfInferenceModelConfig>>,\n reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, HfInferenceModelConfig>>\n ) {\n super(tasks, streamTasks, reactiveTasks);\n }\n}\n"
19
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AiProvider,\n type AiProviderReactiveRunFn,\n type AiProviderRunFn,\n type AiProviderStreamFn,\n} from \"@workglow/ai/worker\";\nimport { HF_INFERENCE } from \"./common/HFI_Constants\";\nimport type { HfInferenceModelConfig } from \"./common/HFI_ModelSchema\";\n\n/**\n * AI provider for Hugging Face Inference API.\n *\n * Supports text generation, text embedding, text rewriting, and text summarization\n * via the Hugging Face Inference API using the `@huggingface/inference` SDK.\n *\n * Task run functions are injected via the constructor so that the `@huggingface/inference` SDK\n * is only imported where actually needed (inline mode, worker server), not on\n * the main thread in worker mode.\n */\nexport class HfInferenceProvider extends AiProvider<HfInferenceModelConfig> {\n readonly name = HF_INFERENCE;\n readonly displayName = \"Hugging Face Inference\";\n readonly isLocal = false;\n readonly supportsBrowser = true;\n\n readonly taskTypes = [\n \"ModelInfoTask\",\n \"TextGenerationTask\",\n \"TextEmbeddingTask\",\n \"TextRewriterTask\",\n \"TextSummaryTask\",\n \"ModelSearchTask\",\n ] as const;\n\n constructor(\n tasks?: Record<string, AiProviderRunFn<any, any, HfInferenceModelConfig>>,\n streamTasks?: Record<string, AiProviderStreamFn<any, any, HfInferenceModelConfig>>,\n reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, HfInferenceModelConfig>>\n ) {\n super(tasks, streamTasks, reactiveTasks);\n }\n}\n"
21
20
  ],
22
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAI;AAEJ,eAAsB,kBAAkB,GAAG;AAAA,EACzC,IAAI,CAAC,MAAM;AAAA,IACT,IAAI;AAAA,MACF,OAAO,MAAa;AAAA,MACpB,MAAM;AAAA,MACN,MAAM,IAAI,MACR,sHACF;AAAA;AAAA,EAEJ;AAAA,EACA,OAAO;AAAA;AAUT,eAAsB,SAAS,CAAC,OAA2C;AAAA,EACzE,MAAM,MAAM,MAAM,mBAAmB;AAAA,EACrC,MAAM,SAAS,OAAO;AAAA,EACtB,MAAM,SACJ,QAAQ,kBACR,QAAQ,YACP,OAAO,YAAY,cAAc,QAAQ,KAAK,WAAW;AAAA,EAC5D,IAAI,CAAC,QAAQ;AAAA,IACX,MAAM,IAAI,MACR,wGACF;AAAA,EACF;AAAA,EACA,OAAO,IAAI,IAAI,gBAAgB,MAAM;AAAA;AAGhC,SAAS,YAAY,CAAC,OAAmD;AAAA,EAC9E,MAAM,OAAO,OAAO,iBAAiB;AAAA,EACrC,IAAI,CAAC,MAAM;AAAA,IACT,MAAM,IAAI,MAAM,mDAAmD;AAAA,EACrE;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,WAAW,CACzB,OACuC;AAAA,EACvC,OAAO,OAAO,iBAAiB;AAAA;;AC/CjC,IAAM,oBAA8C;AAAA,EAClD,mBAAmB,CAAC,oBAAoB;AAAA,EACxC,oBAAoB,CAAC,iBAAiB;AAAA,EACtC,iBAAiB,CAAC,uBAAuB,eAAe;AAAA,EACxD,qBAAqB,CAAC,aAAa;AAAA,EACnC,wBAAwB,CAAC,uBAAuB,0BAA0B;AAAA,EAC1E,wBAAwB,CAAC,oBAAoB;AAAA,EAC7C,kBAAkB,CAAC,WAAW;AAAA,EAC9B,2BAA2B,CAAC,qBAAqB;AAAA,EACjD,gCAAgC,CAAC,sBAAsB;AAAA,EACvD,yBAAyB,CAAC,sBAAsB;AAAA,EAChD,yBAAyB,CAAC,wBAAwB,gCAAgC;AAAA,EAClF,oBAAoB,CAAC,0BAA0B;AAAA,EAC/C,uBAAuB,CAAC,oBAAoB;AAAA,EAC5C,kBAAkB,CAAC,gBAAgB;AAAA,EACnC,iBAAiB,CAAC,eAAe;AAAA,EACjC,qBAAqB,CAAC,oBAAoB,4BAA4B;AAAA,EACtE,qBAAqB,CAAC,kBAAkB;AAAA,EACxC,yBAAyB,CAAC,sBAAsB;AAAA,EAChD,uBAAuB,CAAC,8BAA8B;AACxD;AAaO,SAAS,mBAAmB,CAAC,UAA4B;AAAA,EAC9D,OAAO,OAAO,QAAQ,iBAAiB,EACpC,OAAO,IAAI,eAAe,UAAU,SAAS,QAAQ,CAAC,EACtD,IAAI,EAAE,UAAU,IAAI;AAAA;;;AC1BzB,IAAM,cAAc;AAEb,SAAS,eAAe,CAAC,GAAmB;AAAA,EACjD,IAAI,KAAK;AAAA,IAAW,OAAO,IAAI,IAAI,KAAW,QAAQ,CAAC;AAAA,EACvD,IAAI,KAAK;AAAA,IAAO,OAAO,IAAI,IAAI,MAAO,QAAQ,CAAC;AAAA,EAC/C,OAAO,OAAO,CAAC;AAAA;AAMV,SAAS,mBAAmB,CACjC,OACA,UACyB;AAAA,EACzB,QAAQ;AAAA,SACD;AAAA,MACH,OAAO;AAAA,QACL,YAAY,MAAM;AAAA,WACd,MAAM,eAAe,EAAE,UAAU,MAAM,aAAa,IAAI,CAAC;AAAA,MAC/D;AAAA,SACG;AAAA,MACH,OAAO,EAAE,YAAY,MAAM,GAAG;AAAA;AAAA,MAE9B,OAAO,EAAE,YAAY,MAAM,GAAG;AAAA;AAAA;AAO7B,SAAS,gBAAgB,CAAC,OAAqB,UAAyC;AAAA,EAC7F,MAAM,SAAS,CAAC,MAAM,cAAc,MAAM,YAAY,EAAE,OAAO,OAAO,EAAE,KAAK,KAAK;AAAA,EAClF,OAAO;AAAA,IACL,IAAI,MAAM;AAAA,IACV,OAAO,GAAG,MAAM,KAAK,SAAS,KAAK,WAAW;AAAA,IAC9C,aAAa,GAAG,gBAAgB,MAAM,SAAS;AAAA,IAC/C,QAAQ;AAAA,MACN,UAAU,MAAM;AAAA,MAChB;AAAA,MACA,OAAO,MAAM,GAAG,MAAM,GAAG,EAAE,IAAI,KAAK,MAAM;AAAA,MAC1C,aAAa,CAAC,MAAM,cAAc,GAAG,gBAAgB,MAAM,SAAS,aAAa,EAC9E,OAAO,OAAO,EACd,KAAK,KAAU;AAAA,MAClB,OAAO,MAAM,eAAe,oBAAoB,MAAM,YAAY,IAAI,CAAC;AAAA,MACvE,iBAAiB,oBAAoB,OAAO,QAAQ;AAAA,MACpD,UAAU,CAAC;AAAA,IACb;AAAA,IACA,KAAK;AAAA,EACP;AAAA;AAMF,eAAsB,cAAc,CAClC,OACA,aACA,cACA,QACyB;AAAA,EACzB,MAAM,SAAS,IAAI,gBAAgB;AAAA,IACjC,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,MAAM;AAAA,IACN,WAAW;AAAA,OACR;AAAA,EACL,CAAC;AAAA,EACD,OAAO,OAAO,YAAY,cAAc;AAAA,EACxC,IAAI,cAAc;AAAA,IAChB,WAAW,SAAS,cAAc;AAAA,MAChC,OAAO,OAAO,YAAY,KAAK;AAAA,IACjC;AAAA,EACF;AAAA,EACA,MAAM,MAAM,MAAM,MAAM,GAAG,sBAAsB,UAAU,EAAE,OAAO,CAAC;AAAA,EACrE,IAAI,CAAC,IAAI;AAAA,IAAI,MAAM,IAAI,MAAM,4BAA4B,IAAI,QAAQ;AAAA,EACrE,OAAO,IAAI,KAAK;AAAA;;;AC1FX,IAAM,eAAe;;;ACIrB,IAAM,kBAGT,OAAO,OAAO,QAAQ,aAAa,WAAW;AAAA,EAChD,MAAM,UAAU,MAAM,eAAe,MAAM,OAAO,WAAW,WAAW,MAAM;AAAA,EAC9E,MAAM,UAAU,QAAQ,IAAI,CAAC,UAAU,iBAAiB,OAAO,YAAY,CAAC;AAAA,EAC5E,OAAO,EAAE,QAAQ;AAAA;;;ACPZ,IAAM,gBAIT,OAAO,UAAU;AAAA,EACnB,OAAO;AAAA,IACL,OAAO,MAAM;AAAA,IACb,UAAU;AAAA,IACV,WAAW;AAAA,IACX,kBAAkB;AAAA,IAClB,eAAe;AAAA,IACf,WAAW;AAAA,IACX,WAAW;AAAA,IACX,YAAY;AAAA,EACd;AAAA;;;AChBF;AAIO,IAAM,oBAIT,OAAO,OAAO,OAAO,iBAAiB,WAAW;AAAA,EACnD,MAAM,SAAS,UAAU;AAAA,EACzB,MAAM,aAAa,qBAAqB,OAAO,iBAAiB;AAAA,EAChE,OAAO,KAAK,YAAY,EAAE,OAAO,OAAO,iBAAiB,WAAW,CAAC;AAAA,EAErE,gBAAgB,GAAG,sCAAsC;AAAA,EACzD,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EAEpC,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG;AAAA,IAC7B,MAAM,aAAa,MAAM,QAAQ,IAC/B,MAAM,KAAK,IAAI,CAAC,SACd,OAAO,kBACL;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,IACV,GACA,EAAE,OAAO,CACX,CACF,CACF;AAAA,IAEA,gBAAgB,KAAK,uCAAuC;AAAA,IAC5D,OAAO,QAAQ,YAAY,EAAE,OAAO,OAAO,iBAAiB,YAAY,OAAO,KAAK,CAAC;AAAA,IACrF,OAAO;AAAA,MACL,QAAQ,WAAW,IAAI,CAAC,eAAc,IAAI,aAAa,UAAgC,CAAC;AAAA,IAC1F;AAAA,EACF;AAAA,EAEA,MAAM,YAAY,MAAM,OAAO,kBAC7B;AAAA,IACE,OAAO;AAAA,IACP,QAAQ,MAAM;AAAA,EAChB,GACA,EAAE,OAAO,CACX;AAAA,EAEA,gBAAgB,KAAK,uCAAuC;AAAA,EAC5D,OAAO,QAAQ,YAAY,EAAE,OAAO,OAAO,iBAAiB,WAAW,CAAC;AAAA,EACxE,OAAO,EAAE,QAAQ,IAAI,aAAa,SAAgC,EAAE;AAAA;;;AC9CtE,sBAAS;AAIF,IAAM,qBAIT,OAAO,OAAO,OAAO,iBAAiB,WAAW;AAAA,EACnD,IAAI,MAAM,QAAQ,MAAM,MAAM,GAAG;AAAA,IAC/B,WAAU,EAAE,KACV,6FACF;AAAA,IACA,MAAM,UAAU,MAAM;AAAA,IACtB,MAAM,UAAoB,CAAC;AAAA,IAC3B,WAAW,QAAQ,SAAS;AAAA,MAC1B,MAAM,IAAI,MAAM,mBACd,KAAK,OAAO,QAAQ,KAAK,GACzB,OACA,iBACA,MACF;AAAA,MACA,QAAQ,KAAK,EAAE,IAAc;AAAA,IAC/B;AAAA,IACA,OAAO,EAAE,MAAM,QAAQ;AAAA,EACzB;AAAA,EAEA,MAAM,SAAS,WAAU;AAAA,EACzB,MAAM,aAAa,sBAAsB,OAAO,iBAAiB;AAAA,EACjE,OAAO,KAAK,YAAY,EAAE,OAAO,OAAO,iBAAiB,WAAW,CAAC;AAAA,EAErE,gBAAgB,GAAG,uCAAuC;AAAA,EAC1D,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EACpC,MAAM,WAAW,YAAY,KAAK;AAAA,EAElC,MAAM,WAAW,MAAM,OAAO,eAC5B;AAAA,IACE,OAAO;AAAA,IACP,UAAU,CAAC,EAAE,MAAM,QAAQ,SAAS,MAAM,OAAiB,CAAC;AAAA,IAC5D,YAAY,MAAM;AAAA,IAClB,aAAa,MAAM;AAAA,IACnB,OAAO,MAAM;AAAA,IACb,mBAAmB,MAAM;AAAA,IACzB;AAAA,EACF,GACA,EAAE,OAAO,CACX;AAAA,EAEA,gBAAgB,KAAK,wCAAwC;AAAA,EAC7D,OAAO,QAAQ,YAAY,EAAE,OAAO,OAAO,iBAAiB,WAAW,CAAC;AAAA,EACxE,OAAO,EAAE,MAAM,SAAS,QAAQ,IAAI,SAAS,WAAW,GAAG;AAAA;AAGtD,IAAM,4BAIT,gBAAgB,CAAC,OAAO,OAAO,QAA8D;AAAA,EAC/F,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EACpC,MAAM,WAAW,YAAY,KAAK;AAAA,EAElC,MAAM,SAAS,OAAO,qBACpB;AAAA,IACE,OAAO;AAAA,IACP,UAAU,CAAC,EAAE,MAAM,QAAQ,SAAS,MAAM,OAAiB,CAAC;AAAA,IAC5D,YAAY,MAAM;AAAA,IAClB,aAAa,MAAM;AAAA,IACnB,OAAO,MAAM;AAAA,IACb,mBAAmB,MAAM;AAAA,IACzB;AAAA,EACF,GACA,EAAE,OAAO,CACX;AAAA,EAEA,iBAAiB,SAAS,QAAQ;AAAA,IAChC,MAAM,QAAQ,MAAM,QAAQ,IAAI,OAAO,WAAW;AAAA,IAClD,IAAI,OAAO;AAAA,MACT,MAAM,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,MAAM;AAAA,IAC7D;AAAA,EACF;AAAA,EACA,MAAM,EAAE,MAAM,UAAU,MAAM,CAAC,EAA8B;AAAA;;;AClF/D,sBAAS;AAIF,IAAM,mBAIT,OAAO,OAAO,OAAO,iBAAiB,WAAW;AAAA,EACnD,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG;AAAA,IAC7B,WAAU,EAAE,KACV,2FACF;AAAA,IACA,MAAM,QAAQ,MAAM;AAAA,IACpB,MAAM,UAAoB,CAAC;AAAA,IAC3B,WAAW,QAAQ,OAAO;AAAA,MACxB,MAAM,IAAI,MAAM,iBAAiB,KAAK,OAAO,MAAM,KAAK,GAAG,OAAO,iBAAiB,MAAM;AAAA,MACzF,QAAQ,KAAK,EAAE,IAAc;AAAA,IAC/B;AAAA,IACA,OAAO,EAAE,MAAM,QAAQ;AAAA,EACzB;AAAA,EAEA,gBAAgB,GAAG,sCAAsC;AAAA,EACzD,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EACpC,MAAM,WAAW,YAAY,KAAK;AAAA,EAElC,MAAM,WAAW,MAAM,OAAO,eAC5B;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,MACR,EAAE,MAAM,UAAU,SAAS,MAAM,OAAiB;AAAA,MAClD,EAAE,MAAM,QAAQ,SAAS,MAAM,KAAe;AAAA,IAChD;AAAA,IACA;AAAA,EACF,GACA,EAAE,OAAO,CACX;AAAA,EAEA,gBAAgB,KAAK,uCAAuC;AAAA,EAC5D,OAAO,EAAE,MAAM,SAAS,QAAQ,IAAI,SAAS,WAAW,GAAG;AAAA;AAGtD,IAAM,0BAIT,gBAAgB,CAAC,OAAO,OAAO,QAA4D;AAAA,EAC7F,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EACpC,MAAM,WAAW,YAAY,KAAK;AAAA,EAElC,MAAM,SAAS,OAAO,qBACpB;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,MACR,EAAE,MAAM,UAAU,SAAS,MAAM,OAAiB;AAAA,MAClD,EAAE,MAAM,QAAQ,SAAS,MAAM,KAAe;AAAA,IAChD;AAAA,IACA;AAAA,EACF,GACA,EAAE,OAAO,CACX;AAAA,EAEA,iBAAiB,SAAS,QAAQ;AAAA,IAChC,MAAM,QAAQ,MAAM,QAAQ,IAAI,OAAO,WAAW;AAAA,IAClD,IAAI,OAAO;AAAA,MACT,MAAM,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,MAAM;AAAA,IAC7D;AAAA,EACF;AAAA,EACA,MAAM,EAAE,MAAM,UAAU,MAAM,CAAC,EAA4B;AAAA;;;ACtE7D,sBAAS;AAIF,IAAM,kBAIT,OAAO,OAAO,OAAO,iBAAiB,WAAW;AAAA,EACnD,IAAI,MAAM,QAAQ,MAAM,IAAI,GAAG;AAAA,IAC7B,WAAU,EAAE,KACV,0FACF;AAAA,IACA,MAAM,QAAQ,MAAM;AAAA,IACpB,MAAM,UAAoB,CAAC;AAAA,IAC3B,WAAW,QAAQ,OAAO;AAAA,MACxB,MAAM,IAAI,MAAM,gBAAgB,KAAK,OAAO,MAAM,KAAK,GAAG,OAAO,iBAAiB,MAAM;AAAA,MACxF,QAAQ,KAAK,EAAE,IAAc;AAAA,IAC/B;AAAA,IACA,OAAO,EAAE,MAAM,QAAQ;AAAA,EACzB;AAAA,EAEA,gBAAgB,GAAG,0CAA0C;AAAA,EAC7D,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EACpC,MAAM,WAAW,YAAY,KAAK;AAAA,EAElC,MAAM,WAAW,MAAM,OAAO,eAC5B;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,MACR,EAAE,MAAM,UAAU,SAAS,0CAA0C;AAAA,MACrE,EAAE,MAAM,QAAQ,SAAS,MAAM,KAAe;AAAA,IAChD;AAAA,IACA;AAAA,EACF,GACA,EAAE,OAAO,CACX;AAAA,EAEA,gBAAgB,KAAK,2CAA2C;AAAA,EAChE,OAAO,EAAE,MAAM,SAAS,QAAQ,IAAI,SAAS,WAAW,GAAG;AAAA;AAGtD,IAAM,yBAIT,gBAAgB,CAAC,OAAO,OAAO,QAA2D;AAAA,EAC5F,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EACpC,MAAM,WAAW,YAAY,KAAK;AAAA,EAElC,MAAM,SAAS,OAAO,qBACpB;AAAA,IACE,OAAO;AAAA,IACP,UAAU;AAAA,MACR,EAAE,MAAM,UAAU,SAAS,0CAA0C;AAAA,MACrE,EAAE,MAAM,QAAQ,SAAS,MAAM,KAAe;AAAA,IAChD;AAAA,IACA;AAAA,EACF,GACA,EAAE,OAAO,CACX;AAAA,EAEA,iBAAiB,SAAS,QAAQ;AAAA,IAChC,MAAM,QAAQ,MAAM,QAAQ,IAAI,OAAO,WAAW;AAAA,IAClD,IAAI,OAAO;AAAA,MACT,MAAM,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,MAAM;AAAA,IAC7D;AAAA,EACF;AAAA,EACA,MAAM,EAAE,MAAM,UAAU,MAAM,CAAC,EAA2B;AAAA;;;ACxE5D;AAUA,sBAAS;AAIT,SAAS,gBAAgB,CACvB,YAC0C;AAAA,EAC1C,IAAI,CAAC,cAAc,eAAe;AAAA,IAAQ,OAAO;AAAA,EACjD,IAAI,eAAe;AAAA,IAAQ,OAAO;AAAA,EAClC,IAAI,eAAe;AAAA,IAAY,OAAO;AAAA,EACtC,OAAO;AAAA;AAGF,IAAM,kBAIT,OAAO,OAAO,OAAO,iBAAiB,WAAW;AAAA,EACnD,IAAI,MAAM,QAAQ,MAAM,MAAM,GAAG;AAAA,IAC/B,WAAU,EAAE,KACV,0FACF;AAAA,IACA,MAAM,UAAU,MAAM;AAAA,IACtB,MAAM,QAAkB,CAAC;AAAA,IACzB,MAAM,gBAA6B,CAAC;AAAA,IACpC,WAAW,QAAQ,SAAS;AAAA,MAC1B,MAAM,IAAI,MAAM,gBAAgB,KAAK,OAAO,QAAQ,KAAK,GAAG,OAAO,iBAAiB,MAAM;AAAA,MAC1F,MAAM,KAAK,EAAE,IAAc;AAAA,MAC3B,cAAc,KAAK,EAAE,SAAsB;AAAA,IAC7C;AAAA,IACA,OAAO,EAAE,MAAM,OAAO,WAAW,cAAc;AAAA,EACjD;AAAA,EAEA,gBAAgB,GAAG,oCAAoC;AAAA,EACvD,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EACpC,MAAM,WAAW,YAAY,KAAK;AAAA,EAElC,MAAM,QAAQ,MAAM,MAAM,IAAI,CAAC,OAAuB;AAAA,IACpD,MAAM;AAAA,IACN,UAAU;AAAA,MACR,MAAM,EAAE;AAAA,MACR,aAAa,qBAAqB,CAAC;AAAA,MACnC,YAAY,EAAE;AAAA,IAChB;AAAA,EACF,EAAE;AAAA,EAEF,MAAM,WAAW,iBAAiB,KAAK;AAAA,EAEvC,MAAM,aAAa,iBAAiB,MAAM,UAAU;AAAA,EAEpD,MAAM,SAAc;AAAA,IAClB,OAAO;AAAA,IACP;AAAA,IACA,YAAY,MAAM;AAAA,IAClB,aAAa,MAAM;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,IAAI,eAAe,QAAQ;AAAA,IACzB,OAAO,QAAQ;AAAA,IACf,OAAO,cAAc;AAAA,EACvB;AAAA,EAEA,MAAM,WAAW,MAAM,OAAO,eAAe,QAAQ,EAAE,OAAO,CAAC;AAAA,EAE/D,MAAM,OAAO,SAAS,QAAQ,IAAI,SAAS,WAAW;AAAA,EACtD,MAAM,YAAuB,CAAC;AAAA,EAC9B,IAAI,YAAY;AAAA,GACd,SAAS,QAAQ,IAAI,SAAiB,cAAc,CAAC,GAAG,QAAQ,CAAC,OAAY;AAAA,IAC7E,IAAI,cAAuC,CAAC;AAAA,IAC5C,MAAM,UAAU,GAAG,UAAU;AAAA,IAC7B,IAAI,OAAO,YAAY,UAAU;AAAA,MAC/B,IAAI;AAAA,QACF,cAAc,KAAK,MAAM,OAAO;AAAA,QAChC,MAAM;AAAA,QACN,MAAM,UAAU,iBAAiB,OAAO;AAAA,QACxC,cAAe,WAAuC,CAAC;AAAA;AAAA,IAE3D,EAAO,SAAI,WAAW,MAAM;AAAA,MAC1B,cAAc;AAAA,IAChB;AAAA,IACA,MAAM,KAAM,GAAG,MAAiB,QAAQ;AAAA,IACxC;AAAA,IACA,UAAU,KAAK,EAAE,IAAI,MAAM,GAAG,SAAS,MAAgB,OAAO,YAAY,CAAC;AAAA,GAC5E;AAAA,EAED,gBAAgB,KAAK,qCAAqC;AAAA,EAC1D,OAAO,EAAE,MAAM,WAAW,qBAAqB,WAAW,MAAM,KAAK,EAAE;AAAA;AAGlE,IAAM,yBAIT,gBAAgB,CAAC,OAAO,OAAO,QAA2D;AAAA,EAC5F,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EACpC,MAAM,WAAW,YAAY,KAAK;AAAA,EAElC,MAAM,QAAQ,MAAM,MAAM,IAAI,CAAC,OAAuB;AAAA,IACpD,MAAM;AAAA,IACN,UAAU;AAAA,MACR,MAAM,EAAE;AAAA,MACR,aAAa,qBAAqB,CAAC;AAAA,MACnC,YAAY,EAAE;AAAA,IAChB;AAAA,EACF,EAAE;AAAA,EAEF,MAAM,WAAW,iBAAiB,KAAK;AAAA,EAEvC,MAAM,aAAa,iBAAiB,MAAM,UAAU;AAAA,EAEpD,MAAM,SAAc;AAAA,IAClB,OAAO;AAAA,IACP;AAAA,IACA,YAAY,MAAM;AAAA,IAClB,aAAa,MAAM;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,IAAI,eAAe,QAAQ;AAAA,IACzB,OAAO,QAAQ;AAAA,IACf,OAAO,cAAc;AAAA,EACvB;AAAA,EAEA,MAAM,SAAS,OAAO,qBAAqB,QAAQ,EAAE,OAAO,CAAC;AAAA,EAE7D,IAAI,kBAAkB;AAAA,EACtB,MAAM,sBAAsB,IAAI;AAAA,EAEhC,iBAAiB,SAAS,QAAQ;AAAA,IAChC,MAAM,SAAS,MAAM,QAAQ;AAAA,IAC7B,IAAI,CAAC;AAAA,MAAQ;AAAA,IAEb,MAAM,eAAe,OAAO,OAAO,WAAW;AAAA,IAC9C,IAAI,cAAc;AAAA,MAChB,mBAAmB;AAAA,MACnB,MAAM,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,aAAa;AAAA,IACpE;AAAA,IAEA,MAAM,WAAY,OAAO,OAAe;AAAA,IACxC,IAAI,MAAM,QAAQ,QAAQ,GAAG;AAAA,MAC3B,WAAW,WAAW,UAAU;AAAA,QAC9B,MAAM,MAAM,QAAQ;AAAA,QACpB,IAAI,CAAC,oBAAoB,IAAI,GAAG,GAAG;AAAA,UACjC,oBAAoB,IAAI,KAAK;AAAA,YAC3B,IAAI,QAAQ,MAAM;AAAA,YAClB,MAAM,QAAQ,UAAU,QAAQ;AAAA,YAChC,WAAW;AAAA,UACb,CAAC;AAAA,QACH;AAAA,QACA,MAAM,MAAM,oBAAoB,IAAI,GAAG;AAAA,QACvC,IAAI,QAAQ;AAAA,UAAI,IAAI,KAAK,QAAQ;AAAA,QACjC,IAAI,QAAQ,UAAU;AAAA,UAAM,IAAI,OAAO,QAAQ,SAAS;AAAA,QACxD,IAAI,QAAQ,UAAU;AAAA,UAAW,IAAI,aAAa,QAAQ,SAAS;AAAA,MACrE;AAAA,MAEA,MAAM,WAAsB,CAAC;AAAA,MAC7B,cAAc,OAAO,qBAAqB;AAAA,QACxC,IAAI;AAAA,QACJ,IAAI;AAAA,UACF,cAAc,KAAK,MAAM,GAAG,SAAS;AAAA,UACrC,MAAM;AAAA,UACN,MAAM,UAAU,iBAAiB,GAAG,SAAS;AAAA,UAC7C,cAAe,WAAuC,CAAC;AAAA;AAAA,QAEzD,SAAS,KAAK,EAAE,IAAI,GAAG,IAAI,MAAM,GAAG,MAAM,OAAO,YAAY,CAAC;AAAA,MAChE;AAAA,MACA,MAAM,EAAE,MAAM,gBAAgB,MAAM,aAAa,aAAa,SAAS;AAAA,IACzE;AAAA,EACF;AAAA,EAEA,MAAM,YAAuB,CAAC;AAAA,EAC9B,cAAc,OAAO,qBAAqB;AAAA,IACxC,IAAI;AAAA,IACJ,IAAI;AAAA,MACF,aAAa,KAAK,MAAM,GAAG,SAAS;AAAA,MACpC,MAAM;AAAA,MACN,aAAc,iBAAiB,GAAG,SAAS,KAAiC,CAAC;AAAA;AAAA,IAE/E,UAAU,KAAK,EAAE,IAAI,GAAG,IAAI,MAAM,GAAG,MAAM,OAAO,WAAW,CAAC;AAAA,EAChE;AAAA,EAEA,MAAM,iBAAiB,qBAAqB,WAAW,MAAM,KAAK;AAAA,EAClE,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,MAAM,EAAE,MAAM,iBAAiB,WAAW,eAAe;AAAA,EAC3D;AAAA;;;ACzLK,IAAM,YAA+E;AAAA,EAC1F,eAAe;AAAA,EACf,oBAAoB;AAAA,EACpB,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,iBAAiB;AAAA,EACjB,iBAAiB;AACnB;AAEO,IAAM,mBAGT;AAAA,EACF,oBAAoB;AAAA,EACpB,kBAAkB;AAAA,EAClB,iBAAiB;AAAA,EACjB,iBAAiB;AACnB;;;AC/BA;AAAA;AAAA;AAUO,MAAM,kCAAkC,iBAAyC;AAAA,EAC7E,OAAO;AAAA,EACP,cAAc;AAAA,EACd,UAAU;AAAA,EACV,kBAAkB;AAAA,EAElB,YAAY;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,WAAW,CACT,OACA,aACA,eACA;AAAA,IACA,MAAM,OAAO,aAAa,aAAa;AAAA;AAE3C;;;AC7BA,eAAsB,yBAAyB,CAC7C,SACe;AAAA,EACf,MAAM,IAAI,0BAA0B,WAAW,gBAAgB,EAAE,SAAS,WAAW,CAAC,CAAC;AAAA;;ACPzF,sBAAS;;;ACAT;AAAA;AAAA;AAmBO,MAAM,4BAA4B,WAAmC;AAAA,EACjE,OAAO;AAAA,EACP,cAAc;AAAA,EACd,UAAU;AAAA,EACV,kBAAkB;AAAA,EAElB,YAAY;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EAEA,WAAW,CACT,OACA,aACA,eACA;AAAA,IACA,MAAM,OAAO,aAAa,aAAa;AAAA;AAE3C;;;ADtCA,eAAsB,yBAAyB,GAAkB;AAAA,EAC/D,MAAM,eAAe,sBAAsB,IAAI,aAAa;AAAA,EAC5D,IAAI,oBAAoB,WAAW,gBAAgB,EAAE,uBAAuB,YAAY;AAAA,EACxF,aAAa,UAAU;AAAA,EACvB,WAAU,EAAE,KAAK,4DAA4D;AAAA;",
23
- "debugId": "D4B1B612245BC13F64756E2164756E21",
21
+ "mappings": "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",
22
+ "debugId": "0F9D615ABDB7DCE964756E2164756E21",
24
23
  "names": []
25
24
  }
@@ -19,7 +19,7 @@ export declare class HuggingFaceTransformersProvider extends AiProvider<HfTransf
19
19
  readonly displayName = "Hugging Face Transformers (ONNX)";
20
20
  readonly isLocal = true;
21
21
  readonly supportsBrowser = true;
22
- readonly taskTypes: readonly ["DownloadModelTask", "UnloadModelTask", "ModelInfoTask", "CountTokensTask", "TextEmbeddingTask", "TextGenerationTask", "TextQuestionAnswerTask", "TextLanguageDetectionTask", "TextClassificationTask", "TextFillMaskTask", "TextNamedEntityRecognitionTask", "TextRewriterTask", "TextSummaryTask", "TextTranslationTask", "ImageSegmentationTask", "ImageToTextTask", "BackgroundRemovalTask", "ImageEmbeddingTask", "ImageClassificationTask", "ObjectDetectionTask", "ToolCallingTask", "ModelSearchTask"];
22
+ readonly taskTypes: readonly ["DownloadModelTask", "UnloadModelTask", "ModelInfoTask", "CountTokensTask", "TextEmbeddingTask", "TextGenerationTask", "TextQuestionAnswerTask", "TextLanguageDetectionTask", "TextClassificationTask", "TextFillMaskTask", "TextNamedEntityRecognitionTask", "TextRewriterTask", "TextSummaryTask", "TextTranslationTask", "ImageSegmentationTask", "ImageToTextTask", "BackgroundRemovalTask", "ImageEmbeddingTask", "ImageClassificationTask", "ObjectDetectionTask", "ModelSearchTask"];
23
23
  constructor(tasks?: Record<string, AiProviderRunFn<any, any, HfTransformersOnnxModelConfig>>, streamTasks?: Record<string, AiProviderStreamFn<any, any, HfTransformersOnnxModelConfig>>, reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, HfTransformersOnnxModelConfig>>);
24
24
  }
25
25
  //# sourceMappingURL=HuggingFaceTransformersProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HuggingFaceTransformersProvider.d.ts","sourceRoot":"","sources":["../../src/provider-hf-transformers/HuggingFaceTransformersProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAE9E;;;;;;;;GAQG;AACH,qBAAa,+BAAgC,SAAQ,UAAU,CAAC,6BAA6B,CAAC;IAC5F,QAAQ,CAAC,IAAI,0BAAwB;IACrC,QAAQ,CAAC,WAAW,sCAAsC;IAC1D,QAAQ,CAAC,OAAO,QAAQ;IACxB,QAAQ,CAAC,eAAe,QAAQ;IAEhC,QAAQ,CAAC,SAAS,2fAuBP;IAEX,YACE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,6BAA6B,CAAC,CAAC,EAChF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,6BAA6B,CAAC,CAAC,EACzF,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,6BAA6B,CAAC,CAAC,EAGjG;CACF"}
1
+ {"version":3,"file":"HuggingFaceTransformersProvider.d.ts","sourceRoot":"","sources":["../../src/provider-hf-transformers/HuggingFaceTransformersProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,UAAU,EACV,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAE9E;;;;;;;;GAQG;AACH,qBAAa,+BAAgC,SAAQ,UAAU,CAAC,6BAA6B,CAAC;IAC5F,QAAQ,CAAC,IAAI,0BAAwB;IACrC,QAAQ,CAAC,WAAW,sCAAsC;IAC1D,QAAQ,CAAC,OAAO,QAAQ;IACxB,QAAQ,CAAC,eAAe,QAAQ;IAEhC,QAAQ,CAAC,SAAS,weAsBP;IAEX,YACE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,6BAA6B,CAAC,CAAC,EAChF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,6BAA6B,CAAC,CAAC,EACzF,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,6BAA6B,CAAC,CAAC,EAGjG;CACF"}
@@ -3,15 +3,25 @@
3
3
  * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { QueuedAiProvider, type AiProviderReactiveRunFn, type AiProviderRunFn, type AiProviderStreamFn } from "@workglow/ai";
6
+ import { QueuedAiProvider, type IAiExecutionStrategy, type AiProviderReactiveRunFn, type AiProviderRunFn, type AiProviderStreamFn, type AiProviderRegisterOptions } from "@workglow/ai";
7
+ import type { ModelConfig } from "@workglow/ai";
7
8
  import type { HfTransformersOnnxModelConfig } from "./common/HFT_ModelSchema";
8
- /** Main-thread registration (inline or worker-backed); creates the default job queue. */
9
+ /**
10
+ * Main-thread registration (inline or worker-backed).
11
+ * WebGPU/GPU/Metal models use the `gpu` slot (or a numeric `queue.concurrency`, default 1).
12
+ * WASM/CPU models use a separate {@link HF_TRANSFORMERS_ONNX_CPU} queue with higher
13
+ * concurrency (4 in production, 1 under automated tests) to limit ONNX worker contention.
14
+ * Set `cpu` in `queue.concurrency` to override the default.
15
+ */
9
16
  export declare class HuggingFaceTransformersQueuedProvider extends QueuedAiProvider<HfTransformersOnnxModelConfig> {
10
17
  readonly name = "HF_TRANSFORMERS_ONNX";
11
18
  readonly displayName = "Hugging Face Transformers (ONNX)";
12
19
  readonly isLocal = true;
13
20
  readonly supportsBrowser = true;
14
- readonly taskTypes: readonly ["DownloadModelTask", "UnloadModelTask", "ModelInfoTask", "CountTokensTask", "TextEmbeddingTask", "TextGenerationTask", "TextQuestionAnswerTask", "TextLanguageDetectionTask", "TextClassificationTask", "TextFillMaskTask", "TextNamedEntityRecognitionTask", "TextRewriterTask", "TextSummaryTask", "TextTranslationTask", "ImageSegmentationTask", "ImageToTextTask", "BackgroundRemovalTask", "ImageEmbeddingTask", "ImageClassificationTask", "ObjectDetectionTask", "ToolCallingTask", "ModelSearchTask"];
21
+ private cpuStrategy;
22
+ readonly taskTypes: readonly ["DownloadModelTask", "UnloadModelTask", "ModelInfoTask", "CountTokensTask", "TextEmbeddingTask", "TextGenerationTask", "TextQuestionAnswerTask", "TextLanguageDetectionTask", "TextClassificationTask", "TextFillMaskTask", "TextNamedEntityRecognitionTask", "TextRewriterTask", "TextSummaryTask", "TextTranslationTask", "ImageSegmentationTask", "ImageToTextTask", "BackgroundRemovalTask", "ImageEmbeddingTask", "ImageClassificationTask", "ObjectDetectionTask", "ModelSearchTask"];
15
23
  constructor(tasks?: Record<string, AiProviderRunFn<any, any, HfTransformersOnnxModelConfig>>, streamTasks?: Record<string, AiProviderStreamFn<any, any, HfTransformersOnnxModelConfig>>, reactiveTasks?: Record<string, AiProviderReactiveRunFn<any, any, HfTransformersOnnxModelConfig>>);
24
+ protected afterRegister(options: AiProviderRegisterOptions): Promise<void>;
25
+ protected getStrategyForModel(model: ModelConfig): IAiExecutionStrategy;
16
26
  }
17
27
  //# sourceMappingURL=HuggingFaceTransformersQueuedProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HuggingFaceTransformersQueuedProvider.d.ts","sourceRoot":"","sources":["../../src/provider-hf-transformers/HuggingFaceTransformersQueuedProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAE9E,yFAAyF;AACzF,qBAAa,qCAAsC,SAAQ,gBAAgB,CAAC,6BAA6B,CAAC;IACxG,QAAQ,CAAC,IAAI,0BAAwB;IACrC,QAAQ,CAAC,WAAW,sCAAsC;IAC1D,QAAQ,CAAC,OAAO,QAAQ;IACxB,QAAQ,CAAC,eAAe,QAAQ;IAEhC,QAAQ,CAAC,SAAS,2fAuBP;IAEX,YACE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,6BAA6B,CAAC,CAAC,EAChF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,6BAA6B,CAAC,CAAC,EACzF,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,6BAA6B,CAAC,CAAC,EAGjG;CACF"}
1
+ {"version":3,"file":"HuggingFaceTransformersQueuedProvider.d.ts","sourceRoot":"","sources":["../../src/provider-hf-transformers/HuggingFaceTransformersQueuedProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAE/B,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAyC9E;;;;;;GAMG;AACH,qBAAa,qCAAsC,SAAQ,gBAAgB,CAAC,6BAA6B,CAAC;IACxG,QAAQ,CAAC,IAAI,0BAAwB;IACrC,QAAQ,CAAC,WAAW,sCAAsC;IAC1D,QAAQ,CAAC,OAAO,QAAQ;IACxB,QAAQ,CAAC,eAAe,QAAQ;IAEhC,OAAO,CAAC,WAAW,CAAmC;IAEtD,QAAQ,CAAC,SAAS,weAsBP;IAEX,YACE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,6BAA6B,CAAC,CAAC,EAChF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,6BAA6B,CAAC,CAAC,EACzF,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,uBAAuB,CAAC,GAAG,EAAE,GAAG,EAAE,6BAA6B,CAAC,CAAC,EAGjG;IAED,UAAyB,aAAa,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOxF;IAED,UAAmB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,oBAAoB,CAM/E;CACF"}
@@ -4,6 +4,10 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  export declare const HF_TRANSFORMERS_ONNX = "HF_TRANSFORMERS_ONNX";
7
+ /** Job queue for WebGPU/GPU/Metal HFT models (serialized, concurrency 1). */
8
+ export declare const HF_TRANSFORMERS_ONNX_GPU = "HF_TRANSFORMERS_ONNX_gpu";
9
+ /** Job queue for WASM/CPU HFT models. */
10
+ export declare const HF_TRANSFORMERS_ONNX_CPU = "HF_TRANSFORMERS_ONNX_cpu";
7
11
  export declare const HTF_CACHE_NAME = "transformers-cache";
8
12
  export type QuantizationDataType = "auto" | "fp32" | "fp16" | "q8" | "int8" | "uint8" | "q4" | "bnb4" | "q4f16";
9
13
  export declare const QuantizationDataType: {
@@ -1 +1 @@
1
- {"version":3,"file":"HFT_Constants.d.ts","sourceRoot":"","sources":["../../../src/provider-hf-transformers/common/HFT_Constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,eAAO,MAAM,cAAc,uBAAuB,CAAC;AAEnD,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,MAAM,GACN,MAAM,GACN,IAAI,GACJ,MAAM,GACN,OAAO,GACP,IAAI,GACJ,MAAM,GACN,OAAO,CAAC;AAEZ,eAAO,MAAM,oBAAoB;;;;;;;;;;CAUsC,CAAC;AAExE,KAAK,mBAAmB,GACpB,WAAW,GACX,sBAAsB,GACtB,iBAAiB,GACjB,sBAAsB,GACtB,qBAAqB,GACrB,eAAe,GACf,aAAa,GACb,oBAAoB,GACpB,0BAA0B,GAC1B,oBAAoB,CAAC;AAEzB,QAAA,MAAM,mBAAmB;;;;;;;;;;;CAW4C,CAAC;AAEtE,KAAK,qBAAqB,GACtB,oBAAoB,GACpB,oBAAoB,GACpB,kBAAkB,GAClB,sBAAsB,GACtB,gBAAgB,GAEhB,eAAe,GAEf,kBAAkB,GAClB,0BAA0B,CAAC;AAE/B,QAAA,MAAM,qBAAqB;;;;;;;;;CAW8C,CAAC;AAE1E,KAAK,oBAAoB,GACrB,sBAAsB,GACtB,8BAA8B,GAC9B,gBAAgB,CAAC;AAErB,QAAA,MAAM,oBAAoB;;;;CAI6C,CAAC;AAExE,KAAK,yBAAyB,GAC1B,6BAA6B,GAC7B,eAAe,GACf,gCAAgC,GAChC,gCAAgC,GAChC,4BAA4B,CAAC;AAEjC,QAAA,MAAM,yBAAyB;;;;;;CAMkD,CAAC;AAElF,MAAM,MAAM,eAAe,GACvB,mBAAmB,GACnB,qBAAqB,GACrB,oBAAoB,GACpB,yBAAyB,CAAC;AAE9B,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;CAKiC,CAAC"}
1
+ {"version":3,"file":"HFT_Constants.d.ts","sourceRoot":"","sources":["../../../src/provider-hf-transformers/common/HFT_Constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,oBAAoB,yBAAyB,CAAC;AAC3D,6EAA6E;AAC7E,eAAO,MAAM,wBAAwB,6BAAgC,CAAC;AACtE,yCAAyC;AACzC,eAAO,MAAM,wBAAwB,6BAAgC,CAAC;AACtE,eAAO,MAAM,cAAc,uBAAuB,CAAC;AAEnD,MAAM,MAAM,oBAAoB,GAC5B,MAAM,GACN,MAAM,GACN,MAAM,GACN,IAAI,GACJ,MAAM,GACN,OAAO,GACP,IAAI,GACJ,MAAM,GACN,OAAO,CAAC;AAEZ,eAAO,MAAM,oBAAoB;;;;;;;;;;CAUsC,CAAC;AAExE,KAAK,mBAAmB,GACpB,WAAW,GACX,sBAAsB,GACtB,iBAAiB,GACjB,sBAAsB,GACtB,qBAAqB,GACrB,eAAe,GACf,aAAa,GACb,oBAAoB,GACpB,0BAA0B,GAC1B,oBAAoB,CAAC;AAEzB,QAAA,MAAM,mBAAmB;;;;;;;;;;;CAW4C,CAAC;AAEtE,KAAK,qBAAqB,GACtB,oBAAoB,GACpB,oBAAoB,GACpB,kBAAkB,GAClB,sBAAsB,GACtB,gBAAgB,GAEhB,eAAe,GAEf,kBAAkB,GAClB,0BAA0B,CAAC;AAE/B,QAAA,MAAM,qBAAqB;;;;;;;;;CAW8C,CAAC;AAE1E,KAAK,oBAAoB,GACrB,sBAAsB,GACtB,8BAA8B,GAC9B,gBAAgB,CAAC;AAErB,QAAA,MAAM,oBAAoB;;;;CAI6C,CAAC;AAExE,KAAK,yBAAyB,GAC1B,6BAA6B,GAC7B,eAAe,GACf,gCAAgC,GAChC,gCAAgC,GAChC,4BAA4B,CAAC;AAEjC,QAAA,MAAM,yBAAyB;;;;;;CAMkD,CAAC;AAElF,MAAM,MAAM,eAAe,GACvB,mBAAmB,GACnB,qBAAqB,GACrB,oBAAoB,GACpB,yBAAyB,CAAC;AAE9B,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;CAKiC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HFT_CountTokens.d.ts","sourceRoot":"","sources":["../../../src/provider-hf-transformers/common/HFT_CountTokens.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAGvE,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,CAkB9B,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,uBAAuB,CAC5D,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,CAG9B,CAAC"}
1
+ {"version":3,"file":"HFT_CountTokens.d.ts","sourceRoot":"","sources":["../../../src/provider-hf-transformers/common/HFT_CountTokens.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,uBAAuB,EACvB,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAGvE,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,CAU9B,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,uBAAuB,CAC5D,oBAAoB,EACpB,qBAAqB,EACrB,6BAA6B,CAG9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HFT_Download.d.ts","sourceRoot":"","sources":["../../../src/provider-hf-transformers/common/HFT_Download.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAE3G,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAGvE;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,eAAe,CACxC,yBAAyB,EACzB,0BAA0B,EAC1B,6BAA6B,CAc9B,CAAC"}
1
+ {"version":3,"file":"HFT_Download.d.ts","sourceRoot":"","sources":["../../../src/provider-hf-transformers/common/HFT_Download.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAGvE;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,eAAe,CACxC,yBAAyB,EACzB,0BAA0B,EAC1B,6BAA6B,CAc9B,CAAC"}