@workglow/huggingface-inference 0.2.31 → 0.2.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -0
- package/dist/ai/HfInferenceProvider.d.ts.map +1 -0
- package/dist/ai/HfInferenceQueuedProvider.d.ts.map +1 -0
- package/dist/ai/common/HFI_AspectRatio.d.ts.map +1 -0
- package/dist/{ai-provider → ai}/common/HFI_Client.d.ts +3 -1
- package/dist/ai/common/HFI_Client.d.ts.map +1 -0
- package/dist/ai/common/HFI_Constants.d.ts.map +1 -0
- package/dist/ai/common/HFI_ImageEdit.d.ts.map +1 -0
- package/dist/ai/common/HFI_ImageGenerate.d.ts.map +1 -0
- package/dist/ai/common/HFI_ImageValidation.d.ts.map +1 -0
- package/dist/ai/common/HFI_JobRunFns.d.ts.map +1 -0
- package/dist/ai/common/HFI_ModelInfo.d.ts.map +1 -0
- package/dist/ai/common/HFI_ModelSchema.d.ts.map +1 -0
- package/dist/ai/common/HFI_ModelSearch.d.ts.map +1 -0
- package/dist/ai/common/HFI_TextEmbedding.d.ts.map +1 -0
- package/dist/ai/common/HFI_TextGeneration.d.ts.map +1 -0
- package/dist/ai/common/HFI_TextRewriter.d.ts.map +1 -0
- package/dist/ai/common/HFI_TextSummary.d.ts.map +1 -0
- package/dist/ai/common/HFI_ToolCalling.d.ts.map +1 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/registerHfInference.d.ts.map +1 -0
- package/dist/ai/registerHfInferenceInline.d.ts.map +1 -0
- package/dist/ai/registerHfInferenceWorker.d.ts.map +1 -0
- package/dist/{ai-provider → ai}/runtime.d.ts +1 -1
- package/dist/ai/runtime.d.ts.map +1 -0
- package/dist/{ai-provider.d.ts → ai-runtime.d.ts} +2 -2
- package/dist/ai-runtime.d.ts.map +1 -0
- package/dist/{ai-provider-runtime.js → ai-runtime.js} +47 -38
- package/dist/ai-runtime.js.map +27 -0
- package/dist/{ai-provider-runtime.d.ts → ai.d.ts} +2 -2
- package/dist/ai.d.ts.map +1 -0
- package/dist/{ai-provider.js → ai.js} +21 -13
- package/dist/ai.js.map +16 -0
- package/package.json +21 -26
- package/dist/ai-provider/HfInferenceProvider.d.ts.map +0 -1
- package/dist/ai-provider/HfInferenceQueuedProvider.d.ts.map +0 -1
- package/dist/ai-provider/common/HFI_AspectRatio.d.ts.map +0 -1
- package/dist/ai-provider/common/HFI_Client.d.ts.map +0 -1
- package/dist/ai-provider/common/HFI_Constants.d.ts.map +0 -1
- package/dist/ai-provider/common/HFI_ImageEdit.d.ts.map +0 -1
- package/dist/ai-provider/common/HFI_ImageGenerate.d.ts.map +0 -1
- package/dist/ai-provider/common/HFI_ImageValidation.d.ts.map +0 -1
- package/dist/ai-provider/common/HFI_JobRunFns.d.ts.map +0 -1
- package/dist/ai-provider/common/HFI_ModelInfo.d.ts.map +0 -1
- package/dist/ai-provider/common/HFI_ModelSchema.d.ts.map +0 -1
- package/dist/ai-provider/common/HFI_ModelSearch.d.ts.map +0 -1
- package/dist/ai-provider/common/HFI_TextEmbedding.d.ts.map +0 -1
- package/dist/ai-provider/common/HFI_TextGeneration.d.ts.map +0 -1
- package/dist/ai-provider/common/HFI_TextRewriter.d.ts.map +0 -1
- package/dist/ai-provider/common/HFI_TextSummary.d.ts.map +0 -1
- package/dist/ai-provider/common/HFI_ToolCalling.d.ts.map +0 -1
- package/dist/ai-provider/index.d.ts.map +0 -1
- package/dist/ai-provider/registerHfInference.d.ts.map +0 -1
- package/dist/ai-provider/registerHfInferenceInline.d.ts.map +0 -1
- package/dist/ai-provider/registerHfInferenceWorker.d.ts.map +0 -1
- package/dist/ai-provider/runtime.d.ts.map +0 -1
- package/dist/ai-provider-runtime.d.ts.map +0 -1
- package/dist/ai-provider-runtime.js.map +0 -27
- package/dist/ai-provider.d.ts.map +0 -1
- package/dist/ai-provider.js.map +0 -16
- /package/dist/{ai-provider → ai}/HfInferenceProvider.d.ts +0 -0
- /package/dist/{ai-provider → ai}/HfInferenceQueuedProvider.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/HFI_AspectRatio.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/HFI_Constants.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/HFI_ImageEdit.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/HFI_ImageGenerate.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/HFI_ImageValidation.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/HFI_JobRunFns.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/HFI_ModelInfo.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/HFI_ModelSchema.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/HFI_ModelSearch.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/HFI_TextEmbedding.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/HFI_TextGeneration.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/HFI_TextRewriter.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/HFI_TextSummary.d.ts +0 -0
- /package/dist/{ai-provider → ai}/common/HFI_ToolCalling.d.ts +0 -0
- /package/dist/{ai-provider → ai}/index.d.ts +0 -0
- /package/dist/{ai-provider → ai}/registerHfInference.d.ts +0 -0
- /package/dist/{ai-provider → ai}/registerHfInferenceInline.d.ts +0 -0
- /package/dist/{ai-provider → ai}/registerHfInferenceWorker.d.ts +0 -0
package/README.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# @workglow/huggingface-inference
|
|
2
|
+
|
|
3
|
+
HuggingFace Inference API provider for @workglow/ai.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Integration with huggingface-inference for Workglow AI tasks
|
|
8
|
+
- Supports standard Workglow AI task interfaces
|
|
9
|
+
- Works seamlessly with `@workglow/task-graph` and `@workglow/ai`
|
|
10
|
+
- Built-in job queue support for rate limiting and concurrency
|
|
11
|
+
|
|
12
|
+
## Installation
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install @workglow/huggingface-inference
|
|
16
|
+
# or
|
|
17
|
+
bun add @workglow/huggingface-inference
|
|
18
|
+
# or
|
|
19
|
+
yarn add @workglow/huggingface-inference
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Usage
|
|
23
|
+
|
|
24
|
+
```typescript
|
|
25
|
+
import { registerHuggingfaceInference } from "@workglow/huggingface-inference/ai-runtime";
|
|
26
|
+
import { TextGenerationTask } from "@workglow/ai";
|
|
27
|
+
import { Workflow } from "@workglow/task-graph";
|
|
28
|
+
|
|
29
|
+
// 1. Register the provider
|
|
30
|
+
await registerHuggingfaceInference();
|
|
31
|
+
|
|
32
|
+
// 2. Use it in a workflow
|
|
33
|
+
const workflow = new Workflow();
|
|
34
|
+
workflow.add(new TextGenerationTask({
|
|
35
|
+
model: "default-model",
|
|
36
|
+
prompt: "Hello world!"
|
|
37
|
+
}));
|
|
38
|
+
|
|
39
|
+
const result = await workflow.run();
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## License
|
|
43
|
+
|
|
44
|
+
Apache 2.0 - See [LICENSE](../../LICENSE) for details.
|
|
@@ -0,0 +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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAejD;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,wBAOvC;CAAG"}
|
|
@@ -0,0 +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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiB1C,4FAA4F;AAC5F,qBAAa,yBAA0B,SAAQ,8BAO7C;CAAG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HFI_AspectRatio.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_AspectRatio.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC;AAElE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAyBD,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,GAAG,SAAS,CAGvF;AAED,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5D"}
|
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { InferenceProviderOrPolicy } from "@huggingface/inference";
|
|
7
7
|
import type { HfInferenceModelConfig } from "./HFI_ModelSchema";
|
|
8
|
-
|
|
8
|
+
type HfInferenceSDKModule = typeof import("@huggingface/inference");
|
|
9
|
+
export declare function loadHfInferenceSDK(): Promise<HfInferenceSDKModule>;
|
|
9
10
|
export declare function getClient(model: HfInferenceModelConfig | undefined): Promise<import("@huggingface/inference").InferenceClient>;
|
|
10
11
|
export declare function getModelName(model: HfInferenceModelConfig | undefined): string;
|
|
11
12
|
export declare function getProvider(model: HfInferenceModelConfig | undefined): InferenceProviderOrPolicy | undefined;
|
|
13
|
+
export {};
|
|
12
14
|
//# sourceMappingURL=HFI_Client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HFI_Client.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_Client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAExE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAChE,KAAK,oBAAoB,GAAG,cAAc,wBAAwB,CAAC,CAAC;AAKpE,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAUxE;AASD,wBAAsB,SAAS,CAAC,KAAK,EAAE,sBAAsB,GAAG,SAAS,6DAexE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,sBAAsB,GAAG,SAAS,GAAG,MAAM,CAM9E;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,sBAAsB,GAAG,SAAS,GACxC,yBAAyB,GAAG,SAAS,CAEvC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HFI_Constants.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_Constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,YAAY,iBAAiB,CAAC"}
|
|
@@ -0,0 +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,kBAAkB,EAClB,mBAAmB,EAEpB,MAAM,cAAc,CAAC;AAOtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AA0BhE,eAAO,MAAM,aAAa,EAAE,eAAe,CACzC,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,CAoDvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,kBAAkB,CACnD,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,CAMvB,CAAC"}
|
|
@@ -0,0 +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,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EAExB,MAAM,cAAc,CAAC;AAMtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAYhE,eAAO,MAAM,iBAAiB,EAAE,eAAe,CAC7C,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,CAyCvB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,CACvD,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,CAMvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HFI_ImageValidation.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_ImageValidation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,wBAAgB,wBAAwB,IAAI,IAAI,CA8B/C"}
|
|
@@ -0,0 +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,eAAe,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAWxF,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAUvF,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CACnC,MAAM,EACN,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAQrD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
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,CA8BvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HFI_ModelSchema.d.ts","sourceRoot":"","sources":["../../../src/ai/common/HFI_ModelSchema.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAwB,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAGzE,eAAO,MAAM,sBAAsB;mBAC3B,QAAQ;;iBAEZ,QAAQ;qBACN,KAAK;qBACL,WAAW,EAAE,qDAAqD;;iBAEpE,eAAe;qBACb,IAAI,EAAE,QAAQ;qBACd,WAAW,EAAE,gDAAgD;qBAC7D,UAAU;yBACR,UAAU;6BACR,IAAI,EAAE,QAAQ;6BACd,WAAW,EACT,gFAAgF;;yBAEpF,cAAc;6BACZ,IAAI,EAAE,QAAQ;6BACd,MAAM,EAAE,YAAY;6BACpB,WAAW,EAAE,yDAAyD;6BACtE,aAAa;;yBAEf,QAAQ;6BACN,IAAI,EAAE,QAAQ;6BACd,WAAW,EACT,iGAAiG;;;qBAGvG,QAAQ;qBACR,oBAAoB;;;;;CAKe,CAAC;AAE1C,eAAO,MAAM,4BAA4B;mBACjC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;qBAjCV,KAAK;qBACL,WAAW,EAAE,qDAAqD;;;qBAGlE,IAAI,EAAE,QAAQ;qBACd,WAAW,EAAE,gDAAgD;qBAC7D,UAAU;yBACR,UAAU;6BACR,IAAI,EAAE,QAAQ;6BACd,WAAW,EACT,gFAAgF;;yBAEpF,cAAc;6BACZ,IAAI,EAAE,QAAQ;6BACd,MAAM,EAAE,YAAY;6BACpB,WAAW,EAAE,yDAAyD;6BACtE,aAAa;;yBAEf,QAAQ;6BACN,IAAI,EAAE,QAAQ;6BACd,WAAW,EACT,iGAAiG;;;qBAGvG,QAAQ;qBACR,oBAAoB;;;;;CAee,CAAC;AAE1C,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAErF,eAAO,MAAM,4BAA4B;mBACjC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;qBA7CV,KAAK;qBACL,WAAW,EAAE,qDAAqD;;;qBAGlE,IAAI,EAAE,QAAQ;qBACd,WAAW,EAAE,gDAAgD;qBAC7D,UAAU;yBACR,UAAU;6BACR,IAAI,EAAE,QAAQ;6BACd,WAAW,EACT,gFAAgF;;yBAEpF,cAAc;6BACZ,IAAI,EAAE,QAAQ;6BACd,MAAM,EAAE,YAAY;6BACpB,WAAW,EAAE,yDAAyD;6BACtE,aAAa;;yBAEf,QAAQ;6BACN,IAAI,EAAE,QAAQ;6BACd,WAAW,EACT,iGAAiG;;;qBAGvG,QAAQ;qBACR,oBAAoB;;;;;CA2Be,CAAC;AAE1C,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,OAAO,4BAA4B,CAAC,CAAC"}
|
|
@@ -0,0 +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,CAAC,oBAAoB,EAAE,qBAAqB,CA2BxF,CAAC"}
|
|
@@ -0,0 +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,CAyCvB,CAAC"}
|
|
@@ -0,0 +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,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,cAAc,CAAC;AAGtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,eAAO,MAAM,kBAAkB,EAAE,eAAe,CAC9C,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,CA2BvB,CAAC;AAEF,eAAO,MAAM,yBAAyB,EAAE,kBAAkB,CACxD,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,CA0BvB,CAAC"}
|
|
@@ -0,0 +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,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAC5C,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,CAqBvB,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,kBAAkB,CACtD,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,CAyBvB,CAAC"}
|
|
@@ -0,0 +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,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,CAqBvB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CACrD,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,CAyBvB,CAAC"}
|
|
@@ -0,0 +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,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AAQtB,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,eAAO,MAAM,eAAe,EAAE,eAAe,CAC3C,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,CAgCvB,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,kBAAkB,CACrD,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,CA2BvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerHfInference.d.ts","sourceRoot":"","sources":["../../src/ai/registerHfInference.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAK9D,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,yBAAyB,GAAG;IACnC,MAAM,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;CACjC,GACA,OAAO,CAAC,IAAI,CAAC,CAOf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerHfInferenceInline.d.ts","sourceRoot":"","sources":["../../src/ai/registerHfInferenceInline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAM9D,wBAAsB,yBAAyB,CAC7C,OAAO,CAAC,EAAE,yBAAyB,GAClC,OAAO,CAAC,IAAI,CAAC,CAOf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerHfInferenceWorker.d.ts","sourceRoot":"","sources":["../../src/ai/registerHfInferenceWorker.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC,CAK/D"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
/**
|
|
7
7
|
* Worker server and main-thread inline Hugging Face Inference registration (pulls in `HFI_JobRunFns`),
|
|
8
8
|
* plus API client helpers (`HFI_Client`).
|
|
9
|
-
* Import from `@workglow/huggingface-inference/ai-
|
|
9
|
+
* Import from `@workglow/huggingface-inference/ai-runtime` — not from the main `hf-inference` barrel.
|
|
10
10
|
*
|
|
11
11
|
* Use `export *` (not `export { … } from "…"`) so the Bun bundler keeps the module graph.
|
|
12
12
|
*/
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/ai/runtime.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AACH,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,6BAA6B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-runtime.d.ts","sourceRoot":"","sources":["../src/ai-runtime.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,cAAc,CAAC"}
|
|
@@ -1,11 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
+
}) : x)(function(x) {
|
|
4
|
+
if (typeof require !== "undefined")
|
|
5
|
+
return require.apply(this, arguments);
|
|
6
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
// src/ai/common/HFI_Client.ts
|
|
10
|
+
import { resolveApiKey } from "@workglow/ai/provider-utils";
|
|
11
|
+
var _loadPromise;
|
|
4
12
|
async function loadHfInferenceSDK() {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
13
|
+
_loadPromise ??= import("@huggingface/inference").then((mod) => mod).catch(() => {
|
|
14
|
+
_loadPromise = undefined;
|
|
15
|
+
throw new Error("@huggingface/inference is required for Hugging Face Inference tasks. Install it with: bun add @huggingface/inference");
|
|
16
|
+
});
|
|
17
|
+
return _loadPromise;
|
|
9
18
|
}
|
|
10
19
|
async function getClient(model) {
|
|
11
20
|
const sdk = await loadHfInferenceSDK();
|
|
@@ -32,17 +41,17 @@ function getProvider(model) {
|
|
|
32
41
|
return model?.provider_config?.provider;
|
|
33
42
|
}
|
|
34
43
|
|
|
35
|
-
// src/ai
|
|
36
|
-
import { registerProviderInline } from "@workglow/ai-
|
|
44
|
+
// src/ai/registerHfInferenceInline.ts
|
|
45
|
+
import { registerProviderInline } from "@workglow/ai/provider-utils";
|
|
37
46
|
|
|
38
|
-
// src/ai
|
|
39
|
-
import { mapHfModelResult, searchHfModels } from "@workglow/ai-
|
|
40
|
-
import { filterLabeledModelsByQuery } from "@workglow/ai-
|
|
47
|
+
// src/ai/common/HFI_ModelSearch.ts
|
|
48
|
+
import { mapHfModelResult, searchHfModels } from "@workglow/ai/provider-utils";
|
|
49
|
+
import { filterLabeledModelsByQuery } from "@workglow/ai/provider-utils";
|
|
41
50
|
|
|
42
|
-
// src/ai
|
|
51
|
+
// src/ai/common/HFI_Constants.ts
|
|
43
52
|
var HF_INFERENCE = "HF_INFERENCE";
|
|
44
53
|
|
|
45
|
-
// src/ai
|
|
54
|
+
// src/ai/common/HFI_ModelSearch.ts
|
|
46
55
|
var HFI_IMAGE_MODELS = [
|
|
47
56
|
{ id: "black-forest-labs/FLUX.1-schnell", tasks: ["ImageGenerateTask"] },
|
|
48
57
|
{ id: "black-forest-labs/FLUX.1-Kontext-dev", tasks: ["ImageEditTask"] }
|
|
@@ -84,12 +93,12 @@ var HFI_ModelSearch = async (input, _model, _onProgress, signal) => {
|
|
|
84
93
|
return { results };
|
|
85
94
|
};
|
|
86
95
|
|
|
87
|
-
// src/ai
|
|
96
|
+
// src/ai/common/HFI_ImageEdit.ts
|
|
88
97
|
import { ImageGenerationContentPolicyError, ImageGenerationProviderError } from "@workglow/ai";
|
|
89
98
|
import { getLogger } from "@workglow/util/worker";
|
|
90
|
-
import { blobToImageValue, imageValueToPngBytes } from "@workglow/ai-
|
|
99
|
+
import { blobToImageValue, imageValueToPngBytes } from "@workglow/ai/provider-utils";
|
|
91
100
|
|
|
92
|
-
// src/ai
|
|
101
|
+
// src/ai/common/HFI_AspectRatio.ts
|
|
93
102
|
var FLUX_DIMS = {
|
|
94
103
|
"1:1": { width: 1024, height: 1024 },
|
|
95
104
|
"16:9": { width: 1344, height: 768 },
|
|
@@ -117,7 +126,7 @@ function isHfInpaintingModel(modelId) {
|
|
|
117
126
|
return /inpaint|kontext/i.test(modelId);
|
|
118
127
|
}
|
|
119
128
|
|
|
120
|
-
// src/ai
|
|
129
|
+
// src/ai/common/HFI_ImageEdit.ts
|
|
121
130
|
function modelIdOf(model) {
|
|
122
131
|
return model?.model_id ?? model?.provider_config?.model_name ?? "huggingface";
|
|
123
132
|
}
|
|
@@ -174,10 +183,10 @@ var HFI_ImageEdit_Stream = async function* (input, model, signal) {
|
|
|
174
183
|
yield { type: "finish", data: {} };
|
|
175
184
|
};
|
|
176
185
|
|
|
177
|
-
// src/ai
|
|
186
|
+
// src/ai/common/HFI_ImageGenerate.ts
|
|
178
187
|
import { ImageGenerationContentPolicyError as ImageGenerationContentPolicyError2, ImageGenerationProviderError as ImageGenerationProviderError2 } from "@workglow/ai";
|
|
179
188
|
import { getLogger as getLogger2 } from "@workglow/util/worker";
|
|
180
|
-
import { blobToImageValue as blobToImageValue2 } from "@workglow/ai-
|
|
189
|
+
import { blobToImageValue as blobToImageValue2 } from "@workglow/ai/provider-utils";
|
|
181
190
|
function modelIdOf2(model) {
|
|
182
191
|
return model?.model_id ?? model?.provider_config?.model_name ?? "huggingface";
|
|
183
192
|
}
|
|
@@ -222,7 +231,7 @@ var HFI_ImageGenerate_Stream = async function* (input, model, signal) {
|
|
|
222
231
|
yield { type: "finish", data: {} };
|
|
223
232
|
};
|
|
224
233
|
|
|
225
|
-
// src/ai
|
|
234
|
+
// src/ai/common/HFI_ModelInfo.ts
|
|
226
235
|
var HFI_ModelInfo = async (input, model) => {
|
|
227
236
|
if (input.detail === "dimensions") {
|
|
228
237
|
const pc = model?.provider_config;
|
|
@@ -253,7 +262,7 @@ var HFI_ModelInfo = async (input, model) => {
|
|
|
253
262
|
};
|
|
254
263
|
};
|
|
255
264
|
|
|
256
|
-
// src/ai
|
|
265
|
+
// src/ai/common/HFI_TextEmbedding.ts
|
|
257
266
|
import { getLogger as getLogger3 } from "@workglow/util/worker";
|
|
258
267
|
var HFI_TextEmbedding = async (input, model, update_progress, signal) => {
|
|
259
268
|
const logger = getLogger3();
|
|
@@ -282,7 +291,7 @@ var HFI_TextEmbedding = async (input, model, update_progress, signal) => {
|
|
|
282
291
|
return { vector: new Float32Array(embedding) };
|
|
283
292
|
};
|
|
284
293
|
|
|
285
|
-
// src/ai
|
|
294
|
+
// src/ai/common/HFI_TextGeneration.ts
|
|
286
295
|
import { getLogger as getLogger4 } from "@workglow/util/worker";
|
|
287
296
|
var HFI_TextGeneration = async (input, model, update_progress, signal) => {
|
|
288
297
|
const logger = getLogger4();
|
|
@@ -327,7 +336,7 @@ var HFI_TextGeneration_Stream = async function* (input, model, signal) {
|
|
|
327
336
|
yield { type: "finish", data: {} };
|
|
328
337
|
};
|
|
329
338
|
|
|
330
|
-
// src/ai
|
|
339
|
+
// src/ai/common/HFI_TextRewriter.ts
|
|
331
340
|
var HFI_TextRewriter = async (input, model, update_progress, signal) => {
|
|
332
341
|
update_progress(0, "Starting HF Inference text rewriting");
|
|
333
342
|
const client = await getClient(model);
|
|
@@ -365,7 +374,7 @@ var HFI_TextRewriter_Stream = async function* (input, model, signal) {
|
|
|
365
374
|
yield { type: "finish", data: {} };
|
|
366
375
|
};
|
|
367
376
|
|
|
368
|
-
// src/ai
|
|
377
|
+
// src/ai/common/HFI_TextSummary.ts
|
|
369
378
|
var HFI_TextSummary = async (input, model, update_progress, signal) => {
|
|
370
379
|
update_progress(0, "Starting HF Inference text summarization");
|
|
371
380
|
const client = await getClient(model);
|
|
@@ -403,14 +412,14 @@ var HFI_TextSummary_Stream = async function* (input, model, signal) {
|
|
|
403
412
|
yield { type: "finish", data: {} };
|
|
404
413
|
};
|
|
405
414
|
|
|
406
|
-
// src/ai
|
|
415
|
+
// src/ai/common/HFI_ToolCalling.ts
|
|
407
416
|
import { filterValidToolCalls, toOpenAIMessages } from "@workglow/ai/worker";
|
|
408
417
|
import {
|
|
409
418
|
accumulateOpenAIStream,
|
|
410
419
|
buildOpenAITools,
|
|
411
420
|
mapOpenAIToolChoice,
|
|
412
421
|
parseOpenAIToolCallMessage
|
|
413
|
-
} from "@workglow/ai-
|
|
422
|
+
} from "@workglow/ai/provider-utils";
|
|
414
423
|
var HFI_ToolCalling = async (input, model, update_progress, signal) => {
|
|
415
424
|
update_progress(0, "Starting HF Inference tool calling");
|
|
416
425
|
const client = await getClient(model);
|
|
@@ -459,7 +468,7 @@ var HFI_ToolCalling_Stream = async function* (input, model, signal) {
|
|
|
459
468
|
yield* accumulateOpenAIStream(stream);
|
|
460
469
|
};
|
|
461
470
|
|
|
462
|
-
// src/ai
|
|
471
|
+
// src/ai/common/HFI_JobRunFns.ts
|
|
463
472
|
var HFI_TASKS = {
|
|
464
473
|
ModelInfoTask: HFI_ModelInfo,
|
|
465
474
|
TextGenerationTask: HFI_TextGeneration,
|
|
@@ -480,9 +489,9 @@ var HFI_STREAM_TASKS = {
|
|
|
480
489
|
ImageEditTask: HFI_ImageEdit_Stream
|
|
481
490
|
};
|
|
482
491
|
|
|
483
|
-
// src/ai
|
|
492
|
+
// src/ai/HfInferenceQueuedProvider.ts
|
|
484
493
|
import { AiProvider } from "@workglow/ai";
|
|
485
|
-
import { createCloudProviderClass } from "@workglow/ai-
|
|
494
|
+
import { createCloudProviderClass } from "@workglow/ai/provider-utils";
|
|
486
495
|
var HFI_QUEUED_TASK_TYPES = [
|
|
487
496
|
"ModelInfoTask",
|
|
488
497
|
"TextGenerationTask",
|
|
@@ -502,7 +511,7 @@ class HfInferenceQueuedProvider extends createCloudProviderClass(AiProvider, {
|
|
|
502
511
|
}) {
|
|
503
512
|
}
|
|
504
513
|
|
|
505
|
-
// src/ai
|
|
514
|
+
// src/ai/common/HFI_ImageValidation.ts
|
|
506
515
|
import { AiImageOutputTask, ProviderUnsupportedFeatureError } from "@workglow/ai";
|
|
507
516
|
function registerHfImageValidator() {
|
|
508
517
|
AiImageOutputTask.registerProviderImageValidator(HF_INFERENCE, (taskType, input, model) => {
|
|
@@ -520,18 +529,18 @@ function registerHfImageValidator() {
|
|
|
520
529
|
});
|
|
521
530
|
}
|
|
522
531
|
|
|
523
|
-
// src/ai
|
|
532
|
+
// src/ai/registerHfInferenceInline.ts
|
|
524
533
|
async function registerHfInferenceInline(options) {
|
|
525
534
|
registerHfImageValidator();
|
|
526
535
|
await registerProviderInline(new HfInferenceQueuedProvider(HFI_TASKS, HFI_STREAM_TASKS), "Hugging Face Inference", options);
|
|
527
536
|
}
|
|
528
537
|
|
|
529
|
-
// src/ai
|
|
530
|
-
import { registerProviderWorker } from "@workglow/ai-
|
|
538
|
+
// src/ai/registerHfInferenceWorker.ts
|
|
539
|
+
import { registerProviderWorker } from "@workglow/ai/provider-utils";
|
|
531
540
|
|
|
532
|
-
// src/ai
|
|
541
|
+
// src/ai/HfInferenceProvider.ts
|
|
533
542
|
import { AiProvider as AiProvider2 } from "@workglow/ai/worker";
|
|
534
|
-
import { createCloudProviderClass as createCloudProviderClass2 } from "@workglow/ai-
|
|
543
|
+
import { createCloudProviderClass as createCloudProviderClass2 } from "@workglow/ai/provider-utils";
|
|
535
544
|
var HFI_WORKER_TASK_TYPES = [
|
|
536
545
|
"ModelInfoTask",
|
|
537
546
|
"TextGenerationTask",
|
|
@@ -549,7 +558,7 @@ class HfInferenceProvider extends createCloudProviderClass2(AiProvider2, {
|
|
|
549
558
|
}) {
|
|
550
559
|
}
|
|
551
560
|
|
|
552
|
-
// src/ai
|
|
561
|
+
// src/ai/registerHfInferenceWorker.ts
|
|
553
562
|
async function registerHfInferenceWorker() {
|
|
554
563
|
await registerProviderWorker((ws) => new HfInferenceProvider(HFI_TASKS, HFI_STREAM_TASKS).registerOnWorkerServer(ws), "Hugging Face Inference");
|
|
555
564
|
}
|
|
@@ -562,4 +571,4 @@ export {
|
|
|
562
571
|
getClient
|
|
563
572
|
};
|
|
564
573
|
|
|
565
|
-
//# debugId=
|
|
574
|
+
//# debugId=5D7101999CE2E9A764756E2164756E21
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/ai/common/HFI_Client.ts", "../src/ai/registerHfInferenceInline.ts", "../src/ai/common/HFI_ModelSearch.ts", "../src/ai/common/HFI_Constants.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_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_ImageValidation.ts", "../src/ai/registerHfInferenceWorker.ts", "../src/ai/HfInferenceProvider.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { InferenceProviderOrPolicy } from \"@huggingface/inference\";\nimport { 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_STREAM_TASKS, HFI_TASKS } 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_TASKS, HFI_STREAM_TASKS),\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 {\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 task overrides (HF pipeline tags don't cover ImageGenerateTask/ImageEditTask). */\nconst HFI_IMAGE_MODELS: Array<{ id: string; tasks: string[] }> = [\n { id: \"black-forest-labs/FLUX.1-schnell\", tasks: [\"ImageGenerateTask\"] },\n { id: \"black-forest-labs/FLUX.1-Kontext-dev\", tasks: [\"ImageEditTask\"] },\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 tasks: m.tasks,\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 _onProgress,\n signal\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 return { results: filtered };\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.tasks = imageEntry.tasks;\n }\n return mapped;\n });\n return { results };\n};\n",
|
|
8
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nexport const HF_INFERENCE = \"HF_INFERENCE\";\n",
|
|
9
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n AiProviderStreamFn,\n ImageEditTaskInput,\n ImageEditTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\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\nexport const HFI_ImageEdit: AiProviderRunFn<\n ImageEditTaskInput,\n ImageEditTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n const logger = getLogger();\n const timer = `hfi:ImageEdit:${getModelName(model)}`;\n logger.time(timer);\n update_progress(0, \"Starting HF image edit\");\n\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 update_progress(100, \"Completed HF image edit\");\n logger.timeEnd(timer);\n return { 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\n/**\n * One-shot stream wrapper. HF Inference does not support partial image streaming,\n * so we call the non-streaming run function, yield one snapshot, then finish.\n */\nexport const HFI_ImageEdit_Stream: AiProviderStreamFn<\n ImageEditTaskInput,\n ImageEditTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<ImageEditTaskOutput>> {\n const result = await HFI_ImageEdit(input, model, () => {}, signal);\n if (signal.aborted) return;\n yield { type: \"snapshot\", data: result } as StreamEvent<ImageEditTaskOutput>;\n yield { type: \"finish\", data: {} as ImageEditTaskOutput };\n};\n",
|
|
10
|
+
"/**\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",
|
|
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 AiProviderStreamFn,\n ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n ModelConfig,\n} from \"@workglow/ai\";\nimport { ImageGenerationContentPolicyError, ImageGenerationProviderError } from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\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\nexport const HFI_ImageGenerate: AiProviderRunFn<\n ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n const logger = getLogger();\n const timer = `hfi:ImageGenerate:${getModelName(model)}`;\n logger.time(timer);\n update_progress(0, \"Starting HF image generation\");\n\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 update_progress(100, \"Completed HF image generation\");\n logger.timeEnd(timer);\n return { 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\n/**\n * One-shot stream wrapper. HF Inference does not support partial image streaming,\n * so we call the non-streaming run function, yield one snapshot, then finish.\n */\nexport const HFI_ImageGenerate_Stream: AiProviderStreamFn<\n ImageGenerateTaskInput,\n ImageGenerateTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<ImageGenerateTaskOutput>> {\n const result = await HFI_ImageGenerate(input, model, () => {}, signal);\n if (signal.aborted) return;\n yield { type: \"snapshot\", data: result } as StreamEvent<ImageGenerateTaskOutput>;\n yield { type: \"finish\", data: {} as ImageGenerateTaskOutput };\n};\n",
|
|
12
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { AiProviderRunFn, 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) => {\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 return {\n model: input.model,\n is_local: false,\n is_remote: true,\n supports_browser: true,\n supports_node: true,\n is_cached: false,\n is_loaded: false,\n file_sizes: null,\n ...(native_dimensions !== undefined ? { native_dimensions } : {}),\n ...(mrl ? { mrl } : {}),\n };\n }\n return {\n model: input.model,\n is_local: false,\n is_remote: true,\n supports_browser: true,\n supports_node: true,\n is_cached: false,\n is_loaded: false,\n file_sizes: null,\n };\n};\n",
|
|
13
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n} from \"@workglow/ai\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName } from \"./HFI_Client\";\n\nexport const HFI_TextEmbedding: AiProviderRunFn<\n TextEmbeddingTaskInput,\n TextEmbeddingTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n const logger = getLogger();\n const timerLabel = `hfi:TextEmbedding:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n\n update_progress(0, \"Starting HF Inference text embedding\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n\n if (Array.isArray(input.text)) {\n const embeddings = await Promise.all(\n input.text.map((text) =>\n client.featureExtraction(\n {\n model: modelName,\n inputs: text,\n },\n { signal }\n )\n )\n );\n\n update_progress(100, \"Completed HF Inference text embedding\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name, batch: true });\n return {\n vector: embeddings.map((embedding) => new Float32Array(embedding as unknown as number[])),\n };\n }\n\n const embedding = await client.featureExtraction(\n {\n model: modelName,\n inputs: input.text,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text embedding\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n return { vector: new Float32Array(embedding as unknown as number[]) };\n};\n",
|
|
14
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n AiProviderRunFn,\n AiProviderStreamFn,\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport { getLogger } from \"@workglow/util/worker\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_TextGeneration: AiProviderRunFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n const logger = getLogger();\n const timerLabel = `hfi:TextGeneration:${model?.provider_config?.model_name}`;\n logger.time(timerLabel, { model: model?.provider_config?.model_name });\n\n update_progress(0, \"Starting HF Inference text generation\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const response = await client.chatCompletion(\n {\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n top_p: input.topP,\n frequency_penalty: input.frequencyPenalty,\n provider,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text generation\");\n logger.timeEnd(timerLabel, { model: model?.provider_config?.model_name });\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\nexport const HFI_TextGeneration_Stream: AiProviderStreamFn<\n TextGenerationTaskInput,\n TextGenerationTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextGenerationTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const stream = client.chatCompletionStream(\n {\n model: modelName,\n messages: [{ role: \"user\", content: input.prompt }],\n max_tokens: input.maxTokens,\n temperature: input.temperature,\n top_p: input.topP,\n frequency_penalty: input.frequencyPenalty,\n provider,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextGenerationTaskOutput };\n};\n",
|
|
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 AiProviderStreamFn,\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_TextRewriter: AiProviderRunFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting HF Inference text rewriting\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const response = await client.chatCompletion(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n provider,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text rewriting\");\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\nexport const HFI_TextRewriter_Stream: AiProviderStreamFn<\n TextRewriterTaskInput,\n TextRewriterTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextRewriterTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const stream = client.chatCompletionStream(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: input.prompt },\n { role: \"user\", content: input.text },\n ],\n provider,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextRewriterTaskOutput };\n};\n",
|
|
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 AiProviderStreamFn,\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_TextSummary: AiProviderRunFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting HF Inference text summarization\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const response = await client.chatCompletion(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n provider,\n },\n { signal }\n );\n\n update_progress(100, \"Completed HF Inference text summarization\");\n return { text: response.choices[0]?.message?.content ?? \"\" };\n};\n\nexport const HFI_TextSummary_Stream: AiProviderStreamFn<\n TextSummaryTaskInput,\n TextSummaryTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<TextSummaryTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const stream = client.chatCompletionStream(\n {\n model: modelName,\n messages: [\n { role: \"system\", content: \"Summarize the following text concisely.\" },\n { role: \"user\", content: input.text },\n ],\n provider,\n },\n { signal }\n );\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta?.content ?? \"\";\n if (delta) {\n yield { type: \"text-delta\", port: \"text\", textDelta: delta };\n }\n }\n yield { type: \"finish\", data: {} as TextSummaryTaskOutput };\n};\n",
|
|
17
|
+
"/**\n * @license\n * Copyright 2025 Steven Roussey <sroussey@gmail.com>\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { filterValidToolCalls, toOpenAIMessages } from \"@workglow/ai/worker\";\nimport type {\n AiProviderRunFn,\n AiProviderStreamFn,\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n} from \"@workglow/ai\";\nimport type { StreamEvent } from \"@workglow/task-graph\";\nimport {\n accumulateOpenAIStream,\n buildOpenAITools,\n mapOpenAIToolChoice,\n parseOpenAIToolCallMessage,\n} from \"@workglow/ai/provider-utils\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nexport const HFI_ToolCalling: AiProviderRunFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n HfInferenceModelConfig\n> = async (input, model, update_progress, signal) => {\n update_progress(0, \"Starting HF Inference tool calling\");\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const tools = 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 };\n if (toolChoice !== \"none\") {\n params.tools = tools;\n params.tool_choice = toolChoice;\n }\n\n const response = await client.chatCompletion(params, { signal });\n\n const text = response.choices[0]?.message?.content ?? \"\";\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const toolCalls = parseOpenAIToolCallMessage((response.choices[0]?.message as any)?.tool_calls);\n\n update_progress(100, \"Completed HF Inference tool calling\");\n return { text, toolCalls: filterValidToolCalls(toolCalls, input.tools) };\n};\n\nexport const HFI_ToolCalling_Stream: AiProviderStreamFn<\n ToolCallingTaskInput,\n ToolCallingTaskOutput,\n HfInferenceModelConfig\n> = async function* (input, model, signal): AsyncIterable<StreamEvent<ToolCallingTaskOutput>> {\n const client = await getClient(model);\n const modelName = getModelName(model);\n const provider = getProvider(model);\n\n const tools = 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 yield* accumulateOpenAIStream(stream);\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, AiProviderStreamFn } from \"@workglow/ai\";\nimport type { HfInferenceModelConfig } from \"./HFI_ModelSchema\";\nimport { HFI_ModelSearch } from \"./HFI_ModelSearch\";\n\nexport { loadHfInferenceSDK, getClient, getModelName, getProvider } from \"./HFI_Client\";\n\nimport { HFI_ImageEdit, HFI_ImageEdit_Stream } from \"./HFI_ImageEdit\";\nimport { HFI_ImageGenerate, HFI_ImageGenerate_Stream } from \"./HFI_ImageGenerate\";\nimport { HFI_ModelInfo } from \"./HFI_ModelInfo\";\nimport { HFI_TextEmbedding } from \"./HFI_TextEmbedding\";\nimport { HFI_TextGeneration, HFI_TextGeneration_Stream } from \"./HFI_TextGeneration\";\nimport { HFI_TextRewriter, HFI_TextRewriter_Stream } from \"./HFI_TextRewriter\";\nimport { HFI_TextSummary, HFI_TextSummary_Stream } from \"./HFI_TextSummary\";\nimport { HFI_ToolCalling, HFI_ToolCalling_Stream } from \"./HFI_ToolCalling\";\n\nexport const HFI_TASKS: Record<string, AiProviderRunFn<any, any, HfInferenceModelConfig>> = {\n ModelInfoTask: HFI_ModelInfo,\n TextGenerationTask: HFI_TextGeneration,\n TextEmbeddingTask: HFI_TextEmbedding,\n TextRewriterTask: HFI_TextRewriter,\n TextSummaryTask: HFI_TextSummary,\n ToolCallingTask: HFI_ToolCalling,\n ModelSearchTask: HFI_ModelSearch,\n ImageGenerateTask: HFI_ImageGenerate,\n ImageEditTask: HFI_ImageEdit,\n};\n\nexport const HFI_STREAM_TASKS: Record<\n string,\n AiProviderStreamFn<any, any, HfInferenceModelConfig>\n> = {\n TextGenerationTask: HFI_TextGeneration_Stream,\n TextRewriterTask: HFI_TextRewriter_Stream,\n TextSummaryTask: HFI_TextSummary_Stream,\n ToolCallingTask: HFI_ToolCalling_Stream,\n ImageGenerateTask: HFI_ImageGenerate_Stream,\n ImageEditTask: HFI_ImageEdit_Stream,\n};\n",
|
|
19
|
+
"/**\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 { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport { HF_INFERENCE } from \"./common/HFI_Constants\";\nimport type { HfInferenceModelConfig } from \"./common/HFI_ModelSchema\";\n\nconst HFI_QUEUED_TASK_TYPES = [\n \"ModelInfoTask\",\n \"TextGenerationTask\",\n \"TextEmbeddingTask\",\n \"TextRewriterTask\",\n \"TextSummaryTask\",\n \"ToolCallingTask\",\n \"ModelSearchTask\",\n \"ImageGenerateTask\",\n \"ImageEditTask\",\n] as const;\n\n/** Main-thread registration (inline or worker-backed). No queue — uses direct execution. */\nexport class HfInferenceQueuedProvider extends createCloudProviderClass<\n HfInferenceModelConfig,\n typeof HFI_QUEUED_TASK_TYPES\n>(AiProvider, {\n name: HF_INFERENCE,\n displayName: \"Hugging Face Inference\",\n taskTypes: HFI_QUEUED_TASK_TYPES,\n}) {}\n",
|
|
20
|
+
"/**\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",
|
|
21
|
+
"/**\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_STREAM_TASKS, HFI_TASKS } from \"./common/HFI_JobRunFns\";\nimport { HfInferenceProvider } from \"./HfInferenceProvider\";\n\nexport async function registerHfInferenceWorker(): Promise<void> {\n await registerProviderWorker(\n (ws) => new HfInferenceProvider(HFI_TASKS, HFI_STREAM_TASKS).registerOnWorkerServer(ws),\n \"Hugging Face Inference\"\n );\n}\n",
|
|
22
|
+
"/**\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 { createCloudProviderClass } from \"@workglow/ai/provider-utils\";\nimport { HF_INFERENCE } from \"./common/HFI_Constants\";\nimport type { HfInferenceModelConfig } from \"./common/HFI_ModelSchema\";\n\nconst HFI_WORKER_TASK_TYPES = [\n \"ModelInfoTask\",\n \"TextGenerationTask\",\n \"TextEmbeddingTask\",\n \"TextRewriterTask\",\n \"TextSummaryTask\",\n \"ToolCallingTask\",\n \"ModelSearchTask\",\n] as const;\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<\n HfInferenceModelConfig,\n typeof HFI_WORKER_TASK_TYPES\n>(AiProvider, {\n name: HF_INFERENCE,\n displayName: \"Hugging Face Inference\",\n taskTypes: HFI_WORKER_TASK_TYPES,\n}) {}\n"
|
|
23
|
+
],
|
|
24
|
+
"mappings": "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",
|
|
25
|
+
"debugId": "5D7101999CE2E9A764756E2164756E21",
|
|
26
|
+
"names": []
|
|
27
|
+
}
|
package/dist/ai.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../src/ai.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAC"}
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
2
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
3
|
+
}) : x)(function(x) {
|
|
4
|
+
if (typeof require !== "undefined")
|
|
5
|
+
return require.apply(this, arguments);
|
|
6
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
7
|
+
});
|
|
8
|
+
|
|
9
|
+
// src/ai/common/HFI_AspectRatio.ts
|
|
2
10
|
var FLUX_DIMS = {
|
|
3
11
|
"1:1": { width: 1024, height: 1024 },
|
|
4
12
|
"16:9": { width: 1344, height: 768 },
|
|
@@ -26,10 +34,10 @@ function isHfInpaintingModel(modelId) {
|
|
|
26
34
|
return /inpaint|kontext/i.test(modelId);
|
|
27
35
|
}
|
|
28
36
|
|
|
29
|
-
// src/ai
|
|
37
|
+
// src/ai/common/HFI_Constants.ts
|
|
30
38
|
var HF_INFERENCE = "HF_INFERENCE";
|
|
31
39
|
|
|
32
|
-
// src/ai
|
|
40
|
+
// src/ai/common/HFI_ImageValidation.ts
|
|
33
41
|
import { AiImageOutputTask, ProviderUnsupportedFeatureError } from "@workglow/ai";
|
|
34
42
|
function registerHfImageValidator() {
|
|
35
43
|
AiImageOutputTask.registerProviderImageValidator(HF_INFERENCE, (taskType, input, model) => {
|
|
@@ -47,7 +55,7 @@ function registerHfImageValidator() {
|
|
|
47
55
|
});
|
|
48
56
|
}
|
|
49
57
|
|
|
50
|
-
// src/ai
|
|
58
|
+
// src/ai/common/HFI_ModelSchema.ts
|
|
51
59
|
import { ModelConfigSchema, ModelRecordSchema } from "@workglow/ai/worker";
|
|
52
60
|
var HfInferenceModelSchema = {
|
|
53
61
|
type: "object",
|
|
@@ -101,9 +109,9 @@ var HfInferenceModelConfigSchema = {
|
|
|
101
109
|
additionalProperties: false
|
|
102
110
|
};
|
|
103
111
|
|
|
104
|
-
// src/ai
|
|
105
|
-
import { mapHfModelResult, searchHfModels } from "@workglow/ai-
|
|
106
|
-
import { filterLabeledModelsByQuery } from "@workglow/ai-
|
|
112
|
+
// src/ai/common/HFI_ModelSearch.ts
|
|
113
|
+
import { mapHfModelResult, searchHfModels } from "@workglow/ai/provider-utils";
|
|
114
|
+
import { filterLabeledModelsByQuery } from "@workglow/ai/provider-utils";
|
|
107
115
|
var HFI_IMAGE_MODELS = [
|
|
108
116
|
{ id: "black-forest-labs/FLUX.1-schnell", tasks: ["ImageGenerateTask"] },
|
|
109
117
|
{ id: "black-forest-labs/FLUX.1-Kontext-dev", tasks: ["ImageEditTask"] }
|
|
@@ -145,12 +153,12 @@ var HFI_ModelSearch = async (input, _model, _onProgress, signal) => {
|
|
|
145
153
|
return { results };
|
|
146
154
|
};
|
|
147
155
|
|
|
148
|
-
// src/ai
|
|
149
|
-
import { registerProviderWithWorker } from "@workglow/ai-
|
|
156
|
+
// src/ai/registerHfInference.ts
|
|
157
|
+
import { registerProviderWithWorker } from "@workglow/ai/provider-utils";
|
|
150
158
|
|
|
151
|
-
// src/ai
|
|
159
|
+
// src/ai/HfInferenceQueuedProvider.ts
|
|
152
160
|
import { AiProvider } from "@workglow/ai";
|
|
153
|
-
import { createCloudProviderClass } from "@workglow/ai-
|
|
161
|
+
import { createCloudProviderClass } from "@workglow/ai/provider-utils";
|
|
154
162
|
var HFI_QUEUED_TASK_TYPES = [
|
|
155
163
|
"ModelInfoTask",
|
|
156
164
|
"TextGenerationTask",
|
|
@@ -170,7 +178,7 @@ class HfInferenceQueuedProvider extends createCloudProviderClass(AiProvider, {
|
|
|
170
178
|
}) {
|
|
171
179
|
}
|
|
172
180
|
|
|
173
|
-
// src/ai
|
|
181
|
+
// src/ai/registerHfInference.ts
|
|
174
182
|
async function registerHfInference(options) {
|
|
175
183
|
registerHfImageValidator();
|
|
176
184
|
await registerProviderWithWorker(new HfInferenceQueuedProvider, "Hugging Face Inference", options);
|
|
@@ -187,4 +195,4 @@ export {
|
|
|
187
195
|
HFI_ModelSearch
|
|
188
196
|
};
|
|
189
197
|
|
|
190
|
-
//# debugId=
|
|
198
|
+
//# debugId=4A06452CE7A9419E64756E2164756E21
|