@workglow/huggingface-inference 0.2.36 → 0.2.37

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.
@@ -3,8 +3,8 @@
3
3
  * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { AiProvider } from "@workglow/ai/worker";
7
6
  import type { Capability, ModelRecord } from "@workglow/ai/worker";
7
+ import { AiProvider } from "@workglow/ai/worker";
8
8
  declare const HfInferenceProvider_base: new (promiseRunFns?: readonly import("@workglow/ai").AiProviderRunFnRegistration<any, any, {
9
9
  capabilities?: string[] | undefined;
10
10
  description?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"HfInferenceProvider.d.ts","sourceRoot":"","sources":["../../src/ai/HfInferenceProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASnE;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,wBAMxC;IACU,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,UAAU,EAAE,CAEpE;IAED,UAAmB,gBAAgB,IAAI,SAAS;QAAE,MAAM,EAAE,SAAS,UAAU,EAAE,CAAA;KAAE,EAAE,CAElF;CACF"}
1
+ {"version":3,"file":"HfInferenceProvider.d.ts","sourceRoot":"","sources":["../../src/ai/HfInferenceProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQjD;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,wBAMxC;IACU,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,UAAU,EAAE,CAEpE;IAED,UAAmB,gBAAgB,IAAI,SAAS;QAAE,MAAM,EAAE,SAAS,UAAU,EAAE,CAAA;KAAE,EAAE,CAElF;CACF"}
@@ -3,8 +3,8 @@
3
3
  * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- import { AiProvider } from "@workglow/ai";
7
6
  import type { Capability, ModelRecord } from "@workglow/ai";
7
+ import { AiProvider } from "@workglow/ai";
8
8
  declare const HfInferenceQueuedProvider_base: new (promiseRunFns?: readonly import("@workglow/ai").AiProviderRunFnRegistration<any, any, {
9
9
  capabilities?: string[] | undefined;
10
10
  description?: string | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"HfInferenceQueuedProvider.d.ts","sourceRoot":"","sources":["../../src/ai/HfInferenceQueuedProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAS5D,4FAA4F;AAC5F,qBAAa,yBAA0B,SAAQ,8BAM9C;IACU,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,UAAU,EAAE,CAEpE;IAED,UAAmB,gBAAgB,IAAI,SAAS;QAAE,MAAM,EAAE,SAAS,UAAU,EAAE,CAAA;KAAE,EAAE,CAElF;CACF"}
1
+ {"version":3,"file":"HfInferenceQueuedProvider.d.ts","sourceRoot":"","sources":["../../src/ai/HfInferenceQueuedProvider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAS1C,4FAA4F;AAC5F,qBAAa,yBAA0B,SAAQ,8BAM9C;IACU,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,UAAU,EAAE,CAEpE;IAED,UAAmB,gBAAgB,IAAI,SAAS;QAAE,MAAM,EAAE,SAAS,UAAU,EAAE,CAAA;KAAE,EAAE,CAElF;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"HFI_ImageEdit.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_ImageEdit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EAEpB,MAAM,cAAc,CAAC;AAMtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AA0BhE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,CAsDvB,CAAC"}
1
+ {"version":3,"file":"HFI_ImageEdit.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_ImageEdit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EAEpB,MAAM,cAAc,CAAC;AAQtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAwBhE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,eAAe,CAChD,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,CAsDvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HFI_ImageGenerate.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_ImageGenerate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EAExB,MAAM,cAAc,CAAC;AAKtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAYhE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,eAAe,CACpD,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,CA2CvB,CAAC"}
1
+ {"version":3,"file":"HFI_ImageGenerate.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_ImageGenerate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EAExB,MAAM,cAAc,CAAC;AAOtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAUhE;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,eAAe,CACpD,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,CA2CvB,CAAC"}
@@ -5,6 +5,6 @@
5
5
  */
6
6
  import type { AiProviderRunFnRegistration } from "@workglow/ai";
7
7
  import type { HfInferenceModelConfig } from "./HFI_ModelSchema";
8
- export { loadHfInferenceSDK, getClient, getModelName, getProvider } from "./HFI_Client";
8
+ export { getClient, getModelName, getProvider, loadHfInferenceSDK } from "./HFI_Client";
9
9
  export declare const HFI_RUN_FNS: readonly AiProviderRunFnRegistration<any, any, HfInferenceModelConfig>[];
10
10
  //# sourceMappingURL=HFI_JobRunFns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HFI_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAahE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAsBxF,eAAO,MAAM,WAAW,EAAE,SAAS,2BAA2B,CAE5D,GAAG,EAEH,GAAG,EACH,sBAAsB,CACvB,EAUA,CAAC"}
1
+ {"version":3,"file":"HFI_JobRunFns.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_JobRunFns.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAYhE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAsBxF,eAAO,MAAM,WAAW,EAAE,SAAS,2BAA2B,CAE5D,GAAG,EAEH,GAAG,EACH,sBAAsB,CACvB,EAUA,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HFI_ModelInfo.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_ModelInfo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,eAAO,MAAM,aAAa,EAAE,eAAe,CACzC,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,CAqCvB,CAAC"}
1
+ {"version":3,"file":"HFI_ModelInfo.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_ModelInfo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC7F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,eAAO,MAAM,aAAa,EAAE,eAAe,CACzC,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,CAqCvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HFI_ModelSearch.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_ModelSearch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AA6BtB,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,oBAAoB,EACpB,qBAAqB,CAwBtB,CAAC"}
1
+ {"version":3,"file":"HFI_ModelSearch.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_ModelSearch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AAgCtB,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,oBAAoB,EAAE,qBAAqB,CA4BxF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HFI_TextEmbedding.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_TextEmbedding.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,eAAO,MAAM,iBAAiB,EAAE,eAAe,CAC7C,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,CA6CvB,CAAC"}
1
+ {"version":3,"file":"HFI_TextEmbedding.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_TextEmbedding.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,eAAO,MAAM,iBAAiB,EAAE,eAAe,CAC7C,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,CA6CvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HFI_TextGeneration.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_TextGeneration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,eAAO,MAAM,yBAAyB,EAAE,eAAe,CACrD,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,CA0BvB,CAAC"}
1
+ {"version":3,"file":"HFI_TextGeneration.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_TextGeneration.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,eAAO,MAAM,yBAAyB,EAAE,eAAe,CACrD,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,CA0BvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HFI_TextRewriter.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_TextRewriter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,eAAO,MAAM,uBAAuB,EAAE,eAAe,CACnD,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,CAyBvB,CAAC"}
1
+ {"version":3,"file":"HFI_TextRewriter.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_TextRewriter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEnG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,eAAO,MAAM,uBAAuB,EAAE,eAAe,CACnD,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,CAyBvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HFI_TextSummary.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_TextSummary.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,eAAO,MAAM,sBAAsB,EAAE,eAAe,CAClD,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,CAyBvB,CAAC"}
1
+ {"version":3,"file":"HFI_TextSummary.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_TextSummary.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAEjG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,eAAO,MAAM,sBAAsB,EAAE,eAAe,CAClD,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,CAyBvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HFI_ToolCalling.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_ToolCalling.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AAMtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,eAAO,MAAM,sBAAsB,EAAE,eAAe,CAClD,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,CA2BvB,CAAC"}
1
+ {"version":3,"file":"HFI_ToolCalling.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_ToolCalling.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAQjG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,eAAO,MAAM,sBAAsB,EAAE,eAAe,CAClD,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,CA6BvB,CAAC"}
@@ -44,32 +44,8 @@ function getProvider(model) {
44
44
  // src/ai/registerHfInferenceInline.ts
45
45
  import { registerProviderInline } from "@workglow/ai/provider-utils";
46
46
 
47
- // src/ai/common/HFI_CapabilitySets.ts
48
- var HFI_TEXT_GENERATION = ["text.generation"];
49
- var HFI_TOOL_USE = ["text.generation", "tool-use"];
50
- var HFI_TEXT_REWRITER = ["text.rewriter"];
51
- var HFI_TEXT_SUMMARY = ["text.summary"];
52
- var HFI_TEXT_EMBEDDING = ["text.embedding"];
53
- var HFI_IMAGE_GENERATION = ["image.generation"];
54
- var HFI_IMAGE_EDITING = ["image.editing"];
55
- var HFI_MODEL_SEARCH = ["model.search"];
56
- var HFI_MODEL_INFO = ["model.info"];
57
- var HFI_CAPABILITY_SETS = [
58
- HFI_TEXT_GENERATION,
59
- HFI_TOOL_USE,
60
- HFI_TEXT_REWRITER,
61
- HFI_TEXT_SUMMARY,
62
- HFI_TEXT_EMBEDDING,
63
- HFI_IMAGE_GENERATION,
64
- HFI_IMAGE_EDITING,
65
- HFI_MODEL_SEARCH,
66
- HFI_MODEL_INFO
67
- ];
68
-
69
- // src/ai/common/HFI_ImageEdit.ts
70
- import { ImageGenerationContentPolicyError, ImageGenerationProviderError } from "@workglow/ai";
71
- import { getLogger } from "@workglow/util/worker";
72
- import { blobToImageValue, imageValueToPngBytes } from "@workglow/ai/provider-utils";
47
+ // src/ai/common/HFI_ImageValidation.ts
48
+ import { AiImageOutputTask, ProviderUnsupportedFeatureError } from "@workglow/ai";
73
49
 
74
50
  // src/ai/common/HFI_AspectRatio.ts
75
51
  var FLUX_DIMS = {
@@ -99,7 +75,52 @@ function isHfInpaintingModel(modelId) {
99
75
  return /inpaint|kontext/i.test(modelId);
100
76
  }
101
77
 
78
+ // src/ai/common/HFI_Constants.ts
79
+ var HF_INFERENCE = "HF_INFERENCE";
80
+
81
+ // src/ai/common/HFI_ImageValidation.ts
82
+ function registerHfImageValidator() {
83
+ AiImageOutputTask.registerProviderImageValidator(HF_INFERENCE, (taskType, input, model) => {
84
+ if (taskType !== "ImageEditTask")
85
+ return;
86
+ const modelId = model.model_id ?? "";
87
+ const modelName = model.provider_config?.model_name ?? modelId;
88
+ const additional = input["additionalImages"];
89
+ if (Array.isArray(additional) && additional.length > 0) {
90
+ throw new ProviderUnsupportedFeatureError("additionalImages", modelId, "HF Inference image-to-image only supports a single input image");
91
+ }
92
+ if (input["mask"] !== undefined && input["mask"] !== null && !isHfInpaintingModel(modelName)) {
93
+ throw new ProviderUnsupportedFeatureError("mask", modelId, "Mask is only supported on HF inpainting models (e.g., FLUX.1-Kontext-dev)");
94
+ }
95
+ });
96
+ }
97
+
98
+ // src/ai/common/HFI_CapabilitySets.ts
99
+ var HFI_TEXT_GENERATION = ["text.generation"];
100
+ var HFI_TOOL_USE = ["text.generation", "tool-use"];
101
+ var HFI_TEXT_REWRITER = ["text.rewriter"];
102
+ var HFI_TEXT_SUMMARY = ["text.summary"];
103
+ var HFI_TEXT_EMBEDDING = ["text.embedding"];
104
+ var HFI_IMAGE_GENERATION = ["image.generation"];
105
+ var HFI_IMAGE_EDITING = ["image.editing"];
106
+ var HFI_MODEL_SEARCH = ["model.search"];
107
+ var HFI_MODEL_INFO = ["model.info"];
108
+ var HFI_CAPABILITY_SETS = [
109
+ HFI_TEXT_GENERATION,
110
+ HFI_TOOL_USE,
111
+ HFI_TEXT_REWRITER,
112
+ HFI_TEXT_SUMMARY,
113
+ HFI_TEXT_EMBEDDING,
114
+ HFI_IMAGE_GENERATION,
115
+ HFI_IMAGE_EDITING,
116
+ HFI_MODEL_SEARCH,
117
+ HFI_MODEL_INFO
118
+ ];
119
+
102
120
  // src/ai/common/HFI_ImageEdit.ts
121
+ import { ImageGenerationContentPolicyError, ImageGenerationProviderError } from "@workglow/ai";
122
+ import { getLogger } from "@workglow/util/worker";
123
+ import { blobToImageValue, imageValueToPngBytes } from "@workglow/ai/provider-utils";
103
124
  function modelIdOf(model) {
104
125
  return model?.model_id ?? model?.provider_config?.model_name ?? "huggingface";
105
126
  }
@@ -233,13 +254,11 @@ var HFI_ModelInfo = async (input, model, _signal, emit) => {
233
254
  };
234
255
 
235
256
  // src/ai/common/HFI_ModelSearch.ts
236
- import { mapHfModelResult, searchHfModels } from "@workglow/ai/provider-utils";
237
- import { filterLabeledModelsByQuery } from "@workglow/ai/provider-utils";
238
-
239
- // src/ai/common/HFI_Constants.ts
240
- var HF_INFERENCE = "HF_INFERENCE";
241
-
242
- // src/ai/common/HFI_ModelSearch.ts
257
+ import {
258
+ filterLabeledModelsByQuery,
259
+ mapHfModelResult,
260
+ searchHfModels
261
+ } from "@workglow/ai/provider-utils";
243
262
  var HFI_IMAGE_MODELS = [
244
263
  { id: "black-forest-labs/FLUX.1-schnell", capabilities: ["image.generation"] },
245
264
  { id: "black-forest-labs/FLUX.1-Kontext-dev", capabilities: ["image.editing"] }
@@ -383,12 +402,12 @@ var HFI_TextSummary_Stream = async (input, model, signal, emit) => {
383
402
  };
384
403
 
385
404
  // src/ai/common/HFI_ToolCalling.ts
386
- import { toOpenAIMessages } from "@workglow/ai/worker";
387
405
  import {
388
406
  accumulateOpenAIStream,
389
407
  buildOpenAITools,
390
408
  mapOpenAIToolChoice
391
409
  } from "@workglow/ai/provider-utils";
410
+ import { toOpenAIMessages } from "@workglow/ai/worker";
392
411
  var HFI_ToolCalling_Stream = async (input, model, signal, emit) => {
393
412
  const client = await getClient(model);
394
413
  const modelName = getModelName(model);
@@ -475,24 +494,6 @@ class HfInferenceQueuedProvider extends createCloudProviderClass(AiProvider, {
475
494
  }
476
495
  }
477
496
 
478
- // src/ai/common/HFI_ImageValidation.ts
479
- import { AiImageOutputTask, ProviderUnsupportedFeatureError } from "@workglow/ai";
480
- function registerHfImageValidator() {
481
- AiImageOutputTask.registerProviderImageValidator(HF_INFERENCE, (taskType, input, model) => {
482
- if (taskType !== "ImageEditTask")
483
- return;
484
- const modelId = model.model_id ?? "";
485
- const modelName = model.provider_config?.model_name ?? modelId;
486
- const additional = input["additionalImages"];
487
- if (Array.isArray(additional) && additional.length > 0) {
488
- throw new ProviderUnsupportedFeatureError("additionalImages", modelId, "HF Inference image-to-image only supports a single input image");
489
- }
490
- if (input["mask"] !== undefined && input["mask"] !== null && !isHfInpaintingModel(modelName)) {
491
- throw new ProviderUnsupportedFeatureError("mask", modelId, "Mask is only supported on HF inpainting models (e.g., FLUX.1-Kontext-dev)");
492
- }
493
- });
494
- }
495
-
496
497
  // src/ai/registerHfInferenceInline.ts
497
498
  async function registerHfInferenceInline(options) {
498
499
  registerHfImageValidator();
@@ -503,8 +504,8 @@ async function registerHfInferenceInline(options) {
503
504
  import { registerProviderWorker } from "@workglow/ai/provider-utils";
504
505
 
505
506
  // src/ai/HfInferenceProvider.ts
506
- import { AiProvider as AiProvider2 } from "@workglow/ai/worker";
507
507
  import { createCloudProviderClass as createCloudProviderClass2 } from "@workglow/ai/provider-utils";
508
+ import { AiProvider as AiProvider2 } from "@workglow/ai/worker";
508
509
  class HfInferenceProvider extends createCloudProviderClass2(AiProvider2, {
509
510
  name: HF_INFERENCE,
510
511
  displayName: "Hugging Face Inference"
@@ -530,4 +531,4 @@ export {
530
531
  getClient
531
532
  };
532
533
 
533
- //# debugId=1CA6F5315201146E64756E2164756E21
534
+ //# debugId=E241C0908BDCEBF964756E2164756E21
@@ -1,29 +1,29 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../src/ai/common/HFI_Client.ts", "../src/ai/registerHfInferenceInline.ts", "../src/ai/common/HFI_CapabilitySets.ts", "../src/ai/common/HFI_ImageEdit.ts", "../src/ai/common/HFI_AspectRatio.ts", "../src/ai/common/HFI_ImageGenerate.ts", "../src/ai/common/HFI_ModelInfo.ts", "../src/ai/common/HFI_ModelSearch.ts", "../src/ai/common/HFI_Constants.ts", "../src/ai/common/HFI_TextEmbedding.ts", "../src/ai/common/HFI_TextGeneration.ts", "../src/ai/common/HFI_TextRewriter.ts", "../src/ai/common/HFI_TextSummary.ts", "../src/ai/common/HFI_ToolCalling.ts", "../src/ai/common/HFI_JobRunFns.ts", "../src/ai/HfInferenceQueuedProvider.ts", "../src/ai/common/HFI_Capabilities.ts", "../src/ai/common/HFI_ImageValidation.ts", "../src/ai/registerHfInferenceWorker.ts", "../src/ai/HfInferenceProvider.ts"],
3
+ "sources": ["../src/ai/common/HFI_Client.ts", "../src/ai/registerHfInferenceInline.ts", "../src/ai/common/HFI_ImageValidation.ts", "../src/ai/common/HFI_AspectRatio.ts", "../src/ai/common/HFI_Constants.ts", "../src/ai/common/HFI_CapabilitySets.ts", "../src/ai/common/HFI_ImageEdit.ts", "../src/ai/common/HFI_ImageGenerate.ts", "../src/ai/common/HFI_ModelInfo.ts", "../src/ai/common/HFI_ModelSearch.ts", "../src/ai/common/HFI_TextEmbedding.ts", "../src/ai/common/HFI_TextGeneration.ts", "../src/ai/common/HFI_TextRewriter.ts", "../src/ai/common/HFI_TextSummary.ts", "../src/ai/common/HFI_ToolCalling.ts", "../src/ai/common/HFI_JobRunFns.ts", "../src/ai/HfInferenceQueuedProvider.ts", "../src/ai/common/HFI_Capabilities.ts", "../src/ai/registerHfInferenceWorker.ts", "../src/ai/HfInferenceProvider.ts"],
4
4
  "sourcesContent": [
5
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 { resolveApiKey } from \"@workglow/ai/provider-utils\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\ntype HfInferenceSDKModule = typeof import(\"@huggingface/inference\");\n\nlet _loadPromise: Promise<HfInferenceSDKModule> | undefined;\n\n// NOTE: we do not want to de-dup this in the provider-utils, vite wants direct import with string literals.\nexport async function loadHfInferenceSDK(): Promise<HfInferenceSDKModule> {\n _loadPromise ??= import(/* @vite-ignore */ \"@huggingface/inference\")\n .then((mod) => mod as HfInferenceSDKModule)\n .catch(() => {\n _loadPromise = undefined;\n throw new Error(\n \"@huggingface/inference is required for Hugging Face Inference tasks. Install it with: bun add @huggingface/inference\"\n );\n });\n return _loadPromise;\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 = resolveApiKey({\n config,\n envVar: \"HF_TOKEN\",\n providerLabel: \"Hugging Face\",\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
- "/**\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 { registerProviderInline } from \"@workglow/ai/provider-utils\";\nimport { HFI_RUN_FNS } from \"./common/HFI_JobRunFns\";\nimport { HfInferenceQueuedProvider } from \"./HfInferenceQueuedProvider\";\nimport { registerHfImageValidator } from \"./common/HFI_ImageValidation\";\n\nexport async function registerHfInferenceInline(\n options?: AiProviderRegisterOptions\n): Promise<void> {\n registerHfImageValidator();\n await registerProviderInline(\n new HfInferenceQueuedProvider(HFI_RUN_FNS),\n \"Hugging Face Inference\",\n options\n );\n}\n",
7
- "/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Capability } from \"@workglow/ai/worker\";\n\n/**\n * Single source of truth for HuggingFace Inference's capability sets.\n *\n * Both `HFI_RUN_FNS` (worker-side registration) and `workerRunFnSpecs()`\n * (main-thread proxy declaration) derive their `serves` arrays from these\n * named exports. SDK-free so the main thread can import without paying the\n * `@huggingface/inference` cost.\n */\nexport const HFI_TEXT_GENERATION = [\"text.generation\"] as const satisfies Capability[];\nexport const HFI_TOOL_USE = [\"text.generation\", \"tool-use\"] as const satisfies Capability[];\nexport const HFI_TEXT_REWRITER = [\"text.rewriter\"] as const satisfies Capability[];\nexport const HFI_TEXT_SUMMARY = [\"text.summary\"] as const satisfies Capability[];\nexport const HFI_TEXT_EMBEDDING = [\"text.embedding\"] as const satisfies Capability[];\nexport const HFI_IMAGE_GENERATION = [\"image.generation\"] as const satisfies Capability[];\nexport const HFI_IMAGE_EDITING = [\"image.editing\"] as const satisfies Capability[];\nexport const HFI_MODEL_SEARCH = [\"model.search\"] as const satisfies Capability[];\nexport const HFI_MODEL_INFO = [\"model.info\"] as const satisfies Capability[];\n\n/** Aggregated list — for `workerRunFnSpecs()` derivation. Order MUST match `HFI_RUN_FNS`. */\nexport const HFI_CAPABILITY_SETS = [\n HFI_TEXT_GENERATION,\n HFI_TOOL_USE,\n HFI_TEXT_REWRITER,\n HFI_TEXT_SUMMARY,\n HFI_TEXT_EMBEDDING,\n HFI_IMAGE_GENERATION,\n HFI_IMAGE_EDITING,\n HFI_MODEL_SEARCH,\n HFI_MODEL_INFO,\n] as const;\n",
8
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ImageEditTaskInput,\n ImageEditTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport type { ImageValue } from \"@workglow/util/media\";\nimport { getLogger } from \"@workglow/util/worker\";\n\nimport { blobToImageValue, imageValueToPngBytes } from \"@workglow/ai/provider-utils\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName } from \"./HFI_Client\";\nimport { resolveHfImageDims } from \"./HFI_AspectRatio\";\n\nfunction modelIdOf(model: ModelConfig | undefined): string {\n return (\n model?.model_id ??\n (model?.provider_config as { model_name?: string } | undefined)?.model_name ??\n \"huggingface\"\n );\n}\n\n/**\n * Convert an inbound `ImageValue` (or a legacy data URI string) to a PNG Blob.\n */\nasync function gpuImageToBlob(image: ImageValue | string): Promise<Blob> {\n const bytes = await imageValueToPngBytes(image);\n // Copy into a fresh ArrayBuffer to avoid SharedArrayBuffer typing issues\n // with BlobPart.\n const buffer: ArrayBuffer =\n bytes.buffer instanceof ArrayBuffer\n ? bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength)\n : new Uint8Array(bytes).buffer;\n return new Blob([buffer], { type: \"image/png\" });\n}\n\n/**\n * One-shot run fn. HF Inference does not support partial image streaming,\n * so we run the request, emit one snapshot, then finish.\n */\nexport const HFI_ImageEdit_Stream: AiProviderRunFn<\n ImageEditTaskInput,\n ImageEditTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\n const logger = getLogger();\n const timer = `hfi:ImageEdit:${getModelName(model)}`;\n logger.time(timer);\n\n let result: ImageEditTaskOutput;\n try {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const dims = resolveHfImageDims(modelName, (input.aspectRatio as any) ?? \"1:1\");\n\n // image/mask may be data URI strings if the input crossed an earlier\n // worker boundary in legacy form; otherwise they are ImageValue POJOs.\n const inputBlob = await gpuImageToBlob(input.image as unknown as ImageValue | string);\n const params: Record<string, unknown> = {\n width: dims.width,\n height: dims.height,\n seed: input.seed,\n negative_prompt: input.negativePrompt,\n prompt: input.prompt,\n ...(input.providerOptions ?? {}),\n };\n if (input.mask) {\n // Validator (Task 17) rejects masks on non-inpainting models before this code runs.\n const maskBlob = await gpuImageToBlob(input.mask as unknown as ImageValue | string);\n params.mask_image = maskBlob;\n }\n\n const blob: Blob = await client.imageToImage(\n {\n model: modelName,\n inputs: inputBlob,\n parameters: params,\n },\n { signal }\n );\n const image = await blobToImageValue(blob);\n logger.timeEnd(timer);\n result = { image };\n } catch (err) {\n if (\n err instanceof ImageGenerationProviderError ||\n err instanceof ImageGenerationContentPolicyError\n )\n throw err;\n const msg = err instanceof Error ? err.message : \"unknown error\";\n if (/NSFW|safety|policy/i.test(msg))\n throw new ImageGenerationContentPolicyError(modelIdOf(model), msg);\n throw new ImageGenerationProviderError(modelIdOf(model), msg, { cause: err as Error });\n }\n\n if (signal.aborted) return;\n emit({ type: \"finish\", data: result });\n};\n",
6
+ "/**\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 { registerProviderInline } from \"@workglow/ai/provider-utils\";\nimport { registerHfImageValidator } from \"./common/HFI_ImageValidation\";\nimport { HFI_RUN_FNS } from \"./common/HFI_JobRunFns\";\nimport { HfInferenceQueuedProvider } from \"./HfInferenceQueuedProvider\";\n\nexport async function registerHfInferenceInline(\n options?: AiProviderRegisterOptions\n): Promise<void> {\n registerHfImageValidator();\n await registerProviderInline(\n new HfInferenceQueuedProvider(HFI_RUN_FNS),\n \"Hugging Face Inference\",\n options\n );\n}\n",
7
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ModelConfig } from \"@workglow/ai\";\nimport { AiImageOutputTask, ProviderUnsupportedFeatureError } from \"@workglow/ai\";\n\nimport { isHfInpaintingModel } from \"./HFI_AspectRatio\";\nimport { HF_INFERENCE } from \"./HFI_Constants\";\n\nexport function registerHfImageValidator(): void {\n AiImageOutputTask.registerProviderImageValidator(\n HF_INFERENCE,\n (taskType, input, model: ModelConfig) => {\n if (taskType !== \"ImageEditTask\") return;\n const modelId = model.model_id ?? \"\";\n const modelName =\n (model.provider_config as { model_name?: string } | undefined)?.model_name ?? modelId;\n\n const additional = input[\"additionalImages\"] as unknown[] | undefined;\n if (Array.isArray(additional) && additional.length > 0) {\n throw new ProviderUnsupportedFeatureError(\n \"additionalImages\",\n modelId,\n \"HF Inference image-to-image only supports a single input image\"\n );\n }\n if (\n input[\"mask\"] !== undefined &&\n input[\"mask\"] !== null &&\n !isHfInpaintingModel(modelName)\n ) {\n throw new ProviderUnsupportedFeatureError(\n \"mask\",\n modelId,\n \"Mask is only supported on HF inpainting models (e.g., FLUX.1-Kontext-dev)\"\n );\n }\n }\n );\n}\n",
9
8
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport type AspectRatio = \"1:1\" | \"16:9\" | \"9:16\" | \"4:3\" | \"3:4\";\n\nexport interface ImageDims {\n width: number;\n height: number;\n}\n\nconst FLUX_DIMS: Record<AspectRatio, ImageDims> = {\n \"1:1\": { width: 1024, height: 1024 },\n \"16:9\": { width: 1344, height: 768 },\n \"9:16\": { width: 768, height: 1344 },\n \"4:3\": { width: 1152, height: 896 },\n \"3:4\": { width: 896, height: 1152 },\n};\n\nconst SDXL_DIMS: Record<AspectRatio, ImageDims> = {\n \"1:1\": { width: 1024, height: 1024 },\n \"16:9\": { width: 1280, height: 720 },\n \"9:16\": { width: 720, height: 1280 },\n \"4:3\": { width: 1024, height: 768 },\n \"3:4\": { width: 768, height: 1024 },\n};\n\nconst DEFAULT_DIMS: Record<AspectRatio, ImageDims> = SDXL_DIMS;\n\nconst MODEL_DIM_TABLE: Array<{ pattern: RegExp; dims: Record<AspectRatio, ImageDims> }> = [\n { pattern: /^black-forest-labs\\/FLUX/i, dims: FLUX_DIMS },\n { pattern: /^stabilityai\\/.*-xl/i, dims: SDXL_DIMS },\n];\n\n/** Resolves output dims for a model id and aspect ratio. Falls back to SDXL dims. */\nexport function resolveHfImageDims(modelId: string, aspectRatio: AspectRatio): ImageDims {\n const entry = MODEL_DIM_TABLE.find((e) => e.pattern.test(modelId));\n return (entry?.dims ?? DEFAULT_DIMS)[aspectRatio];\n}\n\n/** Returns true if the model id matches a known inpainting variant (mask supported). */\nexport function isHfInpaintingModel(modelId: string): boolean {\n return /inpaint|kontext/i.test(modelId);\n}\n",
10
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport { getLogger } from \"@workglow/util/worker\";\n\nimport { blobToImageValue } from \"@workglow/ai/provider-utils\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName } from \"./HFI_Client\";\nimport { resolveHfImageDims } from \"./HFI_AspectRatio\";\n\nfunction modelIdOf(model: ModelConfig | undefined): string {\n return (\n model?.model_id ??\n (model?.provider_config as { model_name?: string } | undefined)?.model_name ??\n \"huggingface\"\n );\n}\n\n/**\n * One-shot run fn. HF Inference does not support partial image streaming,\n * so we run the request, emit one snapshot, then finish.\n */\nexport const HFI_ImageGenerate_Stream: AiProviderRunFn<\n ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\n const logger = getLogger();\n const timer = `hfi:ImageGenerate:${getModelName(model)}`;\n logger.time(timer);\n\n let result: ImageGenerateTaskOutput;\n try {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const dims = resolveHfImageDims(modelName, (input.aspectRatio as any) ?? \"1:1\");\n\n const blob: Blob = await client.textToImage(\n {\n model: modelName,\n inputs: input.prompt,\n parameters: {\n width: dims.width,\n height: dims.height,\n seed: input.seed,\n negative_prompt: input.negativePrompt,\n ...(input.providerOptions ?? {}),\n },\n },\n { outputType: \"blob\" as const, signal }\n );\n const image = await blobToImageValue(blob);\n logger.timeEnd(timer);\n result = { image };\n } catch (err) {\n if (\n err instanceof ImageGenerationProviderError ||\n err instanceof ImageGenerationContentPolicyError\n )\n throw err;\n const msg = err instanceof Error ? err.message : \"unknown error\";\n if (/NSFW|safety|policy/i.test(msg))\n throw new ImageGenerationContentPolicyError(modelIdOf(model), msg);\n throw new ImageGenerationProviderError(modelIdOf(model), msg, { cause: err as Error });\n }\n\n if (signal.aborted) return;\n emit({ type: \"finish\", data: result });\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 ModelInfoTaskInput,\n ModelInfoTaskOutput,\n} from \"@workglow/ai\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nexport const HFI_ModelInfo: AiProviderRunFn<\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, _signal, emit) => {\n if (input.detail === \"dimensions\") {\n const pc = model?.provider_config as Record<string, unknown>;\n const native_dimensions =\n typeof pc?.native_dimensions === \"number\" ? pc.native_dimensions : undefined;\n const mrl = typeof pc?.mrl === \"boolean\" ? pc.mrl : false;\n emit({\n type: \"finish\",\n data: {\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 ...(native_dimensions !== undefined ? { native_dimensions } : {}),\n ...(mrl ? { mrl } : {}),\n },\n });\n return;\n }\n emit({\n type: \"finish\",\n data: {\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};\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 ModelSearchResultItem,\n ModelSearchTaskInput,\n ModelSearchTaskOutput,\n} from \"@workglow/ai\";\nimport { mapHfModelResult, searchHfModels } from \"@workglow/ai/provider-utils\";\nimport { filterLabeledModelsByQuery } from \"@workglow/ai/provider-utils\";\nimport { HF_INFERENCE } from \"./HFI_Constants\";\n\n/** Models with explicit capability overrides (HF pipeline tags don't cover image.generation/image.editing). */\nconst HFI_IMAGE_MODELS: Array<{ id: string; capabilities: string[] }> = [\n { id: \"black-forest-labs/FLUX.1-schnell\", capabilities: [\"image.generation\"] },\n { id: \"black-forest-labs/FLUX.1-Kontext-dev\", capabilities: [\"image.editing\"] },\n];\n\nfunction buildFallbackResults(): ModelSearchResultItem[] {\n return HFI_IMAGE_MODELS.map((m) => ({\n id: m.id,\n label: m.id,\n description: \"\",\n record: {\n model_id: m.id,\n provider: HF_INFERENCE,\n title: m.id.split(\"/\").pop() ?? m.id,\n description: \"\",\n capabilities: m.capabilities,\n provider_config: { model_name: m.id },\n metadata: {},\n },\n raw: m,\n }));\n}\n\nexport const HFI_ModelSearch: AiProviderRunFn<\n ModelSearchTaskInput,\n ModelSearchTaskOutput\n> = async (input, _model, signal, emit) => {\n const query = input.query?.trim() ?? \"\";\n if (!input.credential_key) {\n const fallback = buildFallbackResults();\n const labeled = fallback.map((r) => ({ label: r.label, value: r.id }));\n const filtered = filterLabeledModelsByQuery(labeled, query).map(\n (m) => fallback.find((r) => r.id === m.value)!\n );\n emit({ type: \"finish\", data: { results: filtered } });\n return;\n }\n\n const entries = await searchHfModels(query, undefined, undefined, signal, input.credential_key);\n const results = entries.map((entry) => {\n const imageEntry = HFI_IMAGE_MODELS.find((m) => m.id === entry.id);\n const mapped = mapHfModelResult(entry, HF_INFERENCE);\n if (imageEntry) {\n // Merge explicit task list into the mapped record.\n mapped.record.capabilities = imageEntry.capabilities;\n }\n return mapped;\n });\n emit({ type: \"finish\", data: { results } });\n};\n",
13
9
  "/**\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",
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 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, signal, emit) => {\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 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 logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name, batch: true });\n emit({\n type: \"finish\",\n data: {\n vector: embeddings.map((embedding) => new Float32Array(embedding as unknown as number[])),\n },\n });\n return;\n }\n\n const embedding = await client.featureExtraction(\n {\n model: modelName,\n inputs: input.text,\n },\n { signal }\n );\n\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n emit({\n type: \"finish\",\n data: { vector: new Float32Array(embedding as unknown as number[]) },\n });\n};\n",
15
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n} from \"@workglow/ai\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_TextGeneration_Stream: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\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 emit({ type: \"text-delta\", port: \"text\", textDelta: delta });\n }\n }\n emit({ type: \"finish\", data: {} as TextGenerationTaskOutput });\n};\n",
16
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n} from \"@workglow/ai\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_TextRewriter_Stream: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\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 emit({ type: \"text-delta\", port: \"text\", textDelta: delta });\n }\n }\n emit({ type: \"finish\", data: {} as TextRewriterTaskOutput });\n};\n",
17
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n} from \"@workglow/ai\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_TextSummary_Stream: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\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 emit({ type: \"text-delta\", port: \"text\", textDelta: delta });\n }\n }\n emit({ type: \"finish\", data: {} as TextSummaryTaskOutput });\n};\n",
18
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { toOpenAIMessages } from \"@workglow/ai/worker\";\nimport type {\n AiProviderRunFn,\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n} from \"@workglow/ai\";\nimport {\n accumulateOpenAIStream,\n buildOpenAITools,\n mapOpenAIToolChoice,\n} from \"@workglow/ai/provider-utils\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_ToolCalling_Stream: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const tools = buildOpenAITools(input.tools);\n const messages = toOpenAIMessages(input);\n const toolChoice = mapOpenAIToolChoice(input.toolChoice, false);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const params: any = {\n model: modelName,\n messages,\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n provider,\n stream: true,\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 for await (const e of accumulateOpenAIStream(stream)) { emit(e); }\n};\n",
19
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFnRegistration } from \"@workglow/ai\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport {\n HFI_IMAGE_EDITING,\n HFI_IMAGE_GENERATION,\n HFI_MODEL_INFO,\n HFI_MODEL_SEARCH,\n HFI_TEXT_EMBEDDING,\n HFI_TEXT_GENERATION,\n HFI_TEXT_REWRITER,\n HFI_TEXT_SUMMARY,\n HFI_TOOL_USE,\n} from \"./HFI_CapabilitySets\";\n\nexport { loadHfInferenceSDK, getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nimport { HFI_ImageEdit_Stream } from \"./HFI_ImageEdit\";\nimport { HFI_ImageGenerate_Stream } from \"./HFI_ImageGenerate\";\nimport { HFI_ModelInfo } from \"./HFI_ModelInfo\";\nimport { HFI_ModelSearch } from \"./HFI_ModelSearch\";\nimport { HFI_TextEmbedding } from \"./HFI_TextEmbedding\";\nimport { HFI_TextGeneration_Stream } from \"./HFI_TextGeneration\";\nimport { HFI_TextRewriter_Stream } from \"./HFI_TextRewriter\";\nimport { HFI_TextSummary_Stream } from \"./HFI_TextSummary\";\nimport { HFI_ToolCalling_Stream } from \"./HFI_ToolCalling\";\n\n/**\n * Unified `[\"text.generation\"]` run-fn. {@link AiChatTask} and\n * {@link TextGenerationTask} share this registration; discriminates on\n * `Array.isArray(input.messages) && input.messages.length > 0` to route to\n * the chat or prompt path. Because HFI doesn't have a separate chat stream\n * helper, both paths run through `HFI_TextGeneration_Stream` — the SDK\n * accepts both shapes.\n */\nconst HFI_TextGeneration_Unified = HFI_TextGeneration_Stream;\n\nexport const HFI_RUN_FNS: readonly AiProviderRunFnRegistration<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n HfInferenceModelConfig\n>[] = [\n { serves: HFI_TEXT_GENERATION, runFn: HFI_TextGeneration_Unified },\n { serves: HFI_TOOL_USE, runFn: HFI_ToolCalling_Stream },\n { serves: HFI_TEXT_REWRITER, runFn: HFI_TextRewriter_Stream },\n { serves: HFI_TEXT_SUMMARY, runFn: HFI_TextSummary_Stream },\n { serves: HFI_TEXT_EMBEDDING, runFn: HFI_TextEmbedding },\n { serves: HFI_IMAGE_GENERATION, runFn: HFI_ImageGenerate_Stream },\n { serves: HFI_IMAGE_EDITING, runFn: HFI_ImageEdit_Stream },\n { serves: HFI_MODEL_SEARCH, runFn: HFI_ModelSearch },\n { serves: HFI_MODEL_INFO, runFn: HFI_ModelInfo },\n];\n",
20
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AiProvider } from \"@workglow/ai\";\nimport type { Capability, ModelRecord } from \"@workglow/ai\";\nimport { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport { HF_INFERENCE } from \"./common/HFI_Constants\";\nimport {\n hfInferenceWorkerRunFnSpecs,\n inferHfInferenceCapabilities,\n} from \"./common/HFI_Capabilities\";\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 createCloudProviderClass<HfInferenceModelConfig>(\n AiProvider,\n {\n name: HF_INFERENCE,\n displayName: \"Hugging Face Inference\",\n }\n) {\n override inferCapabilities(model: ModelRecord): readonly Capability[] {\n return inferHfInferenceCapabilities(model);\n }\n\n protected override workerRunFnSpecs(): readonly { serves: readonly Capability[] }[] {\n return hfInferenceWorkerRunFnSpecs();\n }\n}\n",
10
+ "/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Capability } from \"@workglow/ai/worker\";\n\n/**\n * Single source of truth for HuggingFace Inference's capability sets.\n *\n * Both `HFI_RUN_FNS` (worker-side registration) and `workerRunFnSpecs()`\n * (main-thread proxy declaration) derive their `serves` arrays from these\n * named exports. SDK-free so the main thread can import without paying the\n * `@huggingface/inference` cost.\n */\nexport const HFI_TEXT_GENERATION = [\"text.generation\"] as const satisfies Capability[];\nexport const HFI_TOOL_USE = [\"text.generation\", \"tool-use\"] as const satisfies Capability[];\nexport const HFI_TEXT_REWRITER = [\"text.rewriter\"] as const satisfies Capability[];\nexport const HFI_TEXT_SUMMARY = [\"text.summary\"] as const satisfies Capability[];\nexport const HFI_TEXT_EMBEDDING = [\"text.embedding\"] as const satisfies Capability[];\nexport const HFI_IMAGE_GENERATION = [\"image.generation\"] as const satisfies Capability[];\nexport const HFI_IMAGE_EDITING = [\"image.editing\"] as const satisfies Capability[];\nexport const HFI_MODEL_SEARCH = [\"model.search\"] as const satisfies Capability[];\nexport const HFI_MODEL_INFO = [\"model.info\"] as const satisfies Capability[];\n\n/** Aggregated list for `workerRunFnSpecs()` derivation. Order MUST match `HFI_RUN_FNS`. */\nexport const HFI_CAPABILITY_SETS = [\n HFI_TEXT_GENERATION,\n HFI_TOOL_USE,\n HFI_TEXT_REWRITER,\n HFI_TEXT_SUMMARY,\n HFI_TEXT_EMBEDDING,\n HFI_IMAGE_GENERATION,\n HFI_IMAGE_EDITING,\n HFI_MODEL_SEARCH,\n HFI_MODEL_INFO,\n] as const;\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 ImageEditTaskInput,\n ImageEditTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport type { ImageValue } from \"@workglow/util/media\";\nimport { getLogger } from \"@workglow/util/worker\";\n\nimport { blobToImageValue, imageValueToPngBytes } from \"@workglow/ai/provider-utils\";\nimport { resolveHfImageDims } from \"./HFI_AspectRatio\";\nimport { getClient, getModelName } from \"./HFI_Client\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nfunction modelIdOf(model: ModelConfig | undefined): string {\n return (\n model?.model_id ??\n (model?.provider_config as { model_name?: string } | undefined)?.model_name ??\n \"huggingface\"\n );\n}\n\n/**\n * Convert an inbound `ImageValue` (or a legacy data URI string) to a PNG Blob.\n */\nasync function gpuImageToBlob(image: ImageValue | string): Promise<Blob> {\n const bytes = await imageValueToPngBytes(image);\n // Copy into a fresh ArrayBuffer to avoid SharedArrayBuffer typing issues\n // with BlobPart.\n const buffer: ArrayBuffer =\n bytes.buffer instanceof ArrayBuffer\n ? bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength)\n : new Uint8Array(bytes).buffer;\n return new Blob([buffer], { type: \"image/png\" });\n}\n\n/**\n * One-shot run fn. HF Inference does not support partial image streaming,\n * so we run the request, emit one snapshot, then finish.\n */\nexport const HFI_ImageEdit_Stream: AiProviderRunFn<\n ImageEditTaskInput,\n ImageEditTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\n const logger = getLogger();\n const timer = `hfi:ImageEdit:${getModelName(model)}`;\n logger.time(timer);\n\n let result: ImageEditTaskOutput;\n try {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const dims = resolveHfImageDims(modelName, (input.aspectRatio as any) ?? \"1:1\");\n\n // image/mask may be data URI strings if the input crossed an earlier\n // worker boundary in legacy form; otherwise they are ImageValue POJOs.\n const inputBlob = await gpuImageToBlob(input.image as unknown as ImageValue | string);\n const params: Record<string, unknown> = {\n width: dims.width,\n height: dims.height,\n seed: input.seed,\n negative_prompt: input.negativePrompt,\n prompt: input.prompt,\n ...(input.providerOptions ?? {}),\n };\n if (input.mask) {\n // Validator (Task 17) rejects masks on non-inpainting models before this code runs.\n const maskBlob = await gpuImageToBlob(input.mask as unknown as ImageValue | string);\n params.mask_image = maskBlob;\n }\n\n const blob: Blob = await client.imageToImage(\n {\n model: modelName,\n inputs: inputBlob,\n parameters: params,\n },\n { signal }\n );\n const image = await blobToImageValue(blob);\n logger.timeEnd(timer);\n result = { image };\n } catch (err) {\n if (\n err instanceof ImageGenerationProviderError ||\n err instanceof ImageGenerationContentPolicyError\n )\n throw err;\n const msg = err instanceof Error ? err.message : \"unknown error\";\n if (/NSFW|safety|policy/i.test(msg))\n throw new ImageGenerationContentPolicyError(modelIdOf(model), msg);\n throw new ImageGenerationProviderError(modelIdOf(model), msg, { cause: err as Error });\n }\n\n if (signal.aborted) return;\n emit({ type: \"finish\", data: result });\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 ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport { getLogger } from \"@workglow/util/worker\";\n\nimport { blobToImageValue } from \"@workglow/ai/provider-utils\";\nimport { resolveHfImageDims } from \"./HFI_AspectRatio\";\nimport { getClient, getModelName } from \"./HFI_Client\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nfunction modelIdOf(model: ModelConfig | undefined): string {\n return (\n model?.model_id ??\n (model?.provider_config as { model_name?: string } | undefined)?.model_name ??\n \"huggingface\"\n );\n}\n\n/**\n * One-shot run fn. HF Inference does not support partial image streaming,\n * so we run the request, emit one snapshot, then finish.\n */\nexport const HFI_ImageGenerate_Stream: AiProviderRunFn<\n ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\n const logger = getLogger();\n const timer = `hfi:ImageGenerate:${getModelName(model)}`;\n logger.time(timer);\n\n let result: ImageGenerateTaskOutput;\n try {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const dims = resolveHfImageDims(modelName, (input.aspectRatio as any) ?? \"1:1\");\n\n const blob: Blob = await client.textToImage(\n {\n model: modelName,\n inputs: input.prompt,\n parameters: {\n width: dims.width,\n height: dims.height,\n seed: input.seed,\n negative_prompt: input.negativePrompt,\n ...(input.providerOptions ?? {}),\n },\n },\n { outputType: \"blob\" as const, signal }\n );\n const image = await blobToImageValue(blob);\n logger.timeEnd(timer);\n result = { image };\n } catch (err) {\n if (\n err instanceof ImageGenerationProviderError ||\n err instanceof ImageGenerationContentPolicyError\n )\n throw err;\n const msg = err instanceof Error ? err.message : \"unknown error\";\n if (/NSFW|safety|policy/i.test(msg))\n throw new ImageGenerationContentPolicyError(modelIdOf(model), msg);\n throw new ImageGenerationProviderError(modelIdOf(model), msg, { cause: err as Error });\n }\n\n if (signal.aborted) return;\n emit({ type: \"finish\", data: result });\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, 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, model, _signal, emit) => {\n if (input.detail === \"dimensions\") {\n const pc = model?.provider_config as Record<string, unknown>;\n const native_dimensions =\n typeof pc?.native_dimensions === \"number\" ? pc.native_dimensions : undefined;\n const mrl = typeof pc?.mrl === \"boolean\" ? pc.mrl : false;\n emit({\n type: \"finish\",\n data: {\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 ...(native_dimensions !== undefined ? { native_dimensions } : {}),\n ...(mrl ? { mrl } : {}),\n },\n });\n return;\n }\n emit({\n type: \"finish\",\n data: {\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};\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 ModelSearchResultItem,\n ModelSearchTaskInput,\n ModelSearchTaskOutput,\n} from \"@workglow/ai\";\nimport {\n filterLabeledModelsByQuery,\n mapHfModelResult,\n searchHfModels,\n} from \"@workglow/ai/provider-utils\";\nimport { HF_INFERENCE } from \"./HFI_Constants\";\n\n/** Models with explicit capability overrides (HF pipeline tags don't cover image.generation/image.editing). */\nconst HFI_IMAGE_MODELS: Array<{ id: string; capabilities: string[] }> = [\n { id: \"black-forest-labs/FLUX.1-schnell\", capabilities: [\"image.generation\"] },\n { id: \"black-forest-labs/FLUX.1-Kontext-dev\", capabilities: [\"image.editing\"] },\n];\n\nfunction buildFallbackResults(): ModelSearchResultItem[] {\n return HFI_IMAGE_MODELS.map((m) => ({\n id: m.id,\n label: m.id,\n description: \"\",\n record: {\n model_id: m.id,\n provider: HF_INFERENCE,\n title: m.id.split(\"/\").pop() ?? m.id,\n description: \"\",\n capabilities: m.capabilities,\n provider_config: { model_name: m.id },\n metadata: {},\n },\n raw: m,\n }));\n}\n\nexport const HFI_ModelSearch: AiProviderRunFn<ModelSearchTaskInput, ModelSearchTaskOutput> = async (\n input,\n _model,\n signal,\n emit\n) => {\n const query = input.query?.trim() ?? \"\";\n if (!input.credential_key) {\n const fallback = buildFallbackResults();\n const labeled = fallback.map((r) => ({ label: r.label, value: r.id }));\n const filtered = filterLabeledModelsByQuery(labeled, query).map(\n (m) => fallback.find((r) => r.id === m.value)!\n );\n emit({ type: \"finish\", data: { results: filtered } });\n return;\n }\n\n const entries = await searchHfModels(query, undefined, undefined, signal, input.credential_key);\n const results = entries.map((entry) => {\n const imageEntry = HFI_IMAGE_MODELS.find((m) => m.id === entry.id);\n const mapped = mapHfModelResult(entry, HF_INFERENCE);\n if (imageEntry) {\n // Merge explicit task list into the mapped record.\n mapped.record.capabilities = imageEntry.capabilities;\n }\n return mapped;\n });\n emit({ type: \"finish\", data: { results } });\n};\n",
15
+ "/**\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 { getClient, getModelName } from \"./HFI_Client\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nexport const HFI_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\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 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 logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name, batch: true });\n emit({\n type: \"finish\",\n data: {\n vector: embeddings.map((embedding) => new Float32Array(embedding as unknown as number[])),\n },\n });\n return;\n }\n\n const embedding = await client.featureExtraction(\n {\n model: modelName,\n inputs: input.text,\n },\n { signal }\n );\n\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n emit({\n type: \"finish\",\n data: { vector: new Float32Array(embedding as unknown as number[]) },\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 {\n AiProviderRunFn,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n} from \"@workglow/ai\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nexport const HFI_TextGeneration_Stream: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\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 emit({ type: \"text-delta\", port: \"text\", textDelta: delta });\n }\n }\n emit({ type: \"finish\", data: {} as TextGenerationTaskOutput });\n};\n",
17
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, TextRewriterTaskInput, TextRewriterTaskOutput } from \"@workglow/ai\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nexport const HFI_TextRewriter_Stream: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\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 emit({ type: \"text-delta\", port: \"text\", textDelta: delta });\n }\n }\n emit({ type: \"finish\", data: {} as TextRewriterTaskOutput });\n};\n",
18
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, TextSummaryTaskInput, TextSummaryTaskOutput } from \"@workglow/ai\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nexport const HFI_TextSummary_Stream: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\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 emit({ type: \"text-delta\", port: \"text\", textDelta: delta });\n }\n }\n emit({ type: \"finish\", data: {} as TextSummaryTaskOutput });\n};\n",
19
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, ToolCallingTaskInput, ToolCallingTaskOutput } from \"@workglow/ai\";\nimport {\n accumulateOpenAIStream,\n buildOpenAITools,\n mapOpenAIToolChoice,\n} from \"@workglow/ai/provider-utils\";\nimport { toOpenAIMessages } from \"@workglow/ai/worker\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nexport const HFI_ToolCalling_Stream: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const tools = buildOpenAITools(input.tools);\n const messages = toOpenAIMessages(input);\n const toolChoice = mapOpenAIToolChoice(input.toolChoice, false);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const params: any = {\n model: modelName,\n messages,\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n provider,\n stream: true,\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 for await (const e of accumulateOpenAIStream(stream)) {\n emit(e);\n }\n};\n",
20
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFnRegistration } from \"@workglow/ai\";\nimport {\n HFI_IMAGE_EDITING,\n HFI_IMAGE_GENERATION,\n HFI_MODEL_INFO,\n HFI_MODEL_SEARCH,\n HFI_TEXT_EMBEDDING,\n HFI_TEXT_GENERATION,\n HFI_TEXT_REWRITER,\n HFI_TEXT_SUMMARY,\n HFI_TOOL_USE,\n} from \"./HFI_CapabilitySets\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nexport { getClient, getModelName, getProvider, loadHfInferenceSDK } from \"./HFI_Client\";\n\nimport { HFI_ImageEdit_Stream } from \"./HFI_ImageEdit\";\nimport { HFI_ImageGenerate_Stream } from \"./HFI_ImageGenerate\";\nimport { HFI_ModelInfo } from \"./HFI_ModelInfo\";\nimport { HFI_ModelSearch } from \"./HFI_ModelSearch\";\nimport { HFI_TextEmbedding } from \"./HFI_TextEmbedding\";\nimport { HFI_TextGeneration_Stream } from \"./HFI_TextGeneration\";\nimport { HFI_TextRewriter_Stream } from \"./HFI_TextRewriter\";\nimport { HFI_TextSummary_Stream } from \"./HFI_TextSummary\";\nimport { HFI_ToolCalling_Stream } from \"./HFI_ToolCalling\";\n\n/**\n * Unified `[\"text.generation\"]` run-fn. {@link AiChatTask} and\n * {@link TextGenerationTask} share this registration; discriminates on\n * `Array.isArray(input.messages) && input.messages.length > 0` to route to\n * the chat or prompt path. Because HFI doesn't have a separate chat stream\n * helper, both paths run through `HFI_TextGeneration_Stream` — the SDK\n * accepts both shapes.\n */\nconst HFI_TextGeneration_Unified = HFI_TextGeneration_Stream;\n\nexport const HFI_RUN_FNS: readonly AiProviderRunFnRegistration<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n HfInferenceModelConfig\n>[] = [\n { serves: HFI_TEXT_GENERATION, runFn: HFI_TextGeneration_Unified },\n { serves: HFI_TOOL_USE, runFn: HFI_ToolCalling_Stream },\n { serves: HFI_TEXT_REWRITER, runFn: HFI_TextRewriter_Stream },\n { serves: HFI_TEXT_SUMMARY, runFn: HFI_TextSummary_Stream },\n { serves: HFI_TEXT_EMBEDDING, runFn: HFI_TextEmbedding },\n { serves: HFI_IMAGE_GENERATION, runFn: HFI_ImageGenerate_Stream },\n { serves: HFI_IMAGE_EDITING, runFn: HFI_ImageEdit_Stream },\n { serves: HFI_MODEL_SEARCH, runFn: HFI_ModelSearch },\n { serves: HFI_MODEL_INFO, runFn: HFI_ModelInfo },\n];\n",
21
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Capability, ModelRecord } from \"@workglow/ai\";\nimport { AiProvider } from \"@workglow/ai\";\nimport { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport {\n hfInferenceWorkerRunFnSpecs,\n inferHfInferenceCapabilities,\n} from \"./common/HFI_Capabilities\";\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 createCloudProviderClass<HfInferenceModelConfig>(\n AiProvider,\n {\n name: HF_INFERENCE,\n displayName: \"Hugging Face Inference\",\n }\n) {\n override inferCapabilities(model: ModelRecord): readonly Capability[] {\n return inferHfInferenceCapabilities(model);\n }\n\n protected override workerRunFnSpecs(): readonly { serves: readonly Capability[] }[] {\n return hfInferenceWorkerRunFnSpecs();\n }\n}\n",
21
22
  "/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Capability, ModelRecord } from \"@workglow/ai/worker\";\nimport { HFI_CAPABILITY_SETS } from \"./HFI_CapabilitySets\";\n\nexport const HFI_RUN_FN_SPECS = HFI_CAPABILITY_SETS.map((serves) => ({ serves }));\n\nexport function hfInferenceWorkerRunFnSpecs(): readonly {\n readonly serves: readonly Capability[];\n}[] {\n return HFI_RUN_FN_SPECS;\n}\n\ntype CapabilityHints = Pick<ModelRecord, \"model_id\" | \"provider_config\" | \"capabilities\">;\n\n/**\n * Heuristic capability inference for a HuggingFace Inference {@link ModelRecord}.\n *\n * HF Inference catalog items are HF Hub repo IDs (e.g. `mistralai/Mistral-7B-Instruct`,\n * `black-forest-labs/FLUX.1-dev`). Like HFT, declared capabilities (set by\n * model-search) win. Otherwise fall back to id patterns.\n */\nexport function inferHfInferenceCapabilities(model: CapabilityHints): readonly Capability[] {\n const declared = (model.capabilities as readonly Capability[] | undefined) ?? [];\n if (declared.length > 0) return declared;\n\n const id = String(\n model.model_id ??\n (model.provider_config as { model_name?: string } | undefined)?.model_name ??\n \"\"\n );\n const baseName = id.split(\"/\").pop() ?? id;\n\n // Image generation / editing (Stable Diffusion, FLUX, SDXL, etc).\n if (/flux|stable-diffusion|sd-|sdxl|dall-e|kandinsky|wuerstchen|playground/i.test(baseName)) {\n return [\"image.generation\", \"image.editing\", \"model.info\", \"model.search\"];\n }\n\n // Embeddings.\n if (/embed|minilm|bge-|gte-|e5-/i.test(baseName)) {\n return [\"text.embedding\", \"model.info\", \"model.search\"];\n }\n\n // Generative text/chat models (Llama, Mistral, Mixtral, Gemma, Phi, Qwen, etc).\n if (\n /llama|mistral|mixtral|gemma|phi|qwen|falcon|yi|deepseek|command|claude|gpt-/i.test(baseName)\n ) {\n return [\n \"text.generation\",\n \"text.rewriter\",\n \"text.summary\",\n \"tool-use\",\n \"model.info\",\n \"model.search\",\n ];\n }\n\n return [\"model.search\", \"model.info\"];\n}\n",
22
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AiImageOutputTask, ProviderUnsupportedFeatureError } from \"@workglow/ai\";\nimport type { ModelConfig } from \"@workglow/ai\";\n\nimport { HF_INFERENCE } from \"./HFI_Constants\";\nimport { isHfInpaintingModel } from \"./HFI_AspectRatio\";\n\nexport function registerHfImageValidator(): void {\n AiImageOutputTask.registerProviderImageValidator(\n HF_INFERENCE,\n (taskType, input, model: ModelConfig) => {\n if (taskType !== \"ImageEditTask\") return;\n const modelId = model.model_id ?? \"\";\n const modelName =\n (model.provider_config as { model_name?: string } | undefined)?.model_name ?? modelId;\n\n const additional = input[\"additionalImages\"] as unknown[] | undefined;\n if (Array.isArray(additional) && additional.length > 0) {\n throw new ProviderUnsupportedFeatureError(\n \"additionalImages\",\n modelId,\n \"HF Inference image-to-image only supports a single input image\"\n );\n }\n if (\n input[\"mask\"] !== undefined &&\n input[\"mask\"] !== null &&\n !isHfInpaintingModel(modelName)\n ) {\n throw new ProviderUnsupportedFeatureError(\n \"mask\",\n modelId,\n \"Mask is only supported on HF inpainting models (e.g., FLUX.1-Kontext-dev)\"\n );\n }\n }\n );\n}\n",
23
23
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { registerProviderWorker } from \"@workglow/ai/provider-utils\";\nimport { HFI_RUN_FNS } from \"./common/HFI_JobRunFns\";\nimport { HfInferenceProvider } from \"./HfInferenceProvider\";\n\nexport async function registerHfInferenceWorker(): Promise<void> {\n await registerProviderWorker(\n (ws) => new HfInferenceProvider(HFI_RUN_FNS).registerOnWorkerServer(ws),\n \"Hugging Face Inference\"\n );\n}\n",
24
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AiProvider } from \"@workglow/ai/worker\";\nimport type { Capability, ModelRecord } from \"@workglow/ai/worker\";\nimport { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport { HF_INFERENCE } from \"./common/HFI_Constants\";\nimport {\n hfInferenceWorkerRunFnSpecs,\n inferHfInferenceCapabilities,\n} from \"./common/HFI_Capabilities\";\nimport type { HfInferenceModelConfig } from \"./common/HFI_ModelSchema\";\n\n/**\n * Worker-server registration for Hugging Face Inference. Imports `AiProvider`\n * from `@workglow/ai/worker` so the SDK is only loaded in the worker.\n */\nexport class HfInferenceProvider extends createCloudProviderClass<HfInferenceModelConfig>(\n AiProvider,\n {\n name: HF_INFERENCE,\n displayName: \"Hugging Face Inference\",\n }\n) {\n override inferCapabilities(model: ModelRecord): readonly Capability[] {\n return inferHfInferenceCapabilities(model);\n }\n\n protected override workerRunFnSpecs(): readonly { serves: readonly Capability[] }[] {\n return hfInferenceWorkerRunFnSpecs();\n }\n}\n"
24
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport type { Capability, ModelRecord } from \"@workglow/ai/worker\";\nimport { AiProvider } from \"@workglow/ai/worker\";\nimport {\n hfInferenceWorkerRunFnSpecs,\n inferHfInferenceCapabilities,\n} from \"./common/HFI_Capabilities\";\nimport { HF_INFERENCE } from \"./common/HFI_Constants\";\nimport type { HfInferenceModelConfig } from \"./common/HFI_ModelSchema\";\n\n/**\n * Worker-server registration for Hugging Face Inference. Imports `AiProvider`\n * from `@workglow/ai/worker` so the SDK is only loaded in the worker.\n */\nexport class HfInferenceProvider extends createCloudProviderClass<HfInferenceModelConfig>(\n AiProvider,\n {\n name: HF_INFERENCE,\n displayName: \"Hugging Face Inference\",\n }\n) {\n override inferCapabilities(model: ModelRecord): readonly Capability[] {\n return inferHfInferenceCapabilities(model);\n }\n\n protected override workerRunFnSpecs(): readonly { serves: readonly Capability[] }[] {\n return hfInferenceWorkerRunFnSpecs();\n }\n}\n"
25
25
  ],
26
- "mappings": "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",
27
- "debugId": "1CA6F5315201146E64756E2164756E21",
26
+ "mappings": "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",
27
+ "debugId": "E241C0908BDCEBF964756E2164756E21",
28
28
  "names": []
29
29
  }
package/dist/ai.js CHANGED
@@ -106,8 +106,11 @@ var HfInferenceModelConfigSchema = {
106
106
  additionalProperties: false
107
107
  };
108
108
  // src/ai/common/HFI_ModelSearch.ts
109
- import { mapHfModelResult, searchHfModels } from "@workglow/ai/provider-utils";
110
- import { filterLabeledModelsByQuery } from "@workglow/ai/provider-utils";
109
+ import {
110
+ filterLabeledModelsByQuery,
111
+ mapHfModelResult,
112
+ searchHfModels
113
+ } from "@workglow/ai/provider-utils";
111
114
  var HFI_IMAGE_MODELS = [
112
115
  { id: "black-forest-labs/FLUX.1-schnell", capabilities: ["image.generation"] },
113
116
  { id: "black-forest-labs/FLUX.1-Kontext-dev", capabilities: ["image.editing"] }
@@ -498,12 +501,12 @@ var HFI_TextSummary_Stream = async (input, model, signal, emit) => {
498
501
  };
499
502
 
500
503
  // src/ai/common/HFI_ToolCalling.ts
501
- import { toOpenAIMessages } from "@workglow/ai/worker";
502
504
  import {
503
505
  accumulateOpenAIStream,
504
506
  buildOpenAITools,
505
507
  mapOpenAIToolChoice
506
508
  } from "@workglow/ai/provider-utils";
509
+ import { toOpenAIMessages } from "@workglow/ai/worker";
507
510
  var HFI_ToolCalling_Stream = async (input, model, signal, emit) => {
508
511
  const client = await getClient(model);
509
512
  const modelName = getModelName(model);
@@ -562,4 +565,4 @@ export {
562
565
  HFI_ModelSearch
563
566
  };
564
567
 
565
- //# debugId=92F7DC0F1020AD2564756E2164756E21
568
+ //# debugId=1A8B8393C92D67FD64756E2164756E21
package/dist/ai.js.map CHANGED
@@ -4,26 +4,26 @@
4
4
  "sourcesContent": [
5
5
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport type AspectRatio = \"1:1\" | \"16:9\" | \"9:16\" | \"4:3\" | \"3:4\";\n\nexport interface ImageDims {\n width: number;\n height: number;\n}\n\nconst FLUX_DIMS: Record<AspectRatio, ImageDims> = {\n \"1:1\": { width: 1024, height: 1024 },\n \"16:9\": { width: 1344, height: 768 },\n \"9:16\": { width: 768, height: 1344 },\n \"4:3\": { width: 1152, height: 896 },\n \"3:4\": { width: 896, height: 1152 },\n};\n\nconst SDXL_DIMS: Record<AspectRatio, ImageDims> = {\n \"1:1\": { width: 1024, height: 1024 },\n \"16:9\": { width: 1280, height: 720 },\n \"9:16\": { width: 720, height: 1280 },\n \"4:3\": { width: 1024, height: 768 },\n \"3:4\": { width: 768, height: 1024 },\n};\n\nconst DEFAULT_DIMS: Record<AspectRatio, ImageDims> = SDXL_DIMS;\n\nconst MODEL_DIM_TABLE: Array<{ pattern: RegExp; dims: Record<AspectRatio, ImageDims> }> = [\n { pattern: /^black-forest-labs\\/FLUX/i, dims: FLUX_DIMS },\n { pattern: /^stabilityai\\/.*-xl/i, dims: SDXL_DIMS },\n];\n\n/** Resolves output dims for a model id and aspect ratio. Falls back to SDXL dims. */\nexport function resolveHfImageDims(modelId: string, aspectRatio: AspectRatio): ImageDims {\n const entry = MODEL_DIM_TABLE.find((e) => e.pattern.test(modelId));\n return (entry?.dims ?? DEFAULT_DIMS)[aspectRatio];\n}\n\n/** Returns true if the model id matches a known inpainting variant (mask supported). */\nexport function isHfInpaintingModel(modelId: string): boolean {\n return /inpaint|kontext/i.test(modelId);\n}\n",
6
6
  "/**\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",
7
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AiImageOutputTask, ProviderUnsupportedFeatureError } from \"@workglow/ai\";\nimport type { ModelConfig } from \"@workglow/ai\";\n\nimport { HF_INFERENCE } from \"./HFI_Constants\";\nimport { isHfInpaintingModel } from \"./HFI_AspectRatio\";\n\nexport function registerHfImageValidator(): void {\n AiImageOutputTask.registerProviderImageValidator(\n HF_INFERENCE,\n (taskType, input, model: ModelConfig) => {\n if (taskType !== \"ImageEditTask\") return;\n const modelId = model.model_id ?? \"\";\n const modelName =\n (model.provider_config as { model_name?: string } | undefined)?.model_name ?? modelId;\n\n const additional = input[\"additionalImages\"] as unknown[] | undefined;\n if (Array.isArray(additional) && additional.length > 0) {\n throw new ProviderUnsupportedFeatureError(\n \"additionalImages\",\n modelId,\n \"HF Inference image-to-image only supports a single input image\"\n );\n }\n if (\n input[\"mask\"] !== undefined &&\n input[\"mask\"] !== null &&\n !isHfInpaintingModel(modelName)\n ) {\n throw new ProviderUnsupportedFeatureError(\n \"mask\",\n modelId,\n \"Mask is only supported on HF inpainting models (e.g., FLUX.1-Kontext-dev)\"\n );\n }\n }\n );\n}\n",
7
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { ModelConfig } from \"@workglow/ai\";\nimport { AiImageOutputTask, ProviderUnsupportedFeatureError } from \"@workglow/ai\";\n\nimport { isHfInpaintingModel } from \"./HFI_AspectRatio\";\nimport { HF_INFERENCE } from \"./HFI_Constants\";\n\nexport function registerHfImageValidator(): void {\n AiImageOutputTask.registerProviderImageValidator(\n HF_INFERENCE,\n (taskType, input, model: ModelConfig) => {\n if (taskType !== \"ImageEditTask\") return;\n const modelId = model.model_id ?? \"\";\n const modelName =\n (model.provider_config as { model_name?: string } | undefined)?.model_name ?? modelId;\n\n const additional = input[\"additionalImages\"] as unknown[] | undefined;\n if (Array.isArray(additional) && additional.length > 0) {\n throw new ProviderUnsupportedFeatureError(\n \"additionalImages\",\n modelId,\n \"HF Inference image-to-image only supports a single input image\"\n );\n }\n if (\n input[\"mask\"] !== undefined &&\n input[\"mask\"] !== null &&\n !isHfInpaintingModel(modelName)\n ) {\n throw new ProviderUnsupportedFeatureError(\n \"mask\",\n modelId,\n \"Mask is only supported on HF inpainting models (e.g., FLUX.1-Kontext-dev)\"\n );\n }\n }\n );\n}\n",
8
8
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ModelConfigSchema, ModelRecordSchema } from \"@workglow/ai/worker\";\nimport { DataPortSchemaObject, FromSchema } from \"@workglow/util/worker\";\nimport { HF_INFERENCE } from \"./HFI_Constants\";\n\nexport const HfInferenceModelSchema = {\n type: \"object\",\n properties: {\n provider: {\n const: HF_INFERENCE,\n description: \"Discriminator: Hugging Face Inference API provider.\",\n },\n provider_config: {\n type: \"object\",\n description: \"Hugging Face Inference-specific configuration.\",\n properties: {\n model_name: {\n type: \"string\",\n description:\n \"The Hugging Face model identifier (e.g., 'meta-llama/Llama-3.3-70B-Instruct').\",\n },\n credential_key: {\n type: \"string\",\n format: \"credential\",\n description: \"Key to look up in the credential store for the API key.\",\n \"x-ui-hidden\": true,\n },\n provider: {\n type: \"string\",\n description:\n \"Optional provider to route to specific HF inference providers (e.g., 'fal-ai', 'fireworks-ai').\",\n },\n },\n required: [\"model_name\"],\n additionalProperties: false,\n },\n },\n required: [\"provider\", \"provider_config\"],\n additionalProperties: true,\n} as const satisfies DataPortSchemaObject;\n\nexport const HfInferenceModelRecordSchema = {\n type: \"object\",\n properties: {\n ...ModelRecordSchema.properties,\n ...HfInferenceModelSchema.properties,\n },\n required: [...ModelRecordSchema.required, ...HfInferenceModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type HfInferenceModelRecord = FromSchema<typeof HfInferenceModelRecordSchema>;\n\nexport const HfInferenceModelConfigSchema = {\n type: \"object\",\n properties: {\n ...ModelConfigSchema.properties,\n ...HfInferenceModelSchema.properties,\n },\n required: [...ModelConfigSchema.required, ...HfInferenceModelSchema.required],\n additionalProperties: false,\n} as const satisfies DataPortSchemaObject;\n\nexport type HfInferenceModelConfig = FromSchema<typeof HfInferenceModelConfigSchema>;\n",
9
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ModelSearchResultItem,\n ModelSearchTaskInput,\n ModelSearchTaskOutput,\n} from \"@workglow/ai\";\nimport { mapHfModelResult, searchHfModels } from \"@workglow/ai/provider-utils\";\nimport { filterLabeledModelsByQuery } from \"@workglow/ai/provider-utils\";\nimport { HF_INFERENCE } from \"./HFI_Constants\";\n\n/** Models with explicit capability overrides (HF pipeline tags don't cover image.generation/image.editing). */\nconst HFI_IMAGE_MODELS: Array<{ id: string; capabilities: string[] }> = [\n { id: \"black-forest-labs/FLUX.1-schnell\", capabilities: [\"image.generation\"] },\n { id: \"black-forest-labs/FLUX.1-Kontext-dev\", capabilities: [\"image.editing\"] },\n];\n\nfunction buildFallbackResults(): ModelSearchResultItem[] {\n return HFI_IMAGE_MODELS.map((m) => ({\n id: m.id,\n label: m.id,\n description: \"\",\n record: {\n model_id: m.id,\n provider: HF_INFERENCE,\n title: m.id.split(\"/\").pop() ?? m.id,\n description: \"\",\n capabilities: m.capabilities,\n provider_config: { model_name: m.id },\n metadata: {},\n },\n raw: m,\n }));\n}\n\nexport const HFI_ModelSearch: AiProviderRunFn<\n ModelSearchTaskInput,\n ModelSearchTaskOutput\n> = async (input, _model, signal, emit) => {\n const query = input.query?.trim() ?? \"\";\n if (!input.credential_key) {\n const fallback = buildFallbackResults();\n const labeled = fallback.map((r) => ({ label: r.label, value: r.id }));\n const filtered = filterLabeledModelsByQuery(labeled, query).map(\n (m) => fallback.find((r) => r.id === m.value)!\n );\n emit({ type: \"finish\", data: { results: filtered } });\n return;\n }\n\n const entries = await searchHfModels(query, undefined, undefined, signal, input.credential_key);\n const results = entries.map((entry) => {\n const imageEntry = HFI_IMAGE_MODELS.find((m) => m.id === entry.id);\n const mapped = mapHfModelResult(entry, HF_INFERENCE);\n if (imageEntry) {\n // Merge explicit task list into the mapped record.\n mapped.record.capabilities = imageEntry.capabilities;\n }\n return mapped;\n });\n emit({ type: \"finish\", data: { 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 {\n AiProviderRunFn,\n ModelSearchResultItem,\n ModelSearchTaskInput,\n ModelSearchTaskOutput,\n} from \"@workglow/ai\";\nimport {\n filterLabeledModelsByQuery,\n mapHfModelResult,\n searchHfModels,\n} from \"@workglow/ai/provider-utils\";\nimport { HF_INFERENCE } from \"./HFI_Constants\";\n\n/** Models with explicit capability overrides (HF pipeline tags don't cover image.generation/image.editing). */\nconst HFI_IMAGE_MODELS: Array<{ id: string; capabilities: string[] }> = [\n { id: \"black-forest-labs/FLUX.1-schnell\", capabilities: [\"image.generation\"] },\n { id: \"black-forest-labs/FLUX.1-Kontext-dev\", capabilities: [\"image.editing\"] },\n];\n\nfunction buildFallbackResults(): ModelSearchResultItem[] {\n return HFI_IMAGE_MODELS.map((m) => ({\n id: m.id,\n label: m.id,\n description: \"\",\n record: {\n model_id: m.id,\n provider: HF_INFERENCE,\n title: m.id.split(\"/\").pop() ?? m.id,\n description: \"\",\n capabilities: m.capabilities,\n provider_config: { model_name: m.id },\n metadata: {},\n },\n raw: m,\n }));\n}\n\nexport const HFI_ModelSearch: AiProviderRunFn<ModelSearchTaskInput, ModelSearchTaskOutput> = async (\n input,\n _model,\n signal,\n emit\n) => {\n const query = input.query?.trim() ?? \"\";\n if (!input.credential_key) {\n const fallback = buildFallbackResults();\n const labeled = fallback.map((r) => ({ label: r.label, value: r.id }));\n const filtered = filterLabeledModelsByQuery(labeled, query).map(\n (m) => fallback.find((r) => r.id === m.value)!\n );\n emit({ type: \"finish\", data: { results: filtered } });\n return;\n }\n\n const entries = await searchHfModels(query, undefined, undefined, signal, input.credential_key);\n const results = entries.map((entry) => {\n const imageEntry = HFI_IMAGE_MODELS.find((m) => m.id === entry.id);\n const mapped = mapHfModelResult(entry, HF_INFERENCE);\n if (imageEntry) {\n // Merge explicit task list into the mapped record.\n mapped.record.capabilities = imageEntry.capabilities;\n }\n return mapped;\n });\n emit({ type: \"finish\", data: { 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 { AiProviderRegisterOptions } from \"@workglow/ai\";\nimport { registerProviderWithWorker } from \"@workglow/ai/provider-utils\";\nimport { HfInferenceQueuedProvider } from \"./HfInferenceQueuedProvider\";\nimport { registerHfImageValidator } from \"./common/HFI_ImageValidation\";\n\nexport async function registerHfInference(\n options: AiProviderRegisterOptions & {\n worker: Worker | (() => Worker);\n }\n): Promise<void> {\n registerHfImageValidator();\n await registerProviderWithWorker(\n new HfInferenceQueuedProvider(),\n \"Hugging Face Inference\",\n options\n );\n}\n",
11
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AiProvider } from \"@workglow/ai\";\nimport type { Capability, ModelRecord } from \"@workglow/ai\";\nimport { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport { HF_INFERENCE } from \"./common/HFI_Constants\";\nimport {\n hfInferenceWorkerRunFnSpecs,\n inferHfInferenceCapabilities,\n} from \"./common/HFI_Capabilities\";\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 createCloudProviderClass<HfInferenceModelConfig>(\n AiProvider,\n {\n name: HF_INFERENCE,\n displayName: \"Hugging Face Inference\",\n }\n) {\n override inferCapabilities(model: ModelRecord): readonly Capability[] {\n return inferHfInferenceCapabilities(model);\n }\n\n protected override workerRunFnSpecs(): readonly { serves: readonly Capability[] }[] {\n return hfInferenceWorkerRunFnSpecs();\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 { Capability, ModelRecord } from \"@workglow/ai\";\nimport { AiProvider } from \"@workglow/ai\";\nimport { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport {\n hfInferenceWorkerRunFnSpecs,\n inferHfInferenceCapabilities,\n} from \"./common/HFI_Capabilities\";\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 createCloudProviderClass<HfInferenceModelConfig>(\n AiProvider,\n {\n name: HF_INFERENCE,\n displayName: \"Hugging Face Inference\",\n }\n) {\n override inferCapabilities(model: ModelRecord): readonly Capability[] {\n return inferHfInferenceCapabilities(model);\n }\n\n protected override workerRunFnSpecs(): readonly { serves: readonly Capability[] }[] {\n return hfInferenceWorkerRunFnSpecs();\n }\n}\n",
12
12
  "/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Capability } from \"@workglow/ai/worker\";\n\n/**\n * Single source of truth for HuggingFace Inference's capability sets.\n *\n * Both `HFI_RUN_FNS` (worker-side registration) and `workerRunFnSpecs()`\n * (main-thread proxy declaration) derive their `serves` arrays from these\n * named exports. SDK-free so the main thread can import without paying the\n * `@huggingface/inference` cost.\n */\nexport const HFI_TEXT_GENERATION = [\"text.generation\"] as const satisfies Capability[];\nexport const HFI_TOOL_USE = [\"text.generation\", \"tool-use\"] as const satisfies Capability[];\nexport const HFI_TEXT_REWRITER = [\"text.rewriter\"] as const satisfies Capability[];\nexport const HFI_TEXT_SUMMARY = [\"text.summary\"] as const satisfies Capability[];\nexport const HFI_TEXT_EMBEDDING = [\"text.embedding\"] as const satisfies Capability[];\nexport const HFI_IMAGE_GENERATION = [\"image.generation\"] as const satisfies Capability[];\nexport const HFI_IMAGE_EDITING = [\"image.editing\"] as const satisfies Capability[];\nexport const HFI_MODEL_SEARCH = [\"model.search\"] as const satisfies Capability[];\nexport const HFI_MODEL_INFO = [\"model.info\"] as const satisfies Capability[];\n\n/** Aggregated list — for `workerRunFnSpecs()` derivation. Order MUST match `HFI_RUN_FNS`. */\nexport const HFI_CAPABILITY_SETS = [\n HFI_TEXT_GENERATION,\n HFI_TOOL_USE,\n HFI_TEXT_REWRITER,\n HFI_TEXT_SUMMARY,\n HFI_TEXT_EMBEDDING,\n HFI_IMAGE_GENERATION,\n HFI_IMAGE_EDITING,\n HFI_MODEL_SEARCH,\n HFI_MODEL_INFO,\n] as const;\n",
13
13
  "/**\n * @license\n * Copyright 2026 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Capability, ModelRecord } from \"@workglow/ai/worker\";\nimport { HFI_CAPABILITY_SETS } from \"./HFI_CapabilitySets\";\n\nexport const HFI_RUN_FN_SPECS = HFI_CAPABILITY_SETS.map((serves) => ({ serves }));\n\nexport function hfInferenceWorkerRunFnSpecs(): readonly {\n readonly serves: readonly Capability[];\n}[] {\n return HFI_RUN_FN_SPECS;\n}\n\ntype CapabilityHints = Pick<ModelRecord, \"model_id\" | \"provider_config\" | \"capabilities\">;\n\n/**\n * Heuristic capability inference for a HuggingFace Inference {@link ModelRecord}.\n *\n * HF Inference catalog items are HF Hub repo IDs (e.g. `mistralai/Mistral-7B-Instruct`,\n * `black-forest-labs/FLUX.1-dev`). Like HFT, declared capabilities (set by\n * model-search) win. Otherwise fall back to id patterns.\n */\nexport function inferHfInferenceCapabilities(model: CapabilityHints): readonly Capability[] {\n const declared = (model.capabilities as readonly Capability[] | undefined) ?? [];\n if (declared.length > 0) return declared;\n\n const id = String(\n model.model_id ??\n (model.provider_config as { model_name?: string } | undefined)?.model_name ??\n \"\"\n );\n const baseName = id.split(\"/\").pop() ?? id;\n\n // Image generation / editing (Stable Diffusion, FLUX, SDXL, etc).\n if (/flux|stable-diffusion|sd-|sdxl|dall-e|kandinsky|wuerstchen|playground/i.test(baseName)) {\n return [\"image.generation\", \"image.editing\", \"model.info\", \"model.search\"];\n }\n\n // Embeddings.\n if (/embed|minilm|bge-|gte-|e5-/i.test(baseName)) {\n return [\"text.embedding\", \"model.info\", \"model.search\"];\n }\n\n // Generative text/chat models (Llama, Mistral, Mixtral, Gemma, Phi, Qwen, etc).\n if (\n /llama|mistral|mixtral|gemma|phi|qwen|falcon|yi|deepseek|command|claude|gpt-/i.test(baseName)\n ) {\n return [\n \"text.generation\",\n \"text.rewriter\",\n \"text.summary\",\n \"tool-use\",\n \"model.info\",\n \"model.search\",\n ];\n }\n\n return [\"model.search\", \"model.info\"];\n}\n",
14
14
  "/**\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 { resolveApiKey } from \"@workglow/ai/provider-utils\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\ntype HfInferenceSDKModule = typeof import(\"@huggingface/inference\");\n\nlet _loadPromise: Promise<HfInferenceSDKModule> | undefined;\n\n// NOTE: we do not want to de-dup this in the provider-utils, vite wants direct import with string literals.\nexport async function loadHfInferenceSDK(): Promise<HfInferenceSDKModule> {\n _loadPromise ??= import(/* @vite-ignore */ \"@huggingface/inference\")\n .then((mod) => mod as HfInferenceSDKModule)\n .catch(() => {\n _loadPromise = undefined;\n throw new Error(\n \"@huggingface/inference is required for Hugging Face Inference tasks. Install it with: bun add @huggingface/inference\"\n );\n });\n return _loadPromise;\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 = resolveApiKey({\n config,\n envVar: \"HF_TOKEN\",\n providerLabel: \"Hugging Face\",\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",
15
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ImageEditTaskInput,\n ImageEditTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport type { ImageValue } from \"@workglow/util/media\";\nimport { getLogger } from \"@workglow/util/worker\";\n\nimport { blobToImageValue, imageValueToPngBytes } from \"@workglow/ai/provider-utils\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName } from \"./HFI_Client\";\nimport { resolveHfImageDims } from \"./HFI_AspectRatio\";\n\nfunction modelIdOf(model: ModelConfig | undefined): string {\n return (\n model?.model_id ??\n (model?.provider_config as { model_name?: string } | undefined)?.model_name ??\n \"huggingface\"\n );\n}\n\n/**\n * Convert an inbound `ImageValue` (or a legacy data URI string) to a PNG Blob.\n */\nasync function gpuImageToBlob(image: ImageValue | string): Promise<Blob> {\n const bytes = await imageValueToPngBytes(image);\n // Copy into a fresh ArrayBuffer to avoid SharedArrayBuffer typing issues\n // with BlobPart.\n const buffer: ArrayBuffer =\n bytes.buffer instanceof ArrayBuffer\n ? bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength)\n : new Uint8Array(bytes).buffer;\n return new Blob([buffer], { type: \"image/png\" });\n}\n\n/**\n * One-shot run fn. HF Inference does not support partial image streaming,\n * so we run the request, emit one snapshot, then finish.\n */\nexport const HFI_ImageEdit_Stream: AiProviderRunFn<\n ImageEditTaskInput,\n ImageEditTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\n const logger = getLogger();\n const timer = `hfi:ImageEdit:${getModelName(model)}`;\n logger.time(timer);\n\n let result: ImageEditTaskOutput;\n try {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const dims = resolveHfImageDims(modelName, (input.aspectRatio as any) ?? \"1:1\");\n\n // image/mask may be data URI strings if the input crossed an earlier\n // worker boundary in legacy form; otherwise they are ImageValue POJOs.\n const inputBlob = await gpuImageToBlob(input.image as unknown as ImageValue | string);\n const params: Record<string, unknown> = {\n width: dims.width,\n height: dims.height,\n seed: input.seed,\n negative_prompt: input.negativePrompt,\n prompt: input.prompt,\n ...(input.providerOptions ?? {}),\n };\n if (input.mask) {\n // Validator (Task 17) rejects masks on non-inpainting models before this code runs.\n const maskBlob = await gpuImageToBlob(input.mask as unknown as ImageValue | string);\n params.mask_image = maskBlob;\n }\n\n const blob: Blob = await client.imageToImage(\n {\n model: modelName,\n inputs: inputBlob,\n parameters: params,\n },\n { signal }\n );\n const image = await blobToImageValue(blob);\n logger.timeEnd(timer);\n result = { image };\n } catch (err) {\n if (\n err instanceof ImageGenerationProviderError ||\n err instanceof ImageGenerationContentPolicyError\n )\n throw err;\n const msg = err instanceof Error ? err.message : \"unknown error\";\n if (/NSFW|safety|policy/i.test(msg))\n throw new ImageGenerationContentPolicyError(modelIdOf(model), msg);\n throw new ImageGenerationProviderError(modelIdOf(model), msg, { cause: err as Error });\n }\n\n if (signal.aborted) return;\n emit({ type: \"finish\", data: result });\n};\n",
16
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport { getLogger } from \"@workglow/util/worker\";\n\nimport { blobToImageValue } from \"@workglow/ai/provider-utils\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName } from \"./HFI_Client\";\nimport { resolveHfImageDims } from \"./HFI_AspectRatio\";\n\nfunction modelIdOf(model: ModelConfig | undefined): string {\n return (\n model?.model_id ??\n (model?.provider_config as { model_name?: string } | undefined)?.model_name ??\n \"huggingface\"\n );\n}\n\n/**\n * One-shot run fn. HF Inference does not support partial image streaming,\n * so we run the request, emit one snapshot, then finish.\n */\nexport const HFI_ImageGenerate_Stream: AiProviderRunFn<\n ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\n const logger = getLogger();\n const timer = `hfi:ImageGenerate:${getModelName(model)}`;\n logger.time(timer);\n\n let result: ImageGenerateTaskOutput;\n try {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const dims = resolveHfImageDims(modelName, (input.aspectRatio as any) ?? \"1:1\");\n\n const blob: Blob = await client.textToImage(\n {\n model: modelName,\n inputs: input.prompt,\n parameters: {\n width: dims.width,\n height: dims.height,\n seed: input.seed,\n negative_prompt: input.negativePrompt,\n ...(input.providerOptions ?? {}),\n },\n },\n { outputType: \"blob\" as const, signal }\n );\n const image = await blobToImageValue(blob);\n logger.timeEnd(timer);\n result = { image };\n } catch (err) {\n if (\n err instanceof ImageGenerationProviderError ||\n err instanceof ImageGenerationContentPolicyError\n )\n throw err;\n const msg = err instanceof Error ? err.message : \"unknown error\";\n if (/NSFW|safety|policy/i.test(msg))\n throw new ImageGenerationContentPolicyError(modelIdOf(model), msg);\n throw new ImageGenerationProviderError(modelIdOf(model), msg, { cause: err as Error });\n }\n\n if (signal.aborted) return;\n emit({ type: \"finish\", data: result });\n};\n",
17
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n} from \"@workglow/ai\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nexport const HFI_ModelInfo: AiProviderRunFn<\n ModelInfoTaskInput,\n ModelInfoTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, _signal, emit) => {\n if (input.detail === \"dimensions\") {\n const pc = model?.provider_config as Record<string, unknown>;\n const native_dimensions =\n typeof pc?.native_dimensions === \"number\" ? pc.native_dimensions : undefined;\n const mrl = typeof pc?.mrl === \"boolean\" ? pc.mrl : false;\n emit({\n type: \"finish\",\n data: {\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 ...(native_dimensions !== undefined ? { native_dimensions } : {}),\n ...(mrl ? { mrl } : {}),\n },\n });\n return;\n }\n emit({\n type: \"finish\",\n data: {\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};\n",
18
- "/**\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, signal, emit) => {\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 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 logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name, batch: true });\n emit({\n type: \"finish\",\n data: {\n vector: embeddings.map((embedding) => new Float32Array(embedding as unknown as number[])),\n },\n });\n return;\n }\n\n const embedding = await client.featureExtraction(\n {\n model: modelName,\n inputs: input.text,\n },\n { signal }\n );\n\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n emit({\n type: \"finish\",\n data: { vector: new Float32Array(embedding as unknown as number[]) },\n });\n};\n",
19
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n} from \"@workglow/ai\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_TextGeneration_Stream: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\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 emit({ type: \"text-delta\", port: \"text\", textDelta: delta });\n }\n }\n emit({ type: \"finish\", data: {} as TextGenerationTaskOutput });\n};\n",
20
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n} from \"@workglow/ai\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_TextRewriter_Stream: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\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 emit({ type: \"text-delta\", port: \"text\", textDelta: delta });\n }\n }\n emit({ type: \"finish\", data: {} as TextRewriterTaskOutput });\n};\n",
21
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n} from \"@workglow/ai\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_TextSummary_Stream: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\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 emit({ type: \"text-delta\", port: \"text\", textDelta: delta });\n }\n }\n emit({ type: \"finish\", data: {} as TextSummaryTaskOutput });\n};\n",
22
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { toOpenAIMessages } from \"@workglow/ai/worker\";\nimport type {\n AiProviderRunFn,\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n} from \"@workglow/ai\";\nimport {\n accumulateOpenAIStream,\n buildOpenAITools,\n mapOpenAIToolChoice,\n} from \"@workglow/ai/provider-utils\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_ToolCalling_Stream: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const tools = buildOpenAITools(input.tools);\n const messages = toOpenAIMessages(input);\n const toolChoice = mapOpenAIToolChoice(input.toolChoice, false);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const params: any = {\n model: modelName,\n messages,\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n provider,\n stream: true,\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 for await (const e of accumulateOpenAIStream(stream)) { emit(e); }\n};\n",
23
- "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFnRegistration } from \"@workglow/ai\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport {\n HFI_IMAGE_EDITING,\n HFI_IMAGE_GENERATION,\n HFI_MODEL_INFO,\n HFI_MODEL_SEARCH,\n HFI_TEXT_EMBEDDING,\n HFI_TEXT_GENERATION,\n HFI_TEXT_REWRITER,\n HFI_TEXT_SUMMARY,\n HFI_TOOL_USE,\n} from \"./HFI_CapabilitySets\";\n\nexport { loadHfInferenceSDK, getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nimport { HFI_ImageEdit_Stream } from \"./HFI_ImageEdit\";\nimport { HFI_ImageGenerate_Stream } from \"./HFI_ImageGenerate\";\nimport { HFI_ModelInfo } from \"./HFI_ModelInfo\";\nimport { HFI_ModelSearch } from \"./HFI_ModelSearch\";\nimport { HFI_TextEmbedding } from \"./HFI_TextEmbedding\";\nimport { HFI_TextGeneration_Stream } from \"./HFI_TextGeneration\";\nimport { HFI_TextRewriter_Stream } from \"./HFI_TextRewriter\";\nimport { HFI_TextSummary_Stream } from \"./HFI_TextSummary\";\nimport { HFI_ToolCalling_Stream } from \"./HFI_ToolCalling\";\n\n/**\n * Unified `[\"text.generation\"]` run-fn. {@link AiChatTask} and\n * {@link TextGenerationTask} share this registration; discriminates on\n * `Array.isArray(input.messages) && input.messages.length > 0` to route to\n * the chat or prompt path. Because HFI doesn't have a separate chat stream\n * helper, both paths run through `HFI_TextGeneration_Stream` — the SDK\n * accepts both shapes.\n */\nconst HFI_TextGeneration_Unified = HFI_TextGeneration_Stream;\n\nexport const HFI_RUN_FNS: readonly AiProviderRunFnRegistration<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n HfInferenceModelConfig\n>[] = [\n { serves: HFI_TEXT_GENERATION, runFn: HFI_TextGeneration_Unified },\n { serves: HFI_TOOL_USE, runFn: HFI_ToolCalling_Stream },\n { serves: HFI_TEXT_REWRITER, runFn: HFI_TextRewriter_Stream },\n { serves: HFI_TEXT_SUMMARY, runFn: HFI_TextSummary_Stream },\n { serves: HFI_TEXT_EMBEDDING, runFn: HFI_TextEmbedding },\n { serves: HFI_IMAGE_GENERATION, runFn: HFI_ImageGenerate_Stream },\n { serves: HFI_IMAGE_EDITING, runFn: HFI_ImageEdit_Stream },\n { serves: HFI_MODEL_SEARCH, runFn: HFI_ModelSearch },\n { serves: HFI_MODEL_INFO, runFn: HFI_ModelInfo },\n];\n",
15
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ImageEditTaskInput,\n ImageEditTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport type { ImageValue } from \"@workglow/util/media\";\nimport { getLogger } from \"@workglow/util/worker\";\n\nimport { blobToImageValue, imageValueToPngBytes } from \"@workglow/ai/provider-utils\";\nimport { resolveHfImageDims } from \"./HFI_AspectRatio\";\nimport { getClient, getModelName } from \"./HFI_Client\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nfunction modelIdOf(model: ModelConfig | undefined): string {\n return (\n model?.model_id ??\n (model?.provider_config as { model_name?: string } | undefined)?.model_name ??\n \"huggingface\"\n );\n}\n\n/**\n * Convert an inbound `ImageValue` (or a legacy data URI string) to a PNG Blob.\n */\nasync function gpuImageToBlob(image: ImageValue | string): Promise<Blob> {\n const bytes = await imageValueToPngBytes(image);\n // Copy into a fresh ArrayBuffer to avoid SharedArrayBuffer typing issues\n // with BlobPart.\n const buffer: ArrayBuffer =\n bytes.buffer instanceof ArrayBuffer\n ? bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength)\n : new Uint8Array(bytes).buffer;\n return new Blob([buffer], { type: \"image/png\" });\n}\n\n/**\n * One-shot run fn. HF Inference does not support partial image streaming,\n * so we run the request, emit one snapshot, then finish.\n */\nexport const HFI_ImageEdit_Stream: AiProviderRunFn<\n ImageEditTaskInput,\n ImageEditTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\n const logger = getLogger();\n const timer = `hfi:ImageEdit:${getModelName(model)}`;\n logger.time(timer);\n\n let result: ImageEditTaskOutput;\n try {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const dims = resolveHfImageDims(modelName, (input.aspectRatio as any) ?? \"1:1\");\n\n // image/mask may be data URI strings if the input crossed an earlier\n // worker boundary in legacy form; otherwise they are ImageValue POJOs.\n const inputBlob = await gpuImageToBlob(input.image as unknown as ImageValue | string);\n const params: Record<string, unknown> = {\n width: dims.width,\n height: dims.height,\n seed: input.seed,\n negative_prompt: input.negativePrompt,\n prompt: input.prompt,\n ...(input.providerOptions ?? {}),\n };\n if (input.mask) {\n // Validator (Task 17) rejects masks on non-inpainting models before this code runs.\n const maskBlob = await gpuImageToBlob(input.mask as unknown as ImageValue | string);\n params.mask_image = maskBlob;\n }\n\n const blob: Blob = await client.imageToImage(\n {\n model: modelName,\n inputs: inputBlob,\n parameters: params,\n },\n { signal }\n );\n const image = await blobToImageValue(blob);\n logger.timeEnd(timer);\n result = { image };\n } catch (err) {\n if (\n err instanceof ImageGenerationProviderError ||\n err instanceof ImageGenerationContentPolicyError\n )\n throw err;\n const msg = err instanceof Error ? err.message : \"unknown error\";\n if (/NSFW|safety|policy/i.test(msg))\n throw new ImageGenerationContentPolicyError(modelIdOf(model), msg);\n throw new ImageGenerationProviderError(modelIdOf(model), msg, { cause: err as Error });\n }\n\n if (signal.aborted) return;\n emit({ type: \"finish\", data: result });\n};\n",
16
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport { getLogger } from \"@workglow/util/worker\";\n\nimport { blobToImageValue } from \"@workglow/ai/provider-utils\";\nimport { resolveHfImageDims } from \"./HFI_AspectRatio\";\nimport { getClient, getModelName } from \"./HFI_Client\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nfunction modelIdOf(model: ModelConfig | undefined): string {\n return (\n model?.model_id ??\n (model?.provider_config as { model_name?: string } | undefined)?.model_name ??\n \"huggingface\"\n );\n}\n\n/**\n * One-shot run fn. HF Inference does not support partial image streaming,\n * so we run the request, emit one snapshot, then finish.\n */\nexport const HFI_ImageGenerate_Stream: AiProviderRunFn<\n ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\n const logger = getLogger();\n const timer = `hfi:ImageGenerate:${getModelName(model)}`;\n logger.time(timer);\n\n let result: ImageGenerateTaskOutput;\n try {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const dims = resolveHfImageDims(modelName, (input.aspectRatio as any) ?? \"1:1\");\n\n const blob: Blob = await client.textToImage(\n {\n model: modelName,\n inputs: input.prompt,\n parameters: {\n width: dims.width,\n height: dims.height,\n seed: input.seed,\n negative_prompt: input.negativePrompt,\n ...(input.providerOptions ?? {}),\n },\n },\n { outputType: \"blob\" as const, signal }\n );\n const image = await blobToImageValue(blob);\n logger.timeEnd(timer);\n result = { image };\n } catch (err) {\n if (\n err instanceof ImageGenerationProviderError ||\n err instanceof ImageGenerationContentPolicyError\n )\n throw err;\n const msg = err instanceof Error ? err.message : \"unknown error\";\n if (/NSFW|safety|policy/i.test(msg))\n throw new ImageGenerationContentPolicyError(modelIdOf(model), msg);\n throw new ImageGenerationProviderError(modelIdOf(model), msg, { cause: err as Error });\n }\n\n if (signal.aborted) return;\n emit({ type: \"finish\", data: result });\n};\n",
17
+ "/**\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, model, _signal, emit) => {\n if (input.detail === \"dimensions\") {\n const pc = model?.provider_config as Record<string, unknown>;\n const native_dimensions =\n typeof pc?.native_dimensions === \"number\" ? pc.native_dimensions : undefined;\n const mrl = typeof pc?.mrl === \"boolean\" ? pc.mrl : false;\n emit({\n type: \"finish\",\n data: {\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 ...(native_dimensions !== undefined ? { native_dimensions } : {}),\n ...(mrl ? { mrl } : {}),\n },\n });\n return;\n }\n emit({\n type: \"finish\",\n data: {\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};\n",
18
+ "/**\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 { getClient, getModelName } from \"./HFI_Client\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nexport const HFI_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\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 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 logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name, batch: true });\n emit({\n type: \"finish\",\n data: {\n vector: embeddings.map((embedding) => new Float32Array(embedding as unknown as number[])),\n },\n });\n return;\n }\n\n const embedding = await client.featureExtraction(\n {\n model: modelName,\n inputs: input.text,\n },\n { signal }\n );\n\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n emit({\n type: \"finish\",\n data: { vector: new Float32Array(embedding as unknown as number[]) },\n });\n};\n",
19
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n} from \"@workglow/ai\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nexport const HFI_TextGeneration_Stream: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\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 emit({ type: \"text-delta\", port: \"text\", textDelta: delta });\n }\n }\n emit({ type: \"finish\", data: {} as TextGenerationTaskOutput });\n};\n",
20
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, TextRewriterTaskInput, TextRewriterTaskOutput } from \"@workglow/ai\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nexport const HFI_TextRewriter_Stream: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\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 emit({ type: \"text-delta\", port: \"text\", textDelta: delta });\n }\n }\n emit({ type: \"finish\", data: {} as TextRewriterTaskOutput });\n};\n",
21
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, TextSummaryTaskInput, TextSummaryTaskOutput } from \"@workglow/ai\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nexport const HFI_TextSummary_Stream: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\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 emit({ type: \"text-delta\", port: \"text\", textDelta: delta });\n }\n }\n emit({ type: \"finish\", data: {} as TextSummaryTaskOutput });\n};\n",
22
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, ToolCallingTaskInput, ToolCallingTaskOutput } from \"@workglow/ai\";\nimport {\n accumulateOpenAIStream,\n buildOpenAITools,\n mapOpenAIToolChoice,\n} from \"@workglow/ai/provider-utils\";\nimport { toOpenAIMessages } from \"@workglow/ai/worker\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nexport const HFI_ToolCalling_Stream: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, signal, emit) => {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const tools = buildOpenAITools(input.tools);\n const messages = toOpenAIMessages(input);\n const toolChoice = mapOpenAIToolChoice(input.toolChoice, false);\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const params: any = {\n model: modelName,\n messages,\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n provider,\n stream: true,\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 for await (const e of accumulateOpenAIStream(stream)) {\n emit(e);\n }\n};\n",
23
+ "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFnRegistration } from \"@workglow/ai\";\nimport {\n HFI_IMAGE_EDITING,\n HFI_IMAGE_GENERATION,\n HFI_MODEL_INFO,\n HFI_MODEL_SEARCH,\n HFI_TEXT_EMBEDDING,\n HFI_TEXT_GENERATION,\n HFI_TEXT_REWRITER,\n HFI_TEXT_SUMMARY,\n HFI_TOOL_USE,\n} from \"./HFI_CapabilitySets\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\n\nexport { getClient, getModelName, getProvider, loadHfInferenceSDK } from \"./HFI_Client\";\n\nimport { HFI_ImageEdit_Stream } from \"./HFI_ImageEdit\";\nimport { HFI_ImageGenerate_Stream } from \"./HFI_ImageGenerate\";\nimport { HFI_ModelInfo } from \"./HFI_ModelInfo\";\nimport { HFI_ModelSearch } from \"./HFI_ModelSearch\";\nimport { HFI_TextEmbedding } from \"./HFI_TextEmbedding\";\nimport { HFI_TextGeneration_Stream } from \"./HFI_TextGeneration\";\nimport { HFI_TextRewriter_Stream } from \"./HFI_TextRewriter\";\nimport { HFI_TextSummary_Stream } from \"./HFI_TextSummary\";\nimport { HFI_ToolCalling_Stream } from \"./HFI_ToolCalling\";\n\n/**\n * Unified `[\"text.generation\"]` run-fn. {@link AiChatTask} and\n * {@link TextGenerationTask} share this registration; discriminates on\n * `Array.isArray(input.messages) && input.messages.length > 0` to route to\n * the chat or prompt path. Because HFI doesn't have a separate chat stream\n * helper, both paths run through `HFI_TextGeneration_Stream` — the SDK\n * accepts both shapes.\n */\nconst HFI_TextGeneration_Unified = HFI_TextGeneration_Stream;\n\nexport const HFI_RUN_FNS: readonly AiProviderRunFnRegistration<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n HfInferenceModelConfig\n>[] = [\n { serves: HFI_TEXT_GENERATION, runFn: HFI_TextGeneration_Unified },\n { serves: HFI_TOOL_USE, runFn: HFI_ToolCalling_Stream },\n { serves: HFI_TEXT_REWRITER, runFn: HFI_TextRewriter_Stream },\n { serves: HFI_TEXT_SUMMARY, runFn: HFI_TextSummary_Stream },\n { serves: HFI_TEXT_EMBEDDING, runFn: HFI_TextEmbedding },\n { serves: HFI_IMAGE_GENERATION, runFn: HFI_ImageGenerate_Stream },\n { serves: HFI_IMAGE_EDITING, runFn: HFI_ImageEdit_Stream },\n { serves: HFI_MODEL_SEARCH, runFn: HFI_ModelSearch },\n { serves: HFI_MODEL_INFO, runFn: HFI_ModelInfo },\n];\n",
24
24
  "/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// organize-imports-ignore\n\nexport * from \"./common/HFI_AspectRatio\";\nexport * from \"./common/HFI_Constants\";\nexport * from \"./common/HFI_ImageValidation\";\nexport * from \"./common/HFI_ModelSchema\";\nexport * from \"./common/HFI_ModelSearch\";\nexport * from \"./registerHfInference\";\n\nimport { HFI_RUN_FN_SPECS } from \"./common/HFI_Capabilities\";\nimport { HFI_RUN_FNS } from \"./common/HFI_JobRunFns\";\nimport { HfInferenceQueuedProvider } from \"./HfInferenceQueuedProvider\";\n\n/**\n * @internal Symbols exported only for use by `@workglow/test`. Not part of the stable public API.\n */\nexport const _testOnly = {\n HfInferenceQueuedProvider,\n HFI_RUN_FN_SPECS,\n HFI_RUN_FNS,\n} as const;\n"
25
25
  ],
26
- "mappings": ";;;;;;;;;AAaA,IAAM,YAA4C;AAAA,EAChD,OAAO,EAAE,OAAO,MAAM,QAAQ,KAAK;AAAA,EACnC,QAAQ,EAAE,OAAO,MAAM,QAAQ,IAAI;AAAA,EACnC,QAAQ,EAAE,OAAO,KAAK,QAAQ,KAAK;AAAA,EACnC,OAAO,EAAE,OAAO,MAAM,QAAQ,IAAI;AAAA,EAClC,OAAO,EAAE,OAAO,KAAK,QAAQ,KAAK;AACpC;AAEA,IAAM,YAA4C;AAAA,EAChD,OAAO,EAAE,OAAO,MAAM,QAAQ,KAAK;AAAA,EACnC,QAAQ,EAAE,OAAO,MAAM,QAAQ,IAAI;AAAA,EACnC,QAAQ,EAAE,OAAO,KAAK,QAAQ,KAAK;AAAA,EACnC,OAAO,EAAE,OAAO,MAAM,QAAQ,IAAI;AAAA,EAClC,OAAO,EAAE,OAAO,KAAK,QAAQ,KAAK;AACpC;AAEA,IAAM,eAA+C;AAErD,IAAM,kBAAoF;AAAA,EACxF,EAAE,SAAS,6BAA6B,MAAM,UAAU;AAAA,EACxD,EAAE,SAAS,wBAAwB,MAAM,UAAU;AACrD;AAGO,SAAS,kBAAkB,CAAC,SAAiB,aAAqC;AAAA,EACvF,MAAM,QAAQ,gBAAgB,KAAK,CAAC,MAAM,EAAE,QAAQ,KAAK,OAAO,CAAC;AAAA,EACjE,QAAQ,OAAO,QAAQ,cAAc;AAAA;AAIhC,SAAS,mBAAmB,CAAC,SAA0B;AAAA,EAC5D,OAAO,mBAAmB,KAAK,OAAO;AAAA;;ACtCjC,IAAM,eAAe;;ACA5B;AAMO,SAAS,wBAAwB,GAAS;AAAA,EAC/C,kBAAkB,+BAChB,cACA,CAAC,UAAU,OAAO,UAAuB;AAAA,IACvC,IAAI,aAAa;AAAA,MAAiB;AAAA,IAClC,MAAM,UAAU,MAAM,YAAY;AAAA,IAClC,MAAM,YACH,MAAM,iBAAyD,cAAc;AAAA,IAEhF,MAAM,aAAa,MAAM;AAAA,IACzB,IAAI,MAAM,QAAQ,UAAU,KAAK,WAAW,SAAS,GAAG;AAAA,MACtD,MAAM,IAAI,gCACR,oBACA,SACA,gEACF;AAAA,IACF;AAAA,IACA,IACE,MAAM,YAAY,aAClB,MAAM,YAAY,QAClB,CAAC,oBAAoB,SAAS,GAC9B;AAAA,MACA,MAAM,IAAI,gCACR,QACA,SACA,2EACF;AAAA,IACF;AAAA,GAEJ;AAAA;;ACnCF;AAIO,IAAM,yBAAyB;AAAA,EACpC,MAAM;AAAA,EACN,YAAY;AAAA,IACV,UAAU;AAAA,MACR,OAAO;AAAA,MACP,aAAa;AAAA,IACf;AAAA,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,aAAa;AAAA,MACb,YAAY;AAAA,QACV,YAAY;AAAA,UACV,MAAM;AAAA,UACN,aACE;AAAA,QACJ;AAAA,QACA,gBAAgB;AAAA,UACd,MAAM;AAAA,UACN,QAAQ;AAAA,UACR,aAAa;AAAA,UACb,eAAe;AAAA,QACjB;AAAA,QACA,UAAU;AAAA,UACR,MAAM;AAAA,UACN,aACE;AAAA,QACJ;AAAA,MACF;AAAA,MACA,UAAU,CAAC,YAAY;AAAA,MACvB,sBAAsB;AAAA,IACxB;AAAA,EACF;AAAA,EACA,UAAU,CAAC,YAAY,iBAAiB;AAAA,EACxC,sBAAsB;AACxB;AAEO,IAAM,+BAA+B;AAAA,EAC1C,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,uBAAuB;AAAA,EAC5B;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,uBAAuB,QAAQ;AAAA,EAC5E,sBAAsB;AACxB;AAIO,IAAM,+BAA+B;AAAA,EAC1C,MAAM;AAAA,EACN,YAAY;AAAA,OACP,kBAAkB;AAAA,OAClB,uBAAuB;AAAA,EAC5B;AAAA,EACA,UAAU,CAAC,GAAG,kBAAkB,UAAU,GAAG,uBAAuB,QAAQ;AAAA,EAC5E,sBAAsB;AACxB;;ACtDA;AACA;AAIA,IAAM,mBAAkE;AAAA,EACtE,EAAE,IAAI,oCAAoC,cAAc,CAAC,kBAAkB,EAAE;AAAA,EAC7E,EAAE,IAAI,wCAAwC,cAAc,CAAC,eAAe,EAAE;AAChF;AAEA,SAAS,oBAAoB,GAA4B;AAAA,EACvD,OAAO,iBAAiB,IAAI,CAAC,OAAO;AAAA,IAClC,IAAI,EAAE;AAAA,IACN,OAAO,EAAE;AAAA,IACT,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,UAAU,EAAE;AAAA,MACZ,UAAU;AAAA,MACV,OAAO,EAAE,GAAG,MAAM,GAAG,EAAE,IAAI,KAAK,EAAE;AAAA,MAClC,aAAa;AAAA,MACb,cAAc,EAAE;AAAA,MAChB,iBAAiB,EAAE,YAAY,EAAE,GAAG;AAAA,MACpC,UAAU,CAAC;AAAA,IACb;AAAA,IACA,KAAK;AAAA,EACP,EAAE;AAAA;AAGG,IAAM,kBAGT,OAAO,OAAO,QAAQ,QAAQ,SAAS;AAAA,EACzC,MAAM,QAAQ,MAAM,OAAO,KAAK,KAAK;AAAA,EACrC,IAAI,CAAC,MAAM,gBAAgB;AAAA,IACzB,MAAM,WAAW,qBAAqB;AAAA,IACtC,MAAM,UAAU,SAAS,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,OAAO,EAAE,GAAG,EAAE;AAAA,IACrE,MAAM,WAAW,2BAA2B,SAAS,KAAK,EAAE,IAC1D,CAAC,MAAM,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAC9C;AAAA,IACA,KAAK,EAAE,MAAM,UAAU,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;AAAA,IACpD;AAAA,EACF;AAAA,EAEA,MAAM,UAAU,MAAM,eAAe,OAAO,WAAW,WAAW,QAAQ,MAAM,cAAc;AAAA,EAC9F,MAAM,UAAU,QAAQ,IAAI,CAAC,UAAU;AAAA,IACrC,MAAM,aAAa,iBAAiB,KAAK,CAAC,MAAM,EAAE,OAAO,MAAM,EAAE;AAAA,IACjE,MAAM,SAAS,iBAAiB,OAAO,YAAY;AAAA,IACnD,IAAI,YAAY;AAAA,MAEd,OAAO,OAAO,eAAe,WAAW;AAAA,IAC1C;AAAA,IACA,OAAO;AAAA,GACR;AAAA,EACD,KAAK,EAAE,MAAM,UAAU,MAAM,EAAE,QAAQ,EAAE,CAAC;AAAA;;AC1D5C;;;ACDA;AAEA;;;ACQO,IAAM,sBAAsB,CAAC,iBAAiB;AAC9C,IAAM,eAAe,CAAC,mBAAmB,UAAU;AACnD,IAAM,oBAAoB,CAAC,eAAe;AAC1C,IAAM,mBAAmB,CAAC,cAAc;AACxC,IAAM,qBAAqB,CAAC,gBAAgB;AAC5C,IAAM,uBAAuB,CAAC,kBAAkB;AAChD,IAAM,oBAAoB,CAAC,eAAe;AAC1C,IAAM,mBAAmB,CAAC,cAAc;AACxC,IAAM,iBAAiB,CAAC,YAAY;AAGpC,IAAM,sBAAsB;AAAA,EACjC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AC5BO,IAAM,mBAAmB,oBAAoB,IAAI,CAAC,YAAY,EAAE,OAAO,EAAE;AAEzE,SAAS,2BAA2B,GAEvC;AAAA,EACF,OAAO;AAAA;AAYF,SAAS,4BAA4B,CAAC,OAA+C;AAAA,EAC1F,MAAM,WAAY,MAAM,gBAAsD,CAAC;AAAA,EAC/E,IAAI,SAAS,SAAS;AAAA,IAAG,OAAO;AAAA,EAEhC,MAAM,KAAK,OACT,MAAM,YACH,MAAM,iBAAyD,cAChE,EACJ;AAAA,EACA,MAAM,WAAW,GAAG,MAAM,GAAG,EAAE,IAAI,KAAK;AAAA,EAGxC,IAAI,yEAAyE,KAAK,QAAQ,GAAG;AAAA,IAC3F,OAAO,CAAC,oBAAoB,iBAAiB,cAAc,cAAc;AAAA,EAC3E;AAAA,EAGA,IAAI,8BAA8B,KAAK,QAAQ,GAAG;AAAA,IAChD,OAAO,CAAC,kBAAkB,cAAc,cAAc;AAAA,EACxD;AAAA,EAGA,IACE,+EAA+E,KAAK,QAAQ,GAC5F;AAAA,IACA,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,OAAO,CAAC,gBAAgB,YAAY;AAAA;;;AF5C/B,MAAM,kCAAkC,yBAC7C,YACA;AAAA,EACE,MAAM;AAAA,EACN,aAAa;AACf,CACF,EAAE;AAAA,EACS,iBAAiB,CAAC,OAA2C;AAAA,IACpE,OAAO,6BAA6B,KAAK;AAAA;AAAA,EAGxB,gBAAgB,GAAiD;AAAA,IAClF,OAAO,4BAA4B;AAAA;AAEvC;;;ADpBA,eAAsB,mBAAmB,CACvC,SAGe;AAAA,EACf,yBAAyB;AAAA,EACzB,MAAM,2BACJ,IAAI,2BACJ,0BACA,OACF;AAAA;;AIdF;AAIA,IAAI;AAGJ,eAAsB,kBAAkB,GAAkC;AAAA,EACxE,iBAA2C,iCACxC,KAAK,CAAC,QAAQ,GAA2B,EACzC,MAAM,MAAM;AAAA,IACX,eAAe;AAAA,IACf,MAAM,IAAI,MACR,sHACF;AAAA,GACD;AAAA,EACH,OAAO;AAAA;AAUT,eAAsB,SAAS,CAAC,OAA2C;AAAA,EACzE,MAAM,MAAM,MAAM,mBAAmB;AAAA,EACrC,MAAM,SAAS,OAAO;AAAA,EACtB,MAAM,SAAS,cAAc;AAAA,IAC3B;AAAA,IACA,QAAQ;AAAA,IACR,eAAe;AAAA,EACjB,CAAC;AAAA,EACD,IAAI;AAAA,IACF,OAAO,IAAI,IAAI,gBAAgB,MAAM;AAAA,IACrC,OAAO,KAAK;AAAA,IACZ,MAAM,IAAI,MACR,kDAAkD,eAAe,QAAQ,IAAI,UAAU,iBACzF;AAAA;AAAA;AAIG,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;;;ACjDjC;AAEA;AAEA;AAKA,SAAS,SAAS,CAAC,OAAwC;AAAA,EACzD,OACE,OAAO,YACN,OAAO,iBAAyD,cACjE;AAAA;AAOJ,eAAe,cAAc,CAAC,OAA2C;AAAA,EACvE,MAAM,QAAQ,MAAM,qBAAqB,KAAK;AAAA,EAG9C,MAAM,SACJ,MAAM,kBAAkB,cACpB,MAAM,OAAO,MAAM,MAAM,YAAY,MAAM,aAAa,MAAM,UAAU,IACxE,IAAI,WAAW,KAAK,EAAE;AAAA,EAC5B,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,MAAM,YAAY,CAAC;AAAA;AAO1C,IAAM,uBAIT,OAAO,OAAO,OAAO,QAAQ,SAAS;AAAA,EACxC,MAAM,SAAS,UAAU;AAAA,EACzB,MAAM,QAAQ,iBAAiB,aAAa,KAAK;AAAA,EACjD,OAAO,KAAK,KAAK;AAAA,EAEjB,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,IACpC,MAAM,YAAY,aAAa,KAAK;AAAA,IACpC,MAAM,OAAO,mBAAmB,WAAY,MAAM,eAAuB,KAAK;AAAA,IAI9E,MAAM,YAAY,MAAM,eAAe,MAAM,KAAuC;AAAA,IACpF,MAAM,SAAkC;AAAA,MACtC,OAAO,KAAK;AAAA,MACZ,QAAQ,KAAK;AAAA,MACb,MAAM,MAAM;AAAA,MACZ,iBAAiB,MAAM;AAAA,MACvB,QAAQ,MAAM;AAAA,SACV,MAAM,mBAAmB,CAAC;AAAA,IAChC;AAAA,IACA,IAAI,MAAM,MAAM;AAAA,MAEd,MAAM,WAAW,MAAM,eAAe,MAAM,IAAsC;AAAA,MAClF,OAAO,aAAa;AAAA,IACtB;AAAA,IAEA,MAAM,OAAa,MAAM,OAAO,aAC9B;AAAA,MACE,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,YAAY;AAAA,IACd,GACA,EAAE,OAAO,CACX;AAAA,IACA,MAAM,QAAQ,MAAM,iBAAiB,IAAI;AAAA,IACzC,OAAO,QAAQ,KAAK;AAAA,IACpB,SAAS,EAAE,MAAM;AAAA,IACjB,OAAO,KAAK;AAAA,IACZ,IACE,eAAe,gCACf,eAAe;AAAA,MAEf,MAAM;AAAA,IACR,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU;AAAA,IACjD,IAAI,sBAAsB,KAAK,GAAG;AAAA,MAChC,MAAM,IAAI,kCAAkC,UAAU,KAAK,GAAG,GAAG;AAAA,IACnE,MAAM,IAAI,6BAA6B,UAAU,KAAK,GAAG,KAAK,EAAE,OAAO,IAAa,CAAC;AAAA;AAAA,EAGvF,IAAI,OAAO;AAAA,IAAS;AAAA,EACpB,KAAK,EAAE,MAAM,UAAU,MAAM,OAAO,CAAC;AAAA;;;AC3FvC,8CAAS,oEAAmC;AAC5C,sBAAS;AAET,6BAAS;AAKT,SAAS,UAAS,CAAC,OAAwC;AAAA,EACzD,OACE,OAAO,YACN,OAAO,iBAAyD,cACjE;AAAA;AAQG,IAAM,2BAIT,OAAO,OAAO,OAAO,QAAQ,SAAS;AAAA,EACxC,MAAM,SAAS,WAAU;AAAA,EACzB,MAAM,QAAQ,qBAAqB,aAAa,KAAK;AAAA,EACrD,OAAO,KAAK,KAAK;AAAA,EAEjB,IAAI;AAAA,EACJ,IAAI;AAAA,IACF,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,IACpC,MAAM,YAAY,aAAa,KAAK;AAAA,IACpC,MAAM,OAAO,mBAAmB,WAAY,MAAM,eAAuB,KAAK;AAAA,IAE9E,MAAM,OAAa,MAAM,OAAO,YAC9B;AAAA,MACE,OAAO;AAAA,MACP,QAAQ,MAAM;AAAA,MACd,YAAY;AAAA,QACV,OAAO,KAAK;AAAA,QACZ,QAAQ,KAAK;AAAA,QACb,MAAM,MAAM;AAAA,QACZ,iBAAiB,MAAM;AAAA,WACnB,MAAM,mBAAmB,CAAC;AAAA,MAChC;AAAA,IACF,GACA,EAAE,YAAY,QAAiB,OAAO,CACxC;AAAA,IACA,MAAM,QAAQ,MAAM,kBAAiB,IAAI;AAAA,IACzC,OAAO,QAAQ,KAAK;AAAA,IACpB,SAAS,EAAE,MAAM;AAAA,IACjB,OAAO,KAAK;AAAA,IACZ,IACE,eAAe,iCACf,eAAe;AAAA,MAEf,MAAM;AAAA,IACR,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU;AAAA,IACjD,IAAI,sBAAsB,KAAK,GAAG;AAAA,MAChC,MAAM,IAAI,mCAAkC,WAAU,KAAK,GAAG,GAAG;AAAA,IACnE,MAAM,IAAI,8BAA6B,WAAU,KAAK,GAAG,KAAK,EAAE,OAAO,IAAa,CAAC;AAAA;AAAA,EAGvF,IAAI,OAAO;AAAA,IAAS;AAAA,EACpB,KAAK,EAAE,MAAM,UAAU,MAAM,OAAO,CAAC;AAAA;;;AChEhC,IAAM,gBAIT,OAAO,OAAO,OAAO,SAAS,SAAS;AAAA,EACzC,IAAI,MAAM,WAAW,cAAc;AAAA,IACjC,MAAM,KAAK,OAAO;AAAA,IAClB,MAAM,oBACJ,OAAO,IAAI,sBAAsB,WAAW,GAAG,oBAAoB;AAAA,IACrE,MAAM,MAAM,OAAO,IAAI,QAAQ,YAAY,GAAG,MAAM;AAAA,IACpD,KAAK;AAAA,MACH,MAAM;AAAA,MACN,MAAM;AAAA,QACJ,OAAO,MAAM;AAAA,QACb,UAAU;AAAA,QACV,WAAW;AAAA,QACX,kBAAkB;AAAA,QAClB,eAAe;AAAA,QACf,WAAW;AAAA,QACX,WAAW;AAAA,QACX,YAAY;AAAA,WACR,sBAAsB,YAAY,EAAE,kBAAkB,IAAI,CAAC;AAAA,WAC3D,MAAM,EAAE,IAAI,IAAI,CAAC;AAAA,MACvB;AAAA,IACF,CAAC;AAAA,IACD;AAAA,EACF;AAAA,EACA,KAAK;AAAA,IACH,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,OAAO,MAAM;AAAA,MACb,UAAU;AAAA,MACV,WAAW;AAAA,MACX,kBAAkB;AAAA,MAClB,eAAe;AAAA,MACf,WAAW;AAAA,MACX,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,EACF,CAAC;AAAA;;;ACzCH,sBAAS;AAIF,IAAM,oBAIT,OAAO,OAAO,OAAO,QAAQ,SAAS;AAAA,EACxC,MAAM,SAAS,WAAU;AAAA,EACzB,MAAM,aAAa,qBAAqB,OAAO,iBAAiB;AAAA,EAChE,OAAO,KAAK,YAAY,EAAE,OAAO,OAAO,iBAAiB,WAAW,CAAC;AAAA,EAErE,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,OAAO,QAAQ,YAAY,EAAE,OAAO,OAAO,iBAAiB,YAAY,OAAO,KAAK,CAAC;AAAA,IACrF,KAAK;AAAA,MACH,MAAM;AAAA,MACN,MAAM;AAAA,QACJ,QAAQ,WAAW,IAAI,CAAC,eAAc,IAAI,aAAa,UAAgC,CAAC;AAAA,MAC1F;AAAA,IACF,CAAC;AAAA,IACD;AAAA,EACF;AAAA,EAEA,MAAM,YAAY,MAAM,OAAO,kBAC7B;AAAA,IACE,OAAO;AAAA,IACP,QAAQ,MAAM;AAAA,EAChB,GACA,EAAE,OAAO,CACX;AAAA,EAEA,OAAO,QAAQ,YAAY,EAAE,OAAO,OAAO,iBAAiB,WAAW,CAAC;AAAA,EACxE,KAAK;AAAA,IACH,MAAM;AAAA,IACN,MAAM,EAAE,QAAQ,IAAI,aAAa,SAAgC,EAAE;AAAA,EACrE,CAAC;AAAA;;;AChDI,IAAM,4BAIT,OAAO,OAAO,OAAO,QAAQ,SAAS;AAAA,EACxC,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,OAAO,CAAC;AAAA,IAClD,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,KAAK,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,MAAM,CAAC;AAAA,IAC7D;AAAA,EACF;AAAA,EACA,KAAK,EAAE,MAAM,UAAU,MAAM,CAAC,EAA8B,CAAC;AAAA;;;AC5BxD,IAAM,0BAIT,OAAO,OAAO,OAAO,QAAQ,SAAS;AAAA,EACxC,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,OAAO;AAAA,MACxC,EAAE,MAAM,QAAQ,SAAS,MAAM,KAAK;AAAA,IACtC;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,KAAK,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,MAAM,CAAC;AAAA,IAC7D;AAAA,EACF;AAAA,EACA,KAAK,EAAE,MAAM,UAAU,MAAM,CAAC,EAA4B,CAAC;AAAA;;;AC3BtD,IAAM,yBAIT,OAAO,OAAO,OAAO,QAAQ,SAAS;AAAA,EACxC,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,KAAK;AAAA,IACtC;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,KAAK,EAAE,MAAM,cAAc,MAAM,QAAQ,WAAW,MAAM,CAAC;AAAA,IAC7D;AAAA,EACF;AAAA,EACA,KAAK,EAAE,MAAM,UAAU,MAAM,CAAC,EAA2B,CAAC;AAAA;;;ACnC5D;AAMA;AAAA;AAAA;AAAA;AAAA;AAQO,IAAM,yBAIT,OAAO,OAAO,OAAO,QAAQ,SAAS;AAAA,EACxC,MAAM,SAAS,MAAM,UAAU,KAAK;AAAA,EACpC,MAAM,YAAY,aAAa,KAAK;AAAA,EACpC,MAAM,WAAW,YAAY,KAAK;AAAA,EAElC,MAAM,QAAQ,iBAAiB,MAAM,KAAK;AAAA,EAC1C,MAAM,WAAW,iBAAiB,KAAK;AAAA,EACvC,MAAM,aAAa,oBAAoB,MAAM,YAAY,KAAK;AAAA,EAG9D,MAAM,SAAc;AAAA,IAClB,OAAO;AAAA,IACP;AAAA,IACA,YAAY,MAAM;AAAA,IAClB,aAAa,MAAM;AAAA,IACnB;AAAA,IACA,QAAQ;AAAA,EACV;AAAA,EACA,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,iBAAiB,KAAK,uBAAuB,MAAM,GAAG;AAAA,IAAE,KAAK,CAAC;AAAA,EAAG;AAAA;;;ACTnE,IAAM,6BAA6B;AAE5B,IAAM,cAMP;AAAA,EACJ,EAAE,QAAQ,qBAAqB,OAAO,2BAA2B;AAAA,EACjE,EAAE,QAAQ,cAAc,OAAO,uBAAuB;AAAA,EACtD,EAAE,QAAQ,mBAAmB,OAAO,wBAAwB;AAAA,EAC5D,EAAE,QAAQ,kBAAkB,OAAO,uBAAuB;AAAA,EAC1D,EAAE,QAAQ,oBAAoB,OAAO,kBAAkB;AAAA,EACvD,EAAE,QAAQ,sBAAsB,OAAO,yBAAyB;AAAA,EAChE,EAAE,QAAQ,mBAAmB,OAAO,qBAAqB;AAAA,EACzD,EAAE,QAAQ,kBAAkB,OAAO,gBAAgB;AAAA,EACnD,EAAE,QAAQ,gBAAgB,OAAO,cAAc;AACjD;;;ACpCO,IAAM,YAAY;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AACF;",
27
- "debugId": "92F7DC0F1020AD2564756E2164756E21",
26
+ "mappings": "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",
27
+ "debugId": "1A8B8393C92D67FD64756E2164756E21",
28
28
  "names": []
29
29
  }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@workglow/huggingface-inference",
3
3
  "type": "module",
4
4
  "sideEffects": false,
5
- "version": "0.2.36",
5
+ "version": "0.2.37",
6
6
  "repository": {
7
7
  "type": "git",
8
8
  "url": "https://github.com/workglow-dev/libs.git",
@@ -34,11 +34,11 @@
34
34
  "@huggingface/inference": "^4.13.15"
35
35
  },
36
36
  "peerDependencies": {
37
- "@workglow/ai": "0.2.36",
38
- "@workglow/job-queue": "0.2.36",
39
- "@workglow/storage": "0.2.36",
40
- "@workglow/task-graph": "0.2.36",
41
- "@workglow/util": "0.2.36"
37
+ "@workglow/ai": "0.2.37",
38
+ "@workglow/job-queue": "0.2.37",
39
+ "@workglow/storage": "0.2.37",
40
+ "@workglow/task-graph": "0.2.37",
41
+ "@workglow/util": "0.2.37"
42
42
  },
43
43
  "peerDependenciesMeta": {
44
44
  "@workglow/ai": {
@@ -58,11 +58,11 @@
58
58
  }
59
59
  },
60
60
  "devDependencies": {
61
- "@workglow/ai": "0.2.36",
62
- "@workglow/job-queue": "0.2.36",
63
- "@workglow/storage": "0.2.36",
64
- "@workglow/task-graph": "0.2.36",
65
- "@workglow/util": "0.2.36"
61
+ "@workglow/ai": "0.2.37",
62
+ "@workglow/job-queue": "0.2.37",
63
+ "@workglow/storage": "0.2.37",
64
+ "@workglow/task-graph": "0.2.37",
65
+ "@workglow/util": "0.2.37"
66
66
  },
67
67
  "files": [
68
68
  "dist",