@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.
Files changed (80) hide show
  1. package/README.md +44 -0
  2. package/dist/ai/HfInferenceProvider.d.ts.map +1 -0
  3. package/dist/ai/HfInferenceQueuedProvider.d.ts.map +1 -0
  4. package/dist/ai/common/HFI_AspectRatio.d.ts.map +1 -0
  5. package/dist/{ai-provider → ai}/common/HFI_Client.d.ts +3 -1
  6. package/dist/ai/common/HFI_Client.d.ts.map +1 -0
  7. package/dist/ai/common/HFI_Constants.d.ts.map +1 -0
  8. package/dist/ai/common/HFI_ImageEdit.d.ts.map +1 -0
  9. package/dist/ai/common/HFI_ImageGenerate.d.ts.map +1 -0
  10. package/dist/ai/common/HFI_ImageValidation.d.ts.map +1 -0
  11. package/dist/ai/common/HFI_JobRunFns.d.ts.map +1 -0
  12. package/dist/ai/common/HFI_ModelInfo.d.ts.map +1 -0
  13. package/dist/ai/common/HFI_ModelSchema.d.ts.map +1 -0
  14. package/dist/ai/common/HFI_ModelSearch.d.ts.map +1 -0
  15. package/dist/ai/common/HFI_TextEmbedding.d.ts.map +1 -0
  16. package/dist/ai/common/HFI_TextGeneration.d.ts.map +1 -0
  17. package/dist/ai/common/HFI_TextRewriter.d.ts.map +1 -0
  18. package/dist/ai/common/HFI_TextSummary.d.ts.map +1 -0
  19. package/dist/ai/common/HFI_ToolCalling.d.ts.map +1 -0
  20. package/dist/ai/index.d.ts.map +1 -0
  21. package/dist/ai/registerHfInference.d.ts.map +1 -0
  22. package/dist/ai/registerHfInferenceInline.d.ts.map +1 -0
  23. package/dist/ai/registerHfInferenceWorker.d.ts.map +1 -0
  24. package/dist/{ai-provider → ai}/runtime.d.ts +1 -1
  25. package/dist/ai/runtime.d.ts.map +1 -0
  26. package/dist/{ai-provider.d.ts → ai-runtime.d.ts} +2 -2
  27. package/dist/ai-runtime.d.ts.map +1 -0
  28. package/dist/{ai-provider-runtime.js → ai-runtime.js} +47 -38
  29. package/dist/ai-runtime.js.map +27 -0
  30. package/dist/{ai-provider-runtime.d.ts → ai.d.ts} +2 -2
  31. package/dist/ai.d.ts.map +1 -0
  32. package/dist/{ai-provider.js → ai.js} +21 -13
  33. package/dist/ai.js.map +16 -0
  34. package/package.json +21 -26
  35. package/dist/ai-provider/HfInferenceProvider.d.ts.map +0 -1
  36. package/dist/ai-provider/HfInferenceQueuedProvider.d.ts.map +0 -1
  37. package/dist/ai-provider/common/HFI_AspectRatio.d.ts.map +0 -1
  38. package/dist/ai-provider/common/HFI_Client.d.ts.map +0 -1
  39. package/dist/ai-provider/common/HFI_Constants.d.ts.map +0 -1
  40. package/dist/ai-provider/common/HFI_ImageEdit.d.ts.map +0 -1
  41. package/dist/ai-provider/common/HFI_ImageGenerate.d.ts.map +0 -1
  42. package/dist/ai-provider/common/HFI_ImageValidation.d.ts.map +0 -1
  43. package/dist/ai-provider/common/HFI_JobRunFns.d.ts.map +0 -1
  44. package/dist/ai-provider/common/HFI_ModelInfo.d.ts.map +0 -1
  45. package/dist/ai-provider/common/HFI_ModelSchema.d.ts.map +0 -1
  46. package/dist/ai-provider/common/HFI_ModelSearch.d.ts.map +0 -1
  47. package/dist/ai-provider/common/HFI_TextEmbedding.d.ts.map +0 -1
  48. package/dist/ai-provider/common/HFI_TextGeneration.d.ts.map +0 -1
  49. package/dist/ai-provider/common/HFI_TextRewriter.d.ts.map +0 -1
  50. package/dist/ai-provider/common/HFI_TextSummary.d.ts.map +0 -1
  51. package/dist/ai-provider/common/HFI_ToolCalling.d.ts.map +0 -1
  52. package/dist/ai-provider/index.d.ts.map +0 -1
  53. package/dist/ai-provider/registerHfInference.d.ts.map +0 -1
  54. package/dist/ai-provider/registerHfInferenceInline.d.ts.map +0 -1
  55. package/dist/ai-provider/registerHfInferenceWorker.d.ts.map +0 -1
  56. package/dist/ai-provider/runtime.d.ts.map +0 -1
  57. package/dist/ai-provider-runtime.d.ts.map +0 -1
  58. package/dist/ai-provider-runtime.js.map +0 -27
  59. package/dist/ai-provider.d.ts.map +0 -1
  60. package/dist/ai-provider.js.map +0 -16
  61. /package/dist/{ai-provider → ai}/HfInferenceProvider.d.ts +0 -0
  62. /package/dist/{ai-provider → ai}/HfInferenceQueuedProvider.d.ts +0 -0
  63. /package/dist/{ai-provider → ai}/common/HFI_AspectRatio.d.ts +0 -0
  64. /package/dist/{ai-provider → ai}/common/HFI_Constants.d.ts +0 -0
  65. /package/dist/{ai-provider → ai}/common/HFI_ImageEdit.d.ts +0 -0
  66. /package/dist/{ai-provider → ai}/common/HFI_ImageGenerate.d.ts +0 -0
  67. /package/dist/{ai-provider → ai}/common/HFI_ImageValidation.d.ts +0 -0
  68. /package/dist/{ai-provider → ai}/common/HFI_JobRunFns.d.ts +0 -0
  69. /package/dist/{ai-provider → ai}/common/HFI_ModelInfo.d.ts +0 -0
  70. /package/dist/{ai-provider → ai}/common/HFI_ModelSchema.d.ts +0 -0
  71. /package/dist/{ai-provider → ai}/common/HFI_ModelSearch.d.ts +0 -0
  72. /package/dist/{ai-provider → ai}/common/HFI_TextEmbedding.d.ts +0 -0
  73. /package/dist/{ai-provider → ai}/common/HFI_TextGeneration.d.ts +0 -0
  74. /package/dist/{ai-provider → ai}/common/HFI_TextRewriter.d.ts +0 -0
  75. /package/dist/{ai-provider → ai}/common/HFI_TextSummary.d.ts +0 -0
  76. /package/dist/{ai-provider → ai}/common/HFI_ToolCalling.d.ts +0 -0
  77. /package/dist/{ai-provider → ai}/index.d.ts +0 -0
  78. /package/dist/{ai-provider → ai}/registerHfInference.d.ts +0 -0
  79. /package/dist/{ai-provider → ai}/registerHfInferenceInline.d.ts +0 -0
  80. /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
- export declare function loadHfInferenceSDK(): Promise<typeof import("@huggingface/inference")>;
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-provider-runtime` — not from the main `hf-inference` barrel.
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"}
@@ -3,5 +3,5 @@
3
3
  * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- export * from "./ai-provider/index";
7
- //# sourceMappingURL=ai-provider.d.ts.map
6
+ export * from "./ai/runtime";
7
+ //# sourceMappingURL=ai-runtime.d.ts.map
@@ -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
- // src/ai-provider/common/HFI_Client.ts
2
- import { loadProviderSdk, resolveApiKey } from "@workglow/ai-provider/common";
3
- var _sdk;
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
- if (!_sdk) {
6
- _sdk = await loadProviderSdk("@huggingface/inference", "Hugging Face Inference");
7
- }
8
- return _sdk;
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-provider/registerHfInferenceInline.ts
36
- import { registerProviderInline } from "@workglow/ai-provider/common";
44
+ // src/ai/registerHfInferenceInline.ts
45
+ import { registerProviderInline } from "@workglow/ai/provider-utils";
37
46
 
38
- // src/ai-provider/common/HFI_ModelSearch.ts
39
- import { mapHfModelResult, searchHfModels } from "@workglow/ai-provider/common";
40
- import { filterLabeledModelsByQuery } from "@workglow/ai-provider/common";
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-provider/common/HFI_Constants.ts
51
+ // src/ai/common/HFI_Constants.ts
43
52
  var HF_INFERENCE = "HF_INFERENCE";
44
53
 
45
- // src/ai-provider/common/HFI_ModelSearch.ts
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-provider/common/HFI_ImageEdit.ts
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-provider/common";
99
+ import { blobToImageValue, imageValueToPngBytes } from "@workglow/ai/provider-utils";
91
100
 
92
- // src/ai-provider/common/HFI_AspectRatio.ts
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-provider/common/HFI_ImageEdit.ts
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-provider/common/HFI_ImageGenerate.ts
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-provider/common";
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-provider/common/HFI_ModelInfo.ts
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-provider/common/HFI_TextEmbedding.ts
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-provider/common/HFI_TextGeneration.ts
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-provider/common/HFI_TextRewriter.ts
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-provider/common/HFI_TextSummary.ts
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-provider/common/HFI_ToolCalling.ts
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-provider/common";
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-provider/common/HFI_JobRunFns.ts
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-provider/HfInferenceQueuedProvider.ts
492
+ // src/ai/HfInferenceQueuedProvider.ts
484
493
  import { AiProvider } from "@workglow/ai";
485
- import { createCloudProviderClass } from "@workglow/ai-provider/common";
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-provider/common/HFI_ImageValidation.ts
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-provider/registerHfInferenceInline.ts
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-provider/registerHfInferenceWorker.ts
530
- import { registerProviderWorker } from "@workglow/ai-provider/common";
538
+ // src/ai/registerHfInferenceWorker.ts
539
+ import { registerProviderWorker } from "@workglow/ai/provider-utils";
531
540
 
532
- // src/ai-provider/HfInferenceProvider.ts
541
+ // src/ai/HfInferenceProvider.ts
533
542
  import { AiProvider as AiProvider2 } from "@workglow/ai/worker";
534
- import { createCloudProviderClass as createCloudProviderClass2 } from "@workglow/ai-provider/common";
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-provider/registerHfInferenceWorker.ts
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=6188FD36BF52E20964756E2164756E21
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
+ }
@@ -3,5 +3,5 @@
3
3
  * Copyright 2025 Steven Roussey <sroussey@gmail.com>
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- export * from "./ai-provider/runtime";
7
- //# sourceMappingURL=ai-provider-runtime.d.ts.map
6
+ export * from "./ai/index";
7
+ //# sourceMappingURL=ai.d.ts.map
@@ -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
- // src/ai-provider/common/HFI_AspectRatio.ts
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-provider/common/HFI_Constants.ts
37
+ // src/ai/common/HFI_Constants.ts
30
38
  var HF_INFERENCE = "HF_INFERENCE";
31
39
 
32
- // src/ai-provider/common/HFI_ImageValidation.ts
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-provider/common/HFI_ModelSchema.ts
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-provider/common/HFI_ModelSearch.ts
105
- import { mapHfModelResult, searchHfModels } from "@workglow/ai-provider/common";
106
- import { filterLabeledModelsByQuery } from "@workglow/ai-provider/common";
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-provider/registerHfInference.ts
149
- import { registerProviderWithWorker } from "@workglow/ai-provider/common";
156
+ // src/ai/registerHfInference.ts
157
+ import { registerProviderWithWorker } from "@workglow/ai/provider-utils";
150
158
 
151
- // src/ai-provider/HfInferenceQueuedProvider.ts
159
+ // src/ai/HfInferenceQueuedProvider.ts
152
160
  import { AiProvider } from "@workglow/ai";
153
- import { createCloudProviderClass } from "@workglow/ai-provider/common";
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-provider/registerHfInference.ts
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=FB3F46CF4A64FA2264756E2164756E21
198
+ //# debugId=4A06452CE7A9419E64756E2164756E21